github.com/koron/hk@v0.0.0-20150303213137-b8aeaa3ab34c/create.go (about)

     1  package main
     2  
     3  import (
     4  	"log"
     5  
     6  	"github.com/heroku/hk/Godeps/_workspace/src/github.com/bgentry/heroku-go"
     7  )
     8  
     9  var cmdCreate = &Command{
    10  	Run:      runCreate,
    11  	Usage:    "create [-r <region>] [-o <org>] [--http-git] [<name>]",
    12  	Category: "app",
    13  	Short:    "create an app",
    14  	Long: `
    15  Create creates a new Heroku app. If <name> is not specified, the
    16  app is created with a random haiku name.
    17  
    18  Options:
    19  
    20      -r <region>  Heroku region to create app in
    21      -o <org>     name of Heroku organization to create app in
    22      <name>       optional name for the app
    23  
    24  Examples:
    25  
    26      $ hk create
    27      Created dodging-samurai-42.
    28  
    29      $ hk create -r eu myapp
    30      Created myapp.
    31  `,
    32  }
    33  
    34  var flagRegion string
    35  var flagOrgName string
    36  var flagHTTPGit bool
    37  
    38  func init() {
    39  	cmdCreate.Flag.StringVarP(&flagRegion, "region", "r", "", "region name")
    40  	cmdCreate.Flag.StringVarP(&flagOrgName, "org", "o", "", "organization name")
    41  	cmdCreate.Flag.BoolVar(&flagHTTPGit, "http-git", false, "use http git remote")
    42  }
    43  
    44  func runCreate(cmd *Command, args []string) {
    45  	appname := ""
    46  	if len(args) > 0 {
    47  		appname = args[0]
    48  	}
    49  
    50  	var opts heroku.OrganizationAppCreateOpts
    51  	if appname != "" {
    52  		opts.Name = &appname
    53  	}
    54  	if flagOrgName == "personal" { // "personal" means "no org"
    55  		personal := true
    56  		opts.Personal = &personal
    57  	} else if flagOrgName != "" {
    58  		opts.Organization = &flagOrgName
    59  	}
    60  	if flagRegion != "" {
    61  		opts.Region = &flagRegion
    62  	}
    63  
    64  	app, err := client.OrganizationAppCreate(&opts)
    65  	must(err)
    66  
    67  	addGitRemote(app, flagHTTPGit)
    68  
    69  	if app.Organization != nil {
    70  		log.Printf("Created %s in the %s org.", app.Name, app.Organization.Name)
    71  	} else {
    72  		log.Printf("Created %s.", app.Name)
    73  	}
    74  }