github.com/rendon/cf@v0.0.0-20220806233241-5cb5d3939c03/gen.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os/user" 7 "path/filepath" 8 9 log "github.com/Sirupsen/logrus" 10 "github.com/codegangsta/cli" 11 ) 12 13 func getCodeFromTemplate(ext string) (string, error) { 14 usr, err := user.Current() 15 if err != nil { 16 return "", err 17 } 18 settings, err := ReadKeyValueYamlFile(usr.HomeDir + "/.cf.yml") 19 if err != nil { 20 return "", err 21 } 22 23 var key = "template." + ext 24 template, ok := settings[key].(string) 25 if !ok { 26 return "", fmt.Errorf("Failed to get %q from setting file", key) 27 } 28 buf, err := ioutil.ReadFile(template) 29 if err != nil { 30 return "", err 31 } 32 33 return string(buf), nil 34 } 35 36 func gen(c *cli.Context) { 37 if len(c.Args()) != 1 { 38 cli.ShowCommandHelp(c, "gen") 39 return 40 } 41 var sourceFile = c.Args()[0] 42 if err := GenerateSampleSolution(sourceFile, ""); err != nil { 43 log.Fatalf("Failed to generate sample solution: %s", err) 44 } 45 46 // At this point we know sourceFile contains a valid extension 47 ext := filepath.Ext(sourceFile)[1:] 48 settings, err := ReadKeyValueYamlFile(".settings.yml") 49 if err != nil { 50 log.Printf("Failed to read settings file: %s\n", err) 51 settings = make(map[string]interface{}) 52 } 53 settings["lang"] = ext 54 settings["sourceFile"] = filepath.Base(sourceFile) 55 settingsFile := ".settings.yml" 56 if dir := filepath.Dir(sourceFile); dir != "" { 57 settingsFile = dir + "/" + settingsFile 58 } 59 if err = WriteKeyValueYamlFile(settingsFile, settings); err != nil { 60 log.Printf("Failed to write settings file: %s\n", err) 61 } 62 }