blob: 85cee6800670b9268aec69ae5e47a96ee7d68fe7 [file] [log] [blame]
package commands
import (
"errors"
"fmt"
"os"
"os/exec"
"github.com/spf13/cobra"
)
// sdkCmd represents the sdk command
var sdkCmd = &cobra.Command{
Use: "sdk",
Short: "work with the sdk",
}
var sdkInstallCmd = &cobra.Command{
Use: "install <component string:{docker,swift,iOS}>",
Short: "install artifacts",
Run: func(cmd *cobra.Command, args []string) {
var err error
if len(args) != 1 {
err := errors.New("Invalid component argument")
fmt.Println(err)
return
}
component := args[0]
switch component {
case "docker":
err = dockerInstall()
case "swift":
err = swiftInstall()
case "iOS":
err = iOSInstall()
default:
err = errors.New("Invalid component argument")
}
if err != nil {
fmt.Println(err)
return
}
},
}
func dockerInstall() error {
var err error
tarFile := "blackbox-0.1.0.tar.gz"
blackboxDir := "dockerSkeleton"
if _, err = os.Stat(tarFile); err == nil {
err = fmt.Errorf("The path %s already exists. Please deleted it and retry.", tarFile)
return err
}
if _, err = os.Stat(blackboxDir); err == nil {
err = fmt.Errorf("The path %s already exists. Please deleted it and retry.", blackboxDir)
return err
}
downloadCmd := exec.Command("wget", "--quiet", "--no-check-certificate", "https://whisk.sl.cloud9.ibm.com/"+tarFile)
if err = downloadCmd.Run(); err != nil {
err = errors.New("Download of docker skeleton failed")
return err
}
installCmd := exec.Command("tar", "pxf", tarFile)
if err = installCmd.Run(); err != nil {
err = errors.New("Could not install docker skeleton")
return err
}
rmCmd := exec.Command("rm", tarFile)
if err = rmCmd.Run(); err != nil {
// Don't really care...
}
fmt.Println("The docker skeleton is now installed at the current directory.")
return nil
}
func swiftInstall() error {
fmt.Println("swift SDK coming soon")
return nil
}
func iOSInstall() error {
var err error
zipFile := "WhiskIOSStarterApp.zip"
if _, err = os.Stat(zipFile); err == nil {
err = fmt.Errorf("The path %s already exists. Please delete it and try again", zipFile)
return err
}
url := fmt.Sprintf("https://%s/%s", Properties.APIHost, zipFile)
downloadCmd := exec.Command("wget", "--quiet", "--no-check-certificate", url)
if err = downloadCmd.Run(); err != nil {
err = errors.New("Download of iOS Whisk starter app failed.")
return err
}
fmt.Printf("Downloaded iOS whisk starter app. Unzip %s and open the project in Xcode", zipFile)
return nil
}
func init() {
sdkCmd.AddCommand(sdkInstallCmd)
}