Skip to content

Commit

Permalink
feat: [MER-2339] add av auth status (#145)
Browse files Browse the repository at this point in the history
  • Loading branch information
doratzeng committed Jun 2, 2023
1 parent 98dfc39 commit 5e61a09
Show file tree
Hide file tree
Showing 7 changed files with 107 additions and 4 deletions.
16 changes: 16 additions & 0 deletions cmd/av/auth.go
@@ -0,0 +1,16 @@
package main

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

var authCmd = &cobra.Command{
Use: "auth",
Short: "manage authentication",
}

func init() {
authCmd.AddCommand(
authStatusCmd,
)
}
47 changes: 47 additions & 0 deletions cmd/av/auth_status.go
@@ -0,0 +1,47 @@
package main

import (
"context"
"fmt"
"os"

"github.com/aviator-co/av/internal/actions"
"github.com/aviator-co/av/internal/avgql"
"github.com/aviator-co/av/internal/utils/colors"
"github.com/shurcooL/graphql"
"github.com/spf13/cobra"
)

var authStatusCmd = &cobra.Command{
Use: "status",
Short: "check auth status",
SilenceUsage: true,
Args: cobra.NoArgs,
RunE: func(cmd *cobra.Command, args []string) error {
client := avgql.NewClient()

var query struct {
Viewer struct {
Email graphql.String
}
}

err := client.Query(context.Background(), &query, nil)
if err != nil {
return err
}

if query.Viewer.Email == "" {
_, _ = fmt.Fprint(
os.Stderr,
colors.Failure(
"You are not logged in. Please verify that your API token is correct.\n",
),
)
return actions.ErrExitSilently{ExitCode: 1}
}

_, _ = fmt.Fprint(os.Stderr, "Logged in as ", colors.UserInput(query.Viewer.Email), ".\n")
return nil
},
}
1 change: 1 addition & 0 deletions cmd/av/main.go
Expand Up @@ -92,6 +92,7 @@ func init() {
prCmd,
stackCmd,
versionCmd,
authCmd,
)
}

Expand Down
8 changes: 4 additions & 4 deletions go.mod
Expand Up @@ -151,7 +151,7 @@ require (
github.com/sashamelentyev/usestdlibvars v1.23.0 // indirect
github.com/securego/gosec/v2 v2.15.0 // indirect
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect
github.com/shurcooL/graphql v0.0.0-20200928012149-18c5c3165e3a // indirect
github.com/shurcooL/graphql v0.0.0-20220606043923-3cf50f8a0a29 // indirect
github.com/sivchari/containedctx v1.0.3 // indirect
github.com/sivchari/nosnakecase v1.7.0 // indirect
github.com/sivchari/tenv v1.7.1 // indirect
Expand Down Expand Up @@ -183,10 +183,10 @@ require (
go.uber.org/zap v1.24.0 // indirect
golang.org/x/crypto v0.8.0 // indirect
golang.org/x/exp/typeparams v0.0.0-20230321023759-10a507213a29 // indirect
golang.org/x/net v0.9.0 // indirect
golang.org/x/net v0.10.0 // indirect
golang.org/x/sync v0.1.0 // indirect
golang.org/x/sys v0.7.0 // indirect
golang.org/x/term v0.7.0 // indirect
golang.org/x/sys v0.8.0 // indirect
golang.org/x/term v0.8.0 // indirect
golang.org/x/text v0.9.0 // indirect
golang.org/x/tools v0.8.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
Expand Down
8 changes: 8 additions & 0 deletions go.sum
Expand Up @@ -488,6 +488,8 @@ github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxr
github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
github.com/shurcooL/graphql v0.0.0-20200928012149-18c5c3165e3a h1:KikTa6HtAK8cS1qjvUvvq4QO21QnwC+EfvB+OAuZ/ZU=
github.com/shurcooL/graphql v0.0.0-20200928012149-18c5c3165e3a/go.mod h1:AuYgA5Kyo4c7HfUmvRGs/6rGlMMV/6B1bVnB9JxJEEg=
github.com/shurcooL/graphql v0.0.0-20220606043923-3cf50f8a0a29 h1:B1PEwpArrNp4dkQrfxh/abbBAOZBVp0ds+fBEOUOqOc=
github.com/shurcooL/graphql v0.0.0-20220606043923-3cf50f8a0a29/go.mod h1:AuYgA5Kyo4c7HfUmvRGs/6rGlMMV/6B1bVnB9JxJEEg=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
Expand Down Expand Up @@ -698,6 +700,8 @@ golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM=
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
Expand Down Expand Up @@ -786,6 +790,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
Expand All @@ -795,6 +801,8 @@ golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ=
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
Expand Down
22 changes: 22 additions & 0 deletions internal/avgql/client.go
@@ -0,0 +1,22 @@
package avgql

import (
"context"
"os"

"github.com/aviator-co/av/internal/config"
"github.com/shurcooL/graphql"
"golang.org/x/oauth2"
)

func NewClient() *graphql.Client {
src := oauth2.StaticTokenSource(
&oauth2.Token{AccessToken: config.Av.Aviator.APIToken},
)
httpClient := oauth2.NewClient(context.Background(), src)
apiURL := os.Getenv("AV_GRAPHQL_URL")
if apiURL == "" {
apiURL = "https://api.aviator.co/graphql"
}
return graphql.NewClient(apiURL, httpClient)
}
9 changes: 9 additions & 0 deletions internal/config/config.go
Expand Up @@ -25,9 +25,14 @@ type PullRequest struct {
RebaseWithDraft *bool
}

type Aviator struct {
APIToken string
}

var Av = struct {
PullRequest PullRequest
GitHub GitHub
Aviator Aviator
}{
PullRequest: PullRequest{
OpenBrowser: true,
Expand Down Expand Up @@ -88,4 +93,8 @@ func loadFromEnv() {
} else if githubToken := os.Getenv("GITHUB_TOKEN"); githubToken != "" {
Av.GitHub.Token = githubToken
}

if apiToken := os.Getenv("AV_API_TOKEN"); apiToken != "" {
Av.Aviator.APIToken = apiToken
}
}

0 comments on commit 5e61a09

Please sign in to comment.