// Prompts for input and creates a new loader entry through the API func loaderCreator(cli client.Client) (err error) { defer func() { if e := recover(); e != nil { err = fmt.Errorf("loaderCreator() -> %v", e) } }() var newle mig.LoaderEntry fmt.Println("Entering loader creation mode.\nPlease provide the name" + " of the new entry") newle.Name, err = readline.String("name> ") if err != nil { panic(err) } if len(newle.Name) < 3 { panic("input name too short") } fmt.Printf("Name: '%s'\n", newle.Name) fmt.Println("Generating loader prefix...") newle.Prefix = mig.GenerateLoaderPrefix() fmt.Println("Generating loader key...") newle.Key = mig.GenerateLoaderKey() // Validate the new loader entry before sending it to the API err = newle.Validate() if err != nil { panic(err) } jsonle, err := json.MarshalIndent(newle, "", " ") if err != nil { panic(err) } fmt.Printf("%s\n", jsonle) fmt.Printf("Loader key including prefix to supply to client will be %q\n", newle.Prefix+newle.Key) input, err := readline.String("create loader entry? (y/n)> ") if err != nil { panic(err) } if input != "y" { fmt.Println("abort") return } err = cli.PostNewLoader(newle) if err != nil { panic(err) } fmt.Println("New entry successfully created but is disabled") return }