{"_id":"@boze46/dirate","name":"@boze46/dirate","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@boze46/dirate","version":"0.1.0","description":"CLI tool to manage Linux user-dirs based on a KDL layout.","type":"module","license":"MIT","bin":{"dirate":"src/index.ts"},"scripts":{"start":"bun run src/index.ts","lint":"bun run typecheck","typecheck":"bunx --bun tsc --noEmit"},"packageManager":"bun@1.3.3","engines":{"bun":">=1.3.3"},"devDependencies":{"bun-types":"^1.3.3","typescript":"^5.9.3","@types/bun":"latest"},"module":"src/index.ts","publishConfig":{"access":"public"},"dependencies":{"colorette":"^2.0.20","commander":"^14.0.2","kdljs":"^0.3.0"},"gitHead":"e4d36373b2dbb3d0e8dabcc8751ab4f8b79ff876","_id":"@boze46/dirate@0.1.0","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-hOWzEDdyPoFI2113hk4pd6HpOLFRbp8iYnwO23e3aC/i0FEx0n0t17ZWw7apOSXeqKNaNcTYHWP/Gf8UXHvv9A==","shasum":"e1994aa13ff15a0df0ea9fd76ff3e05f7615d7a3","tarball":"https://registry.npmjs.org/@boze46/dirate/-/dirate-0.1.0.tgz","fileCount":12,"unpackedSize":31276,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDiOkSdionyg+2jgpeMWBuLngjEDbspXMf/woT/5rUxDQIgY7erSXcwdroK66uCMLfXuearWksVsQQEp/cc9wH03RU="}]},"_npmUser":{"name":"boze46","email":"boze3141@gmail.com"},"directories":{},"maintainers":[{"name":"boze46","email":"boze3141@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dirate_0.1.0_1764211447704_0.5751910149769559"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-27T02:44:07.640Z","0.1.0":"2025-11-27T02:44:07.870Z","modified":"2025-11-27T02:44:08.123Z"},"maintainers":[{"name":"boze46","email":"boze3141@gmail.com"}],"description":"CLI tool to manage Linux user-dirs based on a KDL layout.","license":"MIT","readme":"## Dirate\n\nDirate = dir + curate：Bun 驱动的交互式 CLI，可根据 `dirs.kdl`（兼容旧版 `folder.kdl`）描述同步与整理 Linux XDG user-dirs 及自定义目录结构。\n\n使用 Bun/TypeScript 编写的交互式工具，可根据 `dirs.kdl` 描述同步 Linux XDG user-dirs 及自定义目录结构。\n\n### 安装\n\nDirate 依赖 Bun >= 1.3.3，可直接通过 `bunx` 试用，或全局安装：\n\n```bash\nbunx @boze46/dirate --help\n# 或全局安装后直接使用\nnpm install -g @boze46/dirate\ndirate --help\n```\n\n> 即便通过 npm 安装，CLI 仍通过 `#!/usr/bin/env bun` 启动，需确保本地已安装 Bun（参考 <https://bun.sh/> 安装指南）。\n\n### 运行方式\n\n```bash\nbun install\nbun run src/index.ts help             # 默认输出帮助\nbun run src/index.ts init             # 在 ~/.config/dirate 生成模板 dirs.kdl\nbun run src/index.ts sync \\\n  --dirs ~/.config/dirate/dirs.kdl \\\n  --config ~/.config/user-dirs.dirs\nbun run src/index.ts version\n```\n\n参数说明：\n\n- `--dirs`: KDL 布局文件路径，默认按顺序查找 `$XDG_CONFIG_HOME/dirate/dirs.kdl`、`./dirs.kdl`、`./folder.kdl`。\n- `--config`: `user-dirs.dirs` 文件路径，默认 `$XDG_CONFIG_HOME/user-dirs.dirs`（或 `~/.config/user-dirs.dirs`）。\n- `--dry-run`: 仅输出计划与提示，不执行任何写操作。\n- `--backup-dir`: 自定义备份根目录（默认 `$HOME/.bak`）。\n- `--yes/-y`、`--no/-n`: 无交互模式，分别全选同意/拒绝（不可同时指定）。\n- 子命令：`help`（默认）、`init`、`sync`、`version`。\n- 环境变量等价项：`DIRATE_DIRS_PATH`、`DIRATE_CONFIG_PATH`、`DIRATE_BACKUP_DIR`、`DIRATE_DRY_RUN`、`DIRATE_YES`、`DIRATE_NO`。\n- `init`: 生成一份带注释的 `dirs.kdl` 模板，便于开始使用。\n\n### 功能特性\n\n1. **KDL 布局解析**：`home { ... }` 树定义目录层级；user-dirs（desktop/download/...）可使用 `\"新名称\"` 重命名并支持嵌套。\n2. **迁移与备份**：对 8 个固定 XDG 目录生成迁移计划，逐步确认；目标存在且非空时提供 *备份后替换*、*合并*、*删除*、*跳过* 选项。备份统一存储于 `$HOME/.bak/<timestamp>/...`。\n3. **配置同步**：迁移后写回 `user-dirs.dirs`，写入前自动备份；流程结束可选择执行 `xdg-user-dirs-update`。\n4. **自定义目录创建**：对非 user-dirs 节点统一 `mkdir -p`，已存在则跳过。\n5. **安全模式**：所有写操作均需确认；`--dry-run` 用于审阅计划。\n\n### 开发/测试\n\n项目依赖 Bun 1.3+，使用 Bun 作为唯一包管理与运行时。可参考 `user-dirs.dirs.sample` 与示例 `folder.kdl` 做 dry-run：\n\n```bash\nbun run src/index.ts --dry-run \\\n  --config ./user-dirs.dirs.sample \\\n  --kdl ./folder.kdl\n```\n\n类型检查：\n\n```bash\nbun run typecheck\n```\n\n### KDL 约定\n\n- 根节点必须为 `home`。\n- 8 个 XDG 目录以英文小写键名：`desktop, download, templates, publicshare, documents, music, pictures, videos`。\n- 需要重命名时使用字符串值：`music \"audio\"`；普通目录仅保留名称（可继续嵌套子节点）。\n","readmeFilename":"README.md","_rev":"1-5b5e517ebee4ba2171b47b61d44a1dbb"}