github.com/jchengjr77/canaveral@v1.0.1-0.20200715160102-ea9245d1a2fb/node/addNode.go (about) 1 package node 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os" 7 "os/exec" 8 9 "github.com/jchengjr77/canaveral/lib" 10 ) 11 12 // AddNodeProj launches a new node project. 13 // The main mechanism is similar to addProj (in root folder). 14 // However, npm init plays a large role in setup. 15 // ! untested 16 func AddNodeProj(projName string, wsPath string) (finalErr error) { 17 // defer a recover function that returns the thrown error 18 defer func() { 19 if r := recover(); r != nil { 20 finalErr = r.(error) 21 } 22 }() 23 // Get workspace path 24 ws, err := ioutil.ReadFile(wsPath) 25 lib.Check(err) 26 err = os.MkdirAll(string(ws)+"/"+projName, os.ModePerm) 27 lib.Check(err) 28 // Navigate to canaveral workspace 29 err = os.Chdir(string(ws) + "/" + projName) 30 lib.Check(err) 31 cmd := exec.Command("npm", "init", "-y") 32 // set correct pipes 33 cmd.Stdout = os.Stdout 34 cmd.Stderr = os.Stderr 35 err = cmd.Run() 36 lib.Check(err) 37 fmt.Printf("Added Node Project %s to workspace %s\n", projName, string(ws)) 38 return nil 39 }