From 9e1f81560b71bef27aec6409aa74845b1aaf31cb Mon Sep 17 00:00:00 2001 From: Luke K Date: Thu, 9 Apr 2020 16:23:39 +0000 Subject: [PATCH] enable stack short-names (aliases) --- appsody/initializer.go | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/appsody/initializer.go b/appsody/initializer.go index a4953908a..2ddeabb1f 100644 --- a/appsody/initializer.go +++ b/appsody/initializer.go @@ -9,6 +9,14 @@ import ( "strings" ) +// NameMappings are short-name to repository full name mappings, +// enabling shorthand `faas create go` rather than `faas create go-ce-functions` +var stackShortNames = map[string]string{ + "go": "go-ce-functions", + "js": "node-ce-functions", + "java": "quarkus-ce-functions", +} + // Initializer of functions using the appsody binary. type Initializer struct { // Verbose logging flag. @@ -35,11 +43,24 @@ func (n *Initializer) Initialize(name, language, path string) error { // any dots with dashes. name = strings.ReplaceAll(name, ".", "-") + // Dereference stack short name + stackName, ok := stackShortNames[language] + if !ok { + languages := []string{} + for k, _ := range stackShortNames { + languages = append(languages, k) + } + + return errors.New(fmt.Sprintf("Unrecognized lanugage '%v'. Please choose one: %v.", language, strings.Join(languages, ", "))) + } + // set up the command, specifying a sanitized project name and connecting // standard output and error. - cmd := exec.Command("appsody", "init", stackName(language), "--project-name", name) + cmd := exec.Command("appsody", "init", "boson/"+stackName, "--project-name", name) cmd.Dir = path + fmt.Println(cmd) + // If verbose logging is enabled, echo appsody's chatty stdout. if n.Verbose { cmd.Stdout = os.Stdout @@ -57,7 +78,3 @@ func (n *Initializer) Initialize(name, language, path string) error { } return err } - -func stackName(language string) string { - return "boson/go" -}