diff --git a/go.mod b/go.mod index e0466a1..d77c916 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module gdrive-filereplacer go 1.16 require ( + github.com/andrew-d/go-termutil v0.0.0-20150726205930-009166a695a2 golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602 google.golang.org/api v0.43.0 diff --git a/go.sum b/go.sum index f56feba..8f23b48 100644 --- a/go.sum +++ b/go.sum @@ -38,6 +38,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/andrew-d/go-termutil v0.0.0-20150726205930-009166a695a2 h1:axBiC50cNZOs7ygH5BgQp4N+aYrZ2DNpWZ1KG3VOSOM= +github.com/andrew-d/go-termutil v0.0.0-20150726205930-009166a695a2/go.mod h1:jnzFpU88PccN/tPPhCpnNU8mZphvKxYM9lLNkd8e+os= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= diff --git a/main.go b/main.go index e5ece55..5d26e03 100644 --- a/main.go +++ b/main.go @@ -2,8 +2,10 @@ package main import ( "encoding/json" + "errors" "flag" "fmt" + "github.com/andrew-d/go-termutil" "golang.org/x/net/context" "golang.org/x/oauth2" "golang.org/x/oauth2/google" @@ -56,6 +58,9 @@ func (c *TokenCache) Token() (*oauth2.Token, error) { } } if err != nil { + if !termutil.Isatty(os.Stdin.Fd()) { + return nil, errors.New("cached token is invalid, and can't get token from web without stdin being a terminal") + } log.Print("Could not use cached token. Getting a new token from web...") tok, err = c.NewToken() if err != nil {