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  }