代码拉取完成,页面将自动刷新
package cmd
import (
"errors"
"fmt"
"os"
"path/filepath"
"strings"
"gitee.com/exi-red/maketools/util"
"github.com/otiai10/copy"
"github.com/spf13/cobra"
)
// 子命令 cp
const cp = "cp"
// 参数 要拷贝的目录
var cpFlagSources = Params{
Name: "sources",
Shorthand: "s",
Value: "",
Usage: "要拷贝的目录(支持多个),半角逗号分隔",
}
// 参数 目标目录
var cpFlagTarget = Params{
Name: "target",
Shorthand: "t",
Value: "",
Usage: "目标目录",
}
// 注册子命令 cp
var cpCmd = &cobra.Command{
Use: cp,
Short: `复制资源文件到指定目录`,
Example: fmt.Sprintf(
` %s %s --%s "./dir,/path/to/dir,..." --%s "./dir|/path/to/dir"`,
ROOTNAME,
cp,
cpFlagSources.Name,
cpFlagTarget.Name,
),
Run: func(cmd *cobra.Command, args []string) {
// 处理器执行
err := cpHanlder(cmd)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
},
}
// 初始化
func init() {
// 注册参数
StringP(cpCmd, cpFlagSources)
StringP(cpCmd, cpFlagTarget)
// 添加到主命令
rootCmd.AddCommand(cpCmd)
}
// 复制资源处理器
func cpHanlder(cmd *cobra.Command) error {
// 源目录
source, _ := cmd.Flags().GetString(cpFlagSources.Name)
if source == "" {
return errors.New("source directory not specified")
}
// 目标目录
target, _ := cmd.Flags().GetString(cpFlagTarget.Name)
if target == "" {
return errors.New("target directory not specified")
}
// 解析源目录
sources := strings.Split(source, ",")
sourcesPath := make([]string, 0)
for _, source := range sources {
source = util.PathFormat(source)
// 路径不存在
_, err := os.Stat(source)
if os.IsNotExist(err) {
continue
}
if source != "" {
sourcesPath = append(sourcesPath, source)
}
}
// 解析目标目录
target = util.PathFormat(target)
for _, src := range sources {
// 在目标目录下创建与源目录同名的子目录
dst := filepath.Join(target, filepath.Base(src))
err := copy.Copy(src, dst)
if err != nil {
return err
}
}
return nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。