Created
November 28, 2016 04:20
-
-
Save ctaggart/341b2917bc9a7dd9afb524e3ba4bd36c to your computer and use it in GitHub Desktop.
Pass Google Application Default Credentials to Docker
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"context" | |
"fmt" | |
"os" | |
"golang.org/x/oauth2/google" | |
storage "google.golang.org/api/storage/v1" | |
kingpin "gopkg.in/alecthomas/kingpin.v2" | |
) | |
func newStorageClient(scope string) (*storage.Service, error) { | |
dc, err := google.DefaultClient(context.Background(), scope) | |
if err != nil { | |
return nil, err | |
} | |
gs, err := storage.New(dc) | |
if err != nil { | |
return nil, err | |
} | |
return gs, nil | |
} | |
func printBuckets(gs *storage.Service, project string) error { | |
res, err := gs.Buckets.List(project).Do() | |
if err != nil { | |
return err | |
} | |
for _, item := range res.Items { | |
fmt.Println(item.Id) | |
} | |
return nil | |
} | |
var ( | |
gsutil = kingpin.New("gsutil", "Google Storage utility app") | |
ls = gsutil.Command("ls", "list the buckets") | |
lsProject = ls.Flag("project", "Google Cloud project").Required().Short('p').String() | |
) | |
func main() { | |
switch kingpin.MustParse(gsutil.Parse(os.Args[1:])) { | |
case ls.FullCommand(): | |
gs, err := newStorageClient(storage.DevstorageReadOnlyScope) | |
if err != nil { | |
panic(err) | |
} | |
printBuckets(gs, *lsProject) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment