40 lines
873 B
Go
40 lines
873 B
Go
|
// Copyright 2011-2017 visualfc <visualfc@gmail.com>. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
package terminal
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
"os/exec"
|
||
|
|
||
|
"github.com/visualfc/gotools/command"
|
||
|
)
|
||
|
|
||
|
var Command = &command.Command{
|
||
|
Run: runTerminal,
|
||
|
UsageLine: "terminal [program_name arguments...]",
|
||
|
Short: "terminal [program]",
|
||
|
Long: `terminal program and arguments`,
|
||
|
CustomFlags: true,
|
||
|
}
|
||
|
|
||
|
func runTerminal(cmd *command.Command, args []string) (err error) {
|
||
|
var c *exec.Cmd
|
||
|
if len(args) >= 1 {
|
||
|
var carg []string
|
||
|
if len(args) >= 2 {
|
||
|
carg = append(carg, args[1:]...)
|
||
|
}
|
||
|
c = exec.Command(args[0], carg...)
|
||
|
} else {
|
||
|
shellCmd, shellArgs := GetShell()
|
||
|
c = exec.Command(shellCmd, shellArgs...)
|
||
|
}
|
||
|
if c == nil {
|
||
|
return os.ErrInvalid
|
||
|
}
|
||
|
err = Execute(c)
|
||
|
|
||
|
return
|
||
|
}
|