feat: 新增 disk usage 内置命令(跨平台 du 等价)

- 注册表新增 Variant.Builtin 内置动作,与 Argv 互斥并参与平台匹配
- disk.usage 支持位置参数与 --path/--path=,输出按大小降序并带合计
- Unix 用设备号实现 -x 不跨文件系统,Windows 降级为不跟随 reparse point
- list/help/explain 支持展示内置动作,补充单元与 CLI 测试、README
This commit is contained in:
2026-10-31 13:11:24 +08:00
parent 7d9852958f
commit 84f7361396
12 changed files with 672 additions and 9 deletions
+17 -2
View File
@@ -42,6 +42,10 @@ func (p Plan) Argv() []string {
// Display renders the command line the plan would run.
func (p Plan) Display() string {
if p.Result.Variant.Builtin != "" {
parts := append([]string{"(内置)", p.Result.Variant.Builtin}, p.ExtraArgs...)
return strings.Join(parts, " ")
}
argv := p.Argv()
if p.Result.Variant.Shell {
flag := "-c"
@@ -61,9 +65,12 @@ func (p Plan) Explain(w io.Writer) {
variant := p.Result.Variant
fmt.Fprintf(w, "将执行: %s\n", p.Display())
fmt.Fprintf(w, "平台: %s\n", resolve.DescribeInfo(p.Result.Info))
if variant.Shell {
switch {
case variant.Builtin != "":
fmt.Fprintf(w, "方式: 内置实现(%s,不启动外部进程)\n", variant.Builtin)
case variant.Shell:
fmt.Fprintf(w, "方式: shell (%s)\n", shellName())
} else {
default:
fmt.Fprintf(w, "方式: 直接执行\n")
}
note := variant.Note
@@ -94,6 +101,14 @@ func (p Plan) Run(ctx context.Context, opts Options) error {
return nil
}
if variant := p.Result.Variant; variant.Builtin != "" {
fn, ok := LookupBuiltin(variant.Builtin)
if !ok {
return fmt.Errorf("未注册的内置动作 %q", variant.Builtin)
}
return fn(ctx, BuiltinRequest{Args: p.ExtraArgs, Stdout: opts.Stdout, Stderr: opts.Stderr})
}
name, args := p.command()
cmd := exec.CommandContext(ctx, name, args...)
cmd.Stdin = opts.Stdin