123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // Copyright 2015 Google Inc. All rights reserved.
- // Use of this source code is governed by the Apache 2.0
- // license that can be found in the LICENSE file.
- // Program aedeploy assists with deploying App Engine "flexible environment" Go apps to production.
- // A temporary directory is created; the app, its subdirectories, and all its
- // dependencies from $GOPATH are copied into the directory; then the app
- // is deployed to production with the provided command.
- //
- // The app must be in "package main".
- //
- // This command must be issued from within the root directory of the app
- // (where the app.yaml file is located).
- package main
- import (
- "flag"
- "fmt"
- "log"
- "os"
- "os/exec"
- "strings"
- )
- func usage() {
- fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0])
- fmt.Fprintf(os.Stderr, "\t%s gcloud --verbosity debug app deploy --version myversion ./app.yaml\tDeploy app to production\n", os.Args[0])
- }
- var verbose bool
- // vlogf logs to stderr if the "-v" flag is provided.
- func vlogf(f string, v ...interface{}) {
- if !verbose {
- return
- }
- log.Printf("[aedeploy] "+f, v...)
- }
- func main() {
- flag.BoolVar(&verbose, "v", false, "Verbose logging.")
- flag.Usage = usage
- flag.Parse()
- if flag.NArg() < 1 {
- usage()
- os.Exit(1)
- }
- notice := func() {
- fmt.Fprintln(os.Stderr, `NOTICE: aedeploy is deprecated. Just use "gcloud app deploy".`)
- }
- notice()
- if err := deploy(); err != nil {
- fmt.Fprintf(os.Stderr, os.Args[0]+": Error: %v\n", err)
- notice()
- fmt.Fprintln(os.Stderr, `You might need to update gcloud. Run "gcloud components update".`)
- os.Exit(1)
- }
- notice() // Make sure they see it at the end.
- }
- // deploy calls the provided command to deploy the app from the temporary directory.
- func deploy() error {
- vlogf("Running command %v", flag.Args())
- cmd := exec.Command(flag.Arg(0), flag.Args()[1:]...)
- cmd.Stdin, cmd.Stdout, cmd.Stderr = os.Stdin, os.Stdout, os.Stderr
- if err := cmd.Run(); err != nil {
- return fmt.Errorf("unable to run %q: %v", strings.Join(flag.Args(), " "), err)
- }
- return nil
- }
|