You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
813 B
43 lines
813 B
package shell
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
func init() {
|
|
Commands = append(Commands, &commandSleep{})
|
|
}
|
|
|
|
// =========== Sleep ==============
|
|
type commandSleep struct {
|
|
}
|
|
|
|
func (c *commandSleep) Name() string {
|
|
return "sleep"
|
|
}
|
|
|
|
func (c *commandSleep) Help() string {
|
|
return `sleep for N seconds (useful to simulate long running jobs)
|
|
|
|
sleep 5
|
|
`
|
|
}
|
|
|
|
func (c *commandSleep) HasTag(CommandTag) bool {
|
|
return false
|
|
}
|
|
|
|
func (c *commandSleep) Do(args []string, _ *CommandEnv, _ io.Writer) error {
|
|
if len(args) == 0 {
|
|
return fmt.Errorf("sleep requires a seconds argument")
|
|
}
|
|
seconds, err := strconv.Atoi(args[0])
|
|
if err != nil || seconds <= 0 {
|
|
return fmt.Errorf("sleep duration must be a positive integer, got %q", args[0])
|
|
}
|
|
time.Sleep(time.Duration(seconds) * time.Second)
|
|
return nil
|
|
}
|