github.com/jchengjr77/canaveral@v1.0.1-0.20200715160102-ea9245d1a2fb/vscodesupport/openCode.go (about) 1 /*Package vscodesupport contains: 2 - functionality for opening canaveral projects in vscode 3 */ 4 package vscodesupport 5 6 import ( 7 "errors" 8 "fmt" 9 "io/ioutil" 10 "os" 11 "os/exec" 12 13 "github.com/jchengjr77/canaveral/lib" 14 ) 15 16 // OpenCode will take in a project name, and open it in vscode. 17 // If such a project doesn't exist, it will return an error. 18 // * tested 19 func OpenCode(projName string, configPath string) (finalErr error) { 20 // defer a recover function that returns the thrown error 21 defer func() { 22 if r := recover(); r != nil { 23 finalErr = r.(error) 24 } 25 }() 26 if projName == "" { 27 fmt.Println("Please provide a project name.") 28 fmt.Println("(For more info, 'canaveral --help')") 29 return errors.New("No project name specified") 30 } else if !lib.FileExists(configPath) { 31 fmt.Println("No canaveral workspace set. Please specify a workspace.") 32 fmt.Println( 33 "Canaveral needs to know where to look for your projects.") 34 fmt.Println("(For help, type 'canaveral --help')") 35 return errors.New("No canaveral workspace set") 36 } 37 fmt.Printf("Attempting to open Project '%s'\n", projName) 38 ws, err := ioutil.ReadFile(configPath) 39 lib.Check(err) 40 if !lib.DirExists(string(ws) + "/" + projName) { 41 return errors.New("Project '" + projName + "' not found") 42 } 43 err = os.Chdir(string(ws) + "/" + projName) 44 lib.Check(err) 45 openVSCode := exec.Command("code", ".") 46 // set correct pipes 47 openVSCode.Stdout = os.Stdout 48 openVSCode.Stderr = os.Stderr 49 err = openVSCode.Run() 50 lib.Check(err) 51 return nil 52 }