Skip to content

Commit

Permalink
CLI 'Code improvements that will help with code gen' (#234)
Browse files Browse the repository at this point in the history
  • Loading branch information
Taimoor Ahmad authored Jan 12, 2024
1 parent be89944 commit f12431d
Show file tree
Hide file tree
Showing 10 changed files with 57 additions and 119 deletions.
3 changes: 3 additions & 0 deletions .changes/unreleased/Removed-20240110-153317.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
kind: Removed
body: Remove commands that are already marked as deprecated at this point
time: 2024-01-10T15:33:17.984215-05:00
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ src/dist
go.work*
**coverage.txt
src/*.yaml

.vscode/
25 changes: 23 additions & 2 deletions src/cmd/example.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package cmd

import (
"encoding/json"

"github.com/opslevel/opslevel-go/v2023"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"gopkg.in/yaml.v2"
)

var exampleIsJson, exampleIsYaml bool
Expand All @@ -22,11 +25,29 @@ func getExample[T any]() string {
}

func getJson[T any]() string {
return opslevel.JsonOf[T](opslevel.NewExampleOf[T]())
var (
out []byte
err error
)
t := opslevel.NewExampleOf[T]()
out, err = json.Marshal(t)
if err != nil {
panic("unexpected error getting example json")
}
return string(out)
}

func getYaml[T any]() string {
return opslevel.YamlOf[T](opslevel.NewExampleOf[T]())
var (
out []byte
err error
)
t := opslevel.NewExampleOf[T]()
out, err = yaml.Marshal(t)
if err != nil {
panic("unexpected error getting example yaml")
}
return string(out)
}

func init() {
Expand Down
2 changes: 1 addition & 1 deletion src/cmd/scorecard.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ var deleteScorecardCmd = &cobra.Command{
key := args[0]
deletedScorecardId, err := getClientGQL().DeleteScorecard(key)
cobra.CheckErr(err)
fmt.Printf("deleted scorecard: %s\n", deletedScorecardId)
fmt.Printf("deleted scorecard: %s\n", *deletedScorecardId)
},
}

Expand Down
46 changes: 1 addition & 45 deletions src/cmd/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package cmd
import (
"encoding/csv"
"encoding/json"
"errors"
"fmt"
"os"
"strings"
Expand Down Expand Up @@ -49,16 +48,6 @@ EOF`,
},
}

var createServiceTagCmd = &cobra.Command{
Use: "tag",
Short: "Create a service tag",
Long: `Create a service tag`,
Run: func(cmd *cobra.Command, args []string) {
err := errors.New("This command is deprecated! Please use \nopslevel create tag <args>")
cobra.CheckErr(err)
},
}

var getServiceCmd = &cobra.Command{
Use: "service ID|ALIAS",
Short: "Get details about a service",
Expand Down Expand Up @@ -86,16 +75,6 @@ var getServiceCmd = &cobra.Command{
},
}

var getServiceTagCmd = &cobra.Command{
Use: "tag",
Short: "Get a service's tag",
Long: `Get a service's tag`,
Run: func(cmd *cobra.Command, args []string) {
err := errors.New("This command is deprecated! Please use \nopslevel get tag <args>")
cobra.CheckErr(err)
},
}

var listServiceCmd = &cobra.Command{
Use: "service",
Aliases: []string{"services"},
Expand Down Expand Up @@ -151,31 +130,12 @@ var deleteServiceCmd = &cobra.Command{
ArgAliases: []string{"ID", "ALIAS"},
Run: func(cmd *cobra.Command, args []string) {
key := args[0]
var err error
if opslevel.IsID(key) {
err = getClientGQL().DeleteService(opslevel.ServiceDeleteInput{
Id: opslevel.NewID(key),
})
cobra.CheckErr(err)
} else {
err = getClientGQL().DeleteServiceWithAlias(key)
cobra.CheckErr(err)
}
err := getClientGQL().DeleteService(key)
cobra.CheckErr(err)
fmt.Printf("deleted '%s' service\n", key)
},
}

var deleteServiceTagCmd = &cobra.Command{
Use: "tag",
Short: "Delete a service's tag",
Long: `Delete a service's tag'`,
Run: func(cmd *cobra.Command, args []string) {
err := errors.New("This command is deprecated! Please use \nopslevel delete tag <args>")
cobra.CheckErr(err)
},
}

var importServicesCmd = &cobra.Command{
Use: "service",
Aliases: []string{"services"},
Expand Down Expand Up @@ -245,9 +205,5 @@ func init() {
updateCmd.AddCommand(updateServiceCmd)
deleteCmd.AddCommand(deleteServiceCmd)

createServiceCmd.AddCommand(createServiceTagCmd)
getServiceCmd.AddCommand(getServiceTagCmd)
deleteServiceCmd.AddCommand(deleteServiceTagCmd)

importCmd.AddCommand(importServicesCmd)
}
52 changes: 4 additions & 48 deletions src/cmd/team.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package cmd

import (
"encoding/json"
"errors"
"fmt"

"github.com/opslevel/opslevel-go/v2023"
Expand Down Expand Up @@ -77,7 +76,7 @@ var createMemberCmd = &cobra.Command{

userIdentifierInput := opslevel.NewUserIdentifier(email)
teamMembershipUserInput := opslevel.TeamMembershipUserInput{
User: &userIdentifierInput,
User: userIdentifierInput,
Role: opslevel.RefOf(role),
}
_, addErr := getClientGQL().AddMemberships(&team.TeamId, teamMembershipUserInput)
Expand Down Expand Up @@ -134,17 +133,6 @@ opslevel create contact --type=email my-team [email protected] "Mailing List"`,
},
}

var createTeamTagCmd = &cobra.Command{
Use: "tag",
Short: "Create a team tag",
Long: `Create a team tag`,
Deprecated: `Please use \nopslevel create tag <args>`,
Run: func(cmd *cobra.Command, args []string) {
err := errors.New("This command is deprecated! Please use \nopslevel create tag <args>")
cobra.CheckErr(err)
},
}

var updateTeamCmd = &cobra.Command{
Use: "team {ID|ALIAS}",
Short: "Update a team",
Expand Down Expand Up @@ -216,17 +204,6 @@ opslevel list team -o json | jq 'map((.Members.Nodes | map(.Email)))'
},
}

var getTeamTagCmd = &cobra.Command{
Use: "tag",
Short: "Get a team's tag",
Long: `Get a team's tag`,
Deprecated: `Please use \nopslevel get tag <args>`,
Run: func(cmd *cobra.Command, args []string) {
err := errors.New("This command is deprecated! Please use \nopslevel get tag <args>")
cobra.CheckErr(err)
},
}

var deleteTeamCmd = &cobra.Command{
Use: "team {ID|ALIAS}",
Short: "Delete a team",
Expand All @@ -237,13 +214,8 @@ opslevel delete team my-team
ArgAliases: []string{"ID", "ALIAS"},
Run: func(cmd *cobra.Command, args []string) {
key := args[0]
if opslevel.IsID(key) {
err := getClientGQL().DeleteTeam(opslevel.ID(key))
cobra.CheckErr(err)
} else {
err := getClientGQL().DeleteTeamWithAlias(key)
cobra.CheckErr(err)
}
err := getClientGQL().DeleteTeam(key)
cobra.CheckErr(err)
fmt.Printf("team '%s' deleted\n", key)
},
}
Expand All @@ -270,7 +242,7 @@ var deleteMemberCmd = &cobra.Command{

userIdentifierInput := opslevel.NewUserIdentifier(email)
teamMembershipUserInput := opslevel.TeamMembershipUserInput{
User: &userIdentifierInput,
User: userIdentifierInput,
}
_, removeErr := getClientGQL().RemoveMemberships(&team.TeamId, teamMembershipUserInput)
cobra.CheckErr(removeErr)
Expand All @@ -292,17 +264,6 @@ var deleteContactCmd = &cobra.Command{
},
}

var deleteTeamTagCmd = &cobra.Command{
Use: "tag",
Short: "Delete a team's tag",
Long: `Delete a team's tag`,
Deprecated: `Please use \nopslevel delete tag <args>`,
Run: func(cmd *cobra.Command, args []string) {
err := errors.New("This command is deprecated! Please use \nopslevel delete tag <args>")
cobra.CheckErr(err)
},
}

var importTeamsCmd = &cobra.Command{
Use: "team",
Aliases: []string{"teams"},
Expand Down Expand Up @@ -349,15 +310,10 @@ func init() {
listCmd.AddCommand(listTeamCmd)
importCmd.AddCommand(importTeamsCmd)

// Team Tag commands
createTeamCmd.AddCommand(createTeamTagCmd)
deleteTeamCmd.AddCommand(deleteTeamTagCmd)

// Team Membership commands
exampleCmd.AddCommand(exampleMemberCmd)
createCmd.AddCommand(createMemberCmd)
deleteCmd.AddCommand(deleteMemberCmd)
getTeamCmd.AddCommand(getTeamTagCmd)

// Team Contact commands
exampleCmd.AddCommand(exampleContactCmd)
Expand Down
2 changes: 1 addition & 1 deletion src/cmd/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ EOF
continue
}
newMembership := opslevel.TeamMembershipUserInput{
User: opslevel.RefOf(opslevel.NewUserIdentifier(email)),
User: opslevel.NewUserIdentifier(email),
Role: opslevel.RefOf(string(user.Role)),
}
_, err = getClientGQL().AddMemberships(&t.TeamId, newMembership)
Expand Down
12 changes: 6 additions & 6 deletions src/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ require (
github.com/spf13/pflag v1.0.5
github.com/spf13/viper v1.18.2
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa
gopkg.in/yaml.v2 v2.4.0
gopkg.in/yaml.v3 v3.0.1
)

Expand Down Expand Up @@ -51,19 +52,19 @@ require (
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-retryablehttp v0.7.5 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/hasura/go-graphql-client v0.10.1 // indirect
github.com/hasura/go-graphql-client v0.10.2 // indirect
github.com/imdario/mergo v0.3.15 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/itchyny/timefmt-go v0.1.5 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
github.com/kevinburke/ssh_config v1.2.0 // indirect
github.com/klauspost/compress v1.17.3 // indirect
github.com/leodido/go-urn v1.2.4 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/opslevel/moredefaults v0.0.0-20240112142637-078c8ff8ba9c // indirect
github.com/pelletier/go-toml/v2 v2.1.0 // indirect
github.com/pjbgf/sha1cd v0.3.0 // indirect
github.com/prometheus/client_golang v1.17.0 // indirect
Expand All @@ -90,16 +91,15 @@ require (
go.opentelemetry.io/otel/sdk v1.21.0 // indirect
go.opentelemetry.io/otel/trace v1.21.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.17.0 // indirect
golang.org/x/crypto v0.18.0 // indirect
golang.org/x/mod v0.14.0 // indirect
golang.org/x/net v0.19.0 // indirect
golang.org/x/sys v0.15.0 // indirect
golang.org/x/net v0.20.0 // indirect
golang.org/x/sys v0.16.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/tools v0.15.0 // indirect
google.golang.org/protobuf v1.31.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
nhooyr.io/websocket v1.8.10 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)
Expand Down
Loading

0 comments on commit f12431d

Please sign in to comment.