// Author: NiuJiuRu
// Email: niujiuru@qq.com

package shell

import (
	"errors"
	"time"
)

const (
	DefaultTimeout = 5 * time.Second ////// 执行命令的默认超时时间, 单位: 秒
)

var (
	ErrInvalidCommand      = errors.New("invalid command")
	ErrExecutorLostControl = errors.New("executor lost control of process")
)

type ExecuteParams struct {
	HostFingerprint string `json:"host_fingerprint,omitempty"` // 主机指纹
	Cmd             string `json:"cmd"`                        // 用户指令
	Timeout         int    `json:"timeout,omitempty"`          // 超时(秒)
	Dir             string `json:"-"`                          // 工作目录
}

type ExecuteResult struct {
	Stdout   string `json:"stdout"`    ////////////////////////// 标准输出
	Stderr   string `json:"stderr"`    ////////////////////////// 错误输出
	ExitCode int    `json:"exit_code"` ///////// 退出状态码: 0成功, 非0失败
	Cwd      string `json:"cwd"`       ////////////////////////// 当前目录
}
