Skip to content

Commit

Permalink
Snd CLI project structure (#2)
Browse files Browse the repository at this point in the history
  • Loading branch information
adelinag08 authored Feb 14, 2024
1 parent e91d44e commit 9f36837
Show file tree
Hide file tree
Showing 30 changed files with 830 additions and 0 deletions.
41 changes: 41 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Build

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]


jobs:
build:
name: Validate code
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Go 1.21
uses: actions/setup-go@v4
with:
go-version: '1.21'
- name: Verify dependencies
run: go mod verify
- name: Install dependencies
run: |
cd cmd/snd-cli; go get ./
- name: Run go vet
run: go vet ./...
- name: Build
run: go build -v ./...
- name: Lint
run: |
set -euxo pipefail
LINT_VERSION=1.54.1
curl -fsSL https://github.com/golangci/golangci-lint/releases/download/v${LINT_VERSION}/golangci-lint-${LINT_VERSION}-linux-amd64.tar.gz | \
tar xz --strip-components 1 --wildcards \*/golangci-lint
mkdir -p bin && mv golangci-lint bin/
bin/golangci-lint run --out-format=github-actions --timeout=3m
gofmt -d ./
- name: Test with the Go CLI
run: go test -race -vet=off ./...
135 changes: 135 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# IDEA
.idea/

# Packages
requirements.txt

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/
1 change: 1 addition & 0 deletions CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @SneaksAndData/platform-engineering
16 changes: 16 additions & 0 deletions cmd/snd-cli/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package main

import (
"fmt"
"os"
"snd-cli/pkg/cmd/root"
)

func main() {
rootCmd, _ := root.NewCmdRoot()
err := rootCmd.Execute()
if err != nil {
fmt.Println("Error: ", err)
os.Exit(1)
}
}
10 changes: 10 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
module snd-cli

go 1.21.5

require github.com/spf13/cobra v1.8.0

require (
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
)
10 changes: 10 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
34 changes: 34 additions & 0 deletions pkg/cmd/auth/auth.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package auth

import (
"fmt"
"github.com/spf13/cobra"
"snd-cli/pkg/cmd/util"
)

var env, provider string

func NewCmdAuth() *cobra.Command {
cmd := &cobra.Command{
Use: "login",
Short: "Get internal authorization token",
GroupID: "auth",
Args: cobra.ExactArgs(0),
RunE: func(cmd *cobra.Command, args []string) error {
return loginRun()
},
}

util.DisableAuthCheck(cmd)

cmd.PersistentFlags().StringVarP(&env, "env", "e", "test", "Target environment")
cmd.PersistentFlags().StringVarP(&provider, "auth-provider", "a", "azuread", "Specify the OAuth provider name")

return cmd
}

func loginRun() error {
fmt.Println("Login")
fmt.Printf(boxerBaseURL, env)
panic("Not implemented")
}
3 changes: 3 additions & 0 deletions pkg/cmd/auth/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package auth

const boxerBaseURL = "https://boxer.%s.sneaksanddata.com"
26 changes: 26 additions & 0 deletions pkg/cmd/claim/add.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package claim

import (
"fmt"
"github.com/spf13/cobra"
)

var ca []string

func NewCmdAddClaim() *cobra.Command {
cmd := &cobra.Command{
Use: "add",
Short: " Add a new claim to an existing user",
RunE: func(cmd *cobra.Command, args []string) error {
return addClaimRun()
},
}
cmd.Flags().StringSliceVarP(&ca, "claims", "c", []string{}, "Claims to add. e.g. snd add -c \"test1.test.sneaksanddata.com/.*:.*\" -c \"test2.test.sneaksanddata.com/.*:.*\"")
return cmd
}

func addClaimRun() error {
url := fmt.Sprintf(boxerClaimBaseURL, env)
fmt.Println(url)
panic("Not implemented")
}
28 changes: 28 additions & 0 deletions pkg/cmd/claim/claim.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// Package claim /*
package claim

import (
"github.com/spf13/cobra"
)

var env, authProvider, userId, claimProvider string

func NewCmdClaim() *cobra.Command {
cmd := &cobra.Command{
Use: "claim",
Short: "Manage claims",
GroupID: "claim",
}

cmd.AddCommand(NewCmdUser())
cmd.AddCommand(NewCmdAddClaim())
cmd.AddCommand(NewCmdGetClaim())
cmd.AddCommand(NewCmdRemoveClaim())

cmd.PersistentFlags().StringVarP(&env, "env", "e", "test", "Target environment")
cmd.PersistentFlags().StringVarP(&authProvider, "auth-provider", "a", "azuread", "Specify the OAuth provider name")
cmd.PersistentFlags().StringVarP(&userId, "user", "u", "", "Specify the user ID")
cmd.PersistentFlags().StringVarP(&claimProvider, "claims-provider", "p", "", "Specify the claim provider")

return cmd
}
3 changes: 3 additions & 0 deletions pkg/cmd/claim/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package claim

const boxerClaimBaseURL = "https://boxer-claim.%s.sneaksanddata.com"
25 changes: 25 additions & 0 deletions pkg/cmd/claim/get.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package claim

import (
"fmt"
"github.com/spf13/cobra"
)

func NewCmdGetClaim() *cobra.Command {
cmd := &cobra.Command{
Use: "get",
Short: "Retrieves claims assigned to an existing user",
RunE: func(cmd *cobra.Command, args []string) error {
return getClaimRun()
},
}

return cmd

}

func getClaimRun() error {
url := fmt.Sprintf(boxerClaimBaseURL, env)
fmt.Println(url)
panic("Not implemented")
}
27 changes: 27 additions & 0 deletions pkg/cmd/claim/remove.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package claim

import (
"fmt"
"github.com/spf13/cobra"
)

var cr []string

func NewCmdRemoveClaim() *cobra.Command {
cmd := &cobra.Command{
Use: "remove",
Short: "Removes a claim from an existing user",
RunE: func(cmd *cobra.Command, args []string) error {
return removeClaimRun()
},
}

cmd.Flags().StringSliceVarP(&cr, "claims", "c", []string{}, "Claims to add. e.g. snd add -c \"test1.test.sneaksanddata.com/.*:.*\" -c \"test2.test.sneaksanddata.com/.*:.*\"")
return cmd
}

func removeClaimRun() error {
url := fmt.Sprintf(boxerClaimBaseURL, env)
fmt.Println(url)
panic("Not implemented")
}
Loading

0 comments on commit 9f36837

Please sign in to comment.