本文整理匯總了Golang中github.com/getgauge/common.ExecuteCommand函數的典型用法代碼示例。如果您正苦於以下問題:Golang ExecuteCommand函數的具體用法?Golang ExecuteCommand怎麽用?Golang ExecuteCommand使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了ExecuteCommand函數的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: ExecuteInitHookForRunner
func ExecuteInitHookForRunner(language string) error {
if err := config.SetProjectRoot([]string{}); err != nil {
return err
}
runnerInfo, err := GetRunnerInfo(language)
if err != nil {
return err
}
command := []string{}
switch runtime.GOOS {
case "windows":
command = runnerInfo.Init.Windows
break
case "darwin":
command = runnerInfo.Init.Darwin
break
default:
command = runnerInfo.Init.Linux
break
}
languageJsonFilePath, err := common.GetLanguageJSONFilePath(language)
runnerDir := filepath.Dir(languageJsonFilePath)
cmd, err := common.ExecuteCommand(command, runnerDir, os.Stdout, os.Stderr)
if err != nil {
return err
}
return cmd.Wait()
}
示例2: StartPlugin
func StartPlugin(pd *pluginDescriptor, action string) (*plugin, error) {
command := []string{}
switch runtime.GOOS {
case "windows":
command = pd.Command.Windows
break
case "darwin":
command = pd.Command.Darwin
break
default:
command = pd.Command.Linux
break
}
if len(command) == 0 {
return nil, fmt.Errorf("Platform specific command not specified: %s.", runtime.GOOS)
}
cmd, err := common.ExecuteCommand(command, pd.pluginPath, reporter.Current(), reporter.Current())
if err != nil {
return nil, err
}
var mutex = &sync.Mutex{}
go func() {
pState, _ := cmd.Process.Wait()
mutex.Lock()
cmd.ProcessState = pState
mutex.Unlock()
}()
plugin := &plugin{pluginCmd: cmd, descriptor: pd, mutex: mutex}
return plugin, nil
}
示例3: StartPlugin
func StartPlugin(pd *pluginDescriptor, action string, wait bool) (*exec.Cmd, error) {
command := []string{}
switch runtime.GOOS {
case "windows":
command = pd.Command.Windows
break
case "darwin":
command = pd.Command.Darwin
break
default:
command = pd.Command.Linux
break
}
if len(command) == 0 {
return nil, fmt.Errorf("Platform specific command not specified: %s.", runtime.GOOS)
}
cmd, err := common.ExecuteCommand(command, pd.pluginPath, logger.Log, logger.Log)
if err != nil {
return nil, err
}
if wait {
return cmd, cmd.Wait()
} else {
go func() {
cmd.Wait()
}()
}
return cmd, nil
}
示例4: runInstallCommands
func runInstallCommands(installCommands platformSpecificCommand, workingDir string) error {
command := []string{}
switch runtime.GOOS {
case "windows":
command = installCommands.Windows
break
case "darwin":
command = installCommands.Darwin
break
default:
command = installCommands.Linux
break
}
if len(command) == 0 {
return nil
}
logger.Info("Running plugin install command => %s\n", command)
cmd, err := common.ExecuteCommand(command, workingDir, os.Stdout, os.Stderr)
if err != nil {
return err
}
return cmd.Wait()
}
示例5: initializeTemplate
func initializeTemplate(templateName string) error {
defer util.RemoveTempDir()
unzippedTemplate, err := util.DownloadAndUnzip(getTemplateURL(templateName))
if err != nil {
return err
}
wd := config.ProjectRoot
logger.Log.Info("Copying Gauge template %s to current directory ...", templateName)
filesAdded, err := common.MirrorDir(filepath.Join(unzippedTemplate, templateName), wd)
if err != nil {
return fmt.Errorf("Failed to copy Gauge template: %s", err.Error())
}
metadataFile := filepath.Join(wd, metadataFileName)
metadataContents, err := common.ReadFileContents(metadataFile)
if err != nil {
return fmt.Errorf("Failed to read file contents of %s: %s", metadataFile, err.Error())
}
metadata := &templateMetadata{}
err = json.Unmarshal([]byte(metadataContents), metadata)
if err != nil {
return err
}
if metadata.PostInstallCmd != "" {
cmd, err := common.ExecuteCommand([]string{metadata.PostInstallCmd}, wd, os.Stdout, os.Stderr)
cmd.Wait()
if err != nil {
for _, file := range filesAdded {
pathSegments := strings.Split(file, string(filepath.Separator))
util.Remove(filepath.Join(wd, pathSegments[0]))
}
return fmt.Errorf("Failed to run post install commands: %s", err.Error())
}
}
util.Remove(metadataFile)
return nil
}