@tinyrack/dotweave 0.39.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/bin/index.js +5 -0
  2. package/dist/application.d.ts +5 -0
  3. package/dist/application.d.ts.map +1 -0
  4. package/dist/application.js +86 -0
  5. package/dist/application.js.map +1 -0
  6. package/dist/cli/autocomplete.d.ts +7 -0
  7. package/dist/cli/autocomplete.d.ts.map +1 -0
  8. package/dist/cli/autocomplete.js +62 -0
  9. package/dist/cli/autocomplete.js.map +1 -0
  10. package/dist/cli/cd.d.ts +4 -0
  11. package/dist/cli/cd.d.ts.map +1 -0
  12. package/dist/cli/cd.js +23 -0
  13. package/dist/cli/cd.js.map +1 -0
  14. package/dist/cli/doctor.d.ts +4 -0
  15. package/dist/cli/doctor.d.ts.map +1 -0
  16. package/dist/cli/doctor.js +92 -0
  17. package/dist/cli/doctor.js.map +1 -0
  18. package/dist/cli/index.d.ts +4 -0
  19. package/dist/cli/index.d.ts.map +1 -0
  20. package/dist/cli/index.js +22 -0
  21. package/dist/cli/index.js.map +1 -0
  22. package/dist/cli/init.d.ts +4 -0
  23. package/dist/cli/init.d.ts.map +1 -0
  24. package/dist/cli/init.js +110 -0
  25. package/dist/cli/init.js.map +1 -0
  26. package/dist/cli/profile/index.d.ts +3 -0
  27. package/dist/cli/profile/index.d.ts.map +1 -0
  28. package/dist/cli/profile/index.js +15 -0
  29. package/dist/cli/profile/index.js.map +1 -0
  30. package/dist/cli/profile/list.d.ts +4 -0
  31. package/dist/cli/profile/list.d.ts.map +1 -0
  32. package/dist/cli/profile/list.js +42 -0
  33. package/dist/cli/profile/list.js.map +1 -0
  34. package/dist/cli/profile/use.d.ts +4 -0
  35. package/dist/cli/profile/use.d.ts.map +1 -0
  36. package/dist/cli/profile/use.js +49 -0
  37. package/dist/cli/profile/use.js.map +1 -0
  38. package/dist/cli/pull.d.ts +4 -0
  39. package/dist/cli/pull.d.ts.map +1 -0
  40. package/dist/cli/pull.js +107 -0
  41. package/dist/cli/pull.js.map +1 -0
  42. package/dist/cli/push.d.ts +4 -0
  43. package/dist/cli/push.d.ts.map +1 -0
  44. package/dist/cli/push.js +49 -0
  45. package/dist/cli/push.js.map +1 -0
  46. package/dist/cli/root-commands.d.ts +13 -0
  47. package/dist/cli/root-commands.d.ts.map +1 -0
  48. package/dist/cli/root-commands.js +25 -0
  49. package/dist/cli/root-commands.js.map +1 -0
  50. package/dist/cli/status.d.ts +4 -0
  51. package/dist/cli/status.d.ts.map +1 -0
  52. package/dist/cli/status.js +132 -0
  53. package/dist/cli/status.js.map +1 -0
  54. package/dist/cli/track.d.ts +4 -0
  55. package/dist/cli/track.d.ts.map +1 -0
  56. package/dist/cli/track.js +133 -0
  57. package/dist/cli/track.js.map +1 -0
  58. package/dist/cli/untrack.d.ts +4 -0
  59. package/dist/cli/untrack.d.ts.map +1 -0
  60. package/dist/cli/untrack.js +40 -0
  61. package/dist/cli/untrack.js.map +1 -0
  62. package/dist/config/constants.d.ts +31 -0
  63. package/dist/config/constants.d.ts.map +1 -0
  64. package/dist/config/constants.js +33 -0
  65. package/dist/config/constants.js.map +1 -0
  66. package/dist/config/global-config.d.ts +21 -0
  67. package/dist/config/global-config.d.ts.map +1 -0
  68. package/dist/config/global-config.js +89 -0
  69. package/dist/config/global-config.js.map +1 -0
  70. package/dist/config/identity-file.d.ts +9 -0
  71. package/dist/config/identity-file.d.ts.map +1 -0
  72. package/dist/config/identity-file.js +48 -0
  73. package/dist/config/identity-file.js.map +1 -0
  74. package/dist/config/migration.d.ts +9 -0
  75. package/dist/config/migration.d.ts.map +1 -0
  76. package/dist/config/migration.js +61 -0
  77. package/dist/config/migration.js.map +1 -0
  78. package/dist/config/platform.d.ts +12 -0
  79. package/dist/config/platform.d.ts.map +1 -0
  80. package/dist/config/platform.js +25 -0
  81. package/dist/config/platform.js.map +1 -0
  82. package/dist/config/runtime-env.d.ts +7 -0
  83. package/dist/config/runtime-env.d.ts.map +1 -0
  84. package/dist/config/runtime-env.js +31 -0
  85. package/dist/config/runtime-env.js.map +1 -0
  86. package/dist/config/sync-entry.d.ts +14 -0
  87. package/dist/config/sync-entry.d.ts.map +1 -0
  88. package/dist/config/sync-entry.js +99 -0
  89. package/dist/config/sync-entry.js.map +1 -0
  90. package/dist/config/sync-schema.d.ts +146 -0
  91. package/dist/config/sync-schema.d.ts.map +1 -0
  92. package/dist/config/sync-schema.js +392 -0
  93. package/dist/config/sync-schema.js.map +1 -0
  94. package/dist/config/sync.d.ts +8 -0
  95. package/dist/config/sync.d.ts.map +1 -0
  96. package/dist/config/sync.js +53 -0
  97. package/dist/config/sync.js.map +1 -0
  98. package/dist/config/xdg.d.ts +10 -0
  99. package/dist/config/xdg.d.ts.map +1 -0
  100. package/dist/config/xdg.js +90 -0
  101. package/dist/config/xdg.js.map +1 -0
  102. package/dist/index.d.ts +3 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +4 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/lib/content.d.ts +5 -0
  107. package/dist/lib/content.d.ts.map +1 -0
  108. package/dist/lib/content.js +29 -0
  109. package/dist/lib/content.js.map +1 -0
  110. package/dist/lib/crypto.d.ts +45 -0
  111. package/dist/lib/crypto.d.ts.map +1 -0
  112. package/dist/lib/crypto.js +130 -0
  113. package/dist/lib/crypto.js.map +1 -0
  114. package/dist/lib/env.d.ts +13 -0
  115. package/dist/lib/env.d.ts.map +1 -0
  116. package/dist/lib/env.js +50 -0
  117. package/dist/lib/env.js.map +1 -0
  118. package/dist/lib/error.d.ts +22 -0
  119. package/dist/lib/error.d.ts.map +1 -0
  120. package/dist/lib/error.js +50 -0
  121. package/dist/lib/error.js.map +1 -0
  122. package/dist/lib/file-mode.d.ts +36 -0
  123. package/dist/lib/file-mode.d.ts.map +1 -0
  124. package/dist/lib/file-mode.js +55 -0
  125. package/dist/lib/file-mode.js.map +1 -0
  126. package/dist/lib/filesystem.d.ts +60 -0
  127. package/dist/lib/filesystem.d.ts.map +1 -0
  128. package/dist/lib/filesystem.js +190 -0
  129. package/dist/lib/filesystem.js.map +1 -0
  130. package/dist/lib/git.d.ts +23 -0
  131. package/dist/lib/git.d.ts.map +1 -0
  132. package/dist/lib/git.js +162 -0
  133. package/dist/lib/git.js.map +1 -0
  134. package/dist/lib/jsonc.d.ts +8 -0
  135. package/dist/lib/jsonc.d.ts.map +1 -0
  136. package/dist/lib/jsonc.js +78 -0
  137. package/dist/lib/jsonc.js.map +1 -0
  138. package/dist/lib/path.d.ts +21 -0
  139. package/dist/lib/path.d.ts.map +1 -0
  140. package/dist/lib/path.js +44 -0
  141. package/dist/lib/path.js.map +1 -0
  142. package/dist/lib/promise.d.ts +10 -0
  143. package/dist/lib/promise.d.ts.map +1 -0
  144. package/dist/lib/promise.js +25 -0
  145. package/dist/lib/promise.js.map +1 -0
  146. package/dist/lib/string.d.ts +6 -0
  147. package/dist/lib/string.d.ts.map +1 -0
  148. package/dist/lib/string.js +8 -0
  149. package/dist/lib/string.js.map +1 -0
  150. package/dist/lib/validation.d.ts +7 -0
  151. package/dist/lib/validation.d.ts.map +1 -0
  152. package/dist/lib/validation.js +13 -0
  153. package/dist/lib/validation.js.map +1 -0
  154. package/dist/lib/version.d.ts +2 -0
  155. package/dist/lib/version.d.ts.map +1 -0
  156. package/dist/lib/version.js +4 -0
  157. package/dist/lib/version.js.map +1 -0
  158. package/dist/migrations/global-v3.d.ts +3 -0
  159. package/dist/migrations/global-v3.d.ts.map +1 -0
  160. package/dist/migrations/global-v3.js +5 -0
  161. package/dist/migrations/global-v3.js.map +1 -0
  162. package/dist/services/autocomplete.d.ts +5 -0
  163. package/dist/services/autocomplete.d.ts.map +1 -0
  164. package/dist/services/autocomplete.js +185 -0
  165. package/dist/services/autocomplete.js.map +1 -0
  166. package/dist/services/config-file.d.ts +73 -0
  167. package/dist/services/config-file.d.ts.map +1 -0
  168. package/dist/services/config-file.js +40 -0
  169. package/dist/services/config-file.js.map +1 -0
  170. package/dist/services/doctor.d.ts +16 -0
  171. package/dist/services/doctor.d.ts.map +1 -0
  172. package/dist/services/doctor.js +126 -0
  173. package/dist/services/doctor.js.map +1 -0
  174. package/dist/services/init.d.ts +24 -0
  175. package/dist/services/init.d.ts.map +1 -0
  176. package/dist/services/init.js +265 -0
  177. package/dist/services/init.js.map +1 -0
  178. package/dist/services/local-materialization.d.ts +30 -0
  179. package/dist/services/local-materialization.d.ts.map +1 -0
  180. package/dist/services/local-materialization.js +451 -0
  181. package/dist/services/local-materialization.js.map +1 -0
  182. package/dist/services/local-snapshot.d.ts +26 -0
  183. package/dist/services/local-snapshot.d.ts.map +1 -0
  184. package/dist/services/local-snapshot.js +119 -0
  185. package/dist/services/local-snapshot.js.map +1 -0
  186. package/dist/services/paths.d.ts +8 -0
  187. package/dist/services/paths.d.ts.map +1 -0
  188. package/dist/services/paths.js +71 -0
  189. package/dist/services/paths.js.map +1 -0
  190. package/dist/services/profile.d.ts +39 -0
  191. package/dist/services/profile.d.ts.map +1 -0
  192. package/dist/services/profile.js +124 -0
  193. package/dist/services/profile.js.map +1 -0
  194. package/dist/services/pull.d.ts +38 -0
  195. package/dist/services/pull.d.ts.map +1 -0
  196. package/dist/services/pull.js +148 -0
  197. package/dist/services/pull.js.map +1 -0
  198. package/dist/services/push.d.ts +38 -0
  199. package/dist/services/push.d.ts.map +1 -0
  200. package/dist/services/push.js +120 -0
  201. package/dist/services/push.js.map +1 -0
  202. package/dist/services/repo-artifacts.d.ts +52 -0
  203. package/dist/services/repo-artifacts.d.ts.map +1 -0
  204. package/dist/services/repo-artifacts.js +325 -0
  205. package/dist/services/repo-artifacts.js.map +1 -0
  206. package/dist/services/repo-snapshot.d.ts +7 -0
  207. package/dist/services/repo-snapshot.d.ts.map +1 -0
  208. package/dist/services/repo-snapshot.js +181 -0
  209. package/dist/services/repo-snapshot.js.map +1 -0
  210. package/dist/services/runtime.d.ts +30 -0
  211. package/dist/services/runtime.d.ts.map +1 -0
  212. package/dist/services/runtime.js +71 -0
  213. package/dist/services/runtime.js.map +1 -0
  214. package/dist/services/set.d.ts +41 -0
  215. package/dist/services/set.d.ts.map +1 -0
  216. package/dist/services/set.js +288 -0
  217. package/dist/services/set.js.map +1 -0
  218. package/dist/services/status.d.ts +41 -0
  219. package/dist/services/status.d.ts.map +1 -0
  220. package/dist/services/status.js +87 -0
  221. package/dist/services/status.js.map +1 -0
  222. package/dist/services/terminal/cli-runtime.d.ts +18 -0
  223. package/dist/services/terminal/cli-runtime.d.ts.map +1 -0
  224. package/dist/services/terminal/cli-runtime.js +19 -0
  225. package/dist/services/terminal/cli-runtime.js.map +1 -0
  226. package/dist/services/terminal/logger.d.ts +9 -0
  227. package/dist/services/terminal/logger.d.ts.map +1 -0
  228. package/dist/services/terminal/logger.js +15 -0
  229. package/dist/services/terminal/logger.js.map +1 -0
  230. package/dist/services/terminal/path-completion.d.ts +3 -0
  231. package/dist/services/terminal/path-completion.d.ts.map +1 -0
  232. package/dist/services/terminal/path-completion.js +108 -0
  233. package/dist/services/terminal/path-completion.js.map +1 -0
  234. package/dist/services/terminal/shell.d.ts +24 -0
  235. package/dist/services/terminal/shell.d.ts.map +1 -0
  236. package/dist/services/terminal/shell.js +227 -0
  237. package/dist/services/terminal/shell.js.map +1 -0
  238. package/dist/services/track.d.ts +20 -0
  239. package/dist/services/track.d.ts.map +1 -0
  240. package/dist/services/track.js +224 -0
  241. package/dist/services/track.js.map +1 -0
  242. package/dist/services/untrack.d.ts +13 -0
  243. package/dist/services/untrack.d.ts.map +1 -0
  244. package/dist/services/untrack.js +133 -0
  245. package/dist/services/untrack.js.map +1 -0
  246. package/package.json +84 -0
@@ -0,0 +1,49 @@
1
+ import { buildCommand } from "@stricli/core";
2
+ import pc from "picocolors";
3
+ import { clearActiveProfile, setActiveProfile } from "#app/services/profile.ts";
4
+ import { verboseFlag, } from "#app/services/terminal/cli-runtime.ts";
5
+ import { createCliLogger } from "#app/services/terminal/logger.ts";
6
+ const profileUseCommand = buildCommand({
7
+ docs: {
8
+ brief: "Set or clear the active sync profile",
9
+ fullDescription: "Write ~/.config/dotweave/settings.jsonc so plain push, pull, status, and doctor commands use the selected profile layer by default. Omit the profile name to clear the active profile.",
10
+ },
11
+ async func(flags, profile) {
12
+ const verbose = flags.verbose ?? false;
13
+ const logger = createCliLogger({ verbose });
14
+ const result = profile !== undefined
15
+ ? await setActiveProfile(profile)
16
+ : await clearActiveProfile();
17
+ if (result.action === "use") {
18
+ logger.success(`Active profile set to ${result.activeProfile}`);
19
+ }
20
+ else {
21
+ logger.success("Active profile cleared");
22
+ }
23
+ if (result.warning) {
24
+ logger.warn(` ${result.warning}`);
25
+ }
26
+ if (verbose) {
27
+ logger.log(pc.dim(` sync dir ${result.syncDirectory}`));
28
+ logger.log(pc.dim(` config ${result.globalConfigPath}`));
29
+ }
30
+ },
31
+ parameters: {
32
+ flags: {
33
+ verbose: verboseFlag,
34
+ },
35
+ positional: {
36
+ kind: "tuple",
37
+ parameters: [
38
+ {
39
+ brief: "Profile name to activate (omit to clear)",
40
+ optional: true,
41
+ parse: String,
42
+ placeholder: "profile",
43
+ },
44
+ ],
45
+ },
46
+ },
47
+ });
48
+ export default profileUseCommand;
49
+ //# sourceMappingURL=use.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../src/cli/profile/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAEL,WAAW,GACZ,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAMnE,MAAM,iBAAiB,GAAG,YAAY,CAIpC;IACA,IAAI,EAAE;QACJ,KAAK,EAAE,sCAAsC;QAC7C,eAAe,EACb,wLAAwL;KAC3L;IACD,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO;QACvB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC;QACvC,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAE5C,MAAM,MAAM,GACV,OAAO,KAAK,SAAS;YACnB,CAAC,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC;YACjC,CAAC,CAAC,MAAM,kBAAkB,EAAE,CAAC;QAEjC,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,CAAC,OAAO,CAAC,yBAAyB,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,UAAU,EAAE;QACV,KAAK,EAAE;YACL,OAAO,EAAE,WAAW;SACrB;QACD,UAAU,EAAE;YACV,IAAI,EAAE,OAAO;YACb,UAAU,EAAE;gBACV;oBACE,KAAK,EAAE,0CAA0C;oBACjD,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,MAAM;oBACb,WAAW,EAAE,SAAS;iBACvB;aACF;SACF;KACF;CACF,CAAC,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type DotweaveCliContext } from "#app/services/terminal/cli-runtime.ts";
2
+ declare const pullCommand: import("@stricli/core").Command<DotweaveCliContext>;
3
+ export default pullCommand;
4
+ //# sourceMappingURL=pull.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/cli/pull.ts"],"names":[],"mappings":"AASA,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,uCAAuC,CAAC;AAoC/C,QAAA,MAAM,WAAW,qDA4Gf,CAAC;AAEH,eAAe,WAAW,CAAC"}
@@ -0,0 +1,107 @@
1
+ import { buildCommand } from "@stricli/core";
2
+ import consola from "consola";
3
+ import pc from "picocolors";
4
+ import { DotweaveError } from "#app/lib/error.ts";
5
+ import { applyPullPlan, buildPullResultFromPlan, preparePull, } from "#app/services/pull.ts";
6
+ import { verboseFlag, } from "#app/services/terminal/cli-runtime.ts";
7
+ import { createCliLogger } from "#app/services/terminal/logger.ts";
8
+ const logPullPlanChanges = (logger, updatedLocalPaths, deletedLocalPaths) => {
9
+ logger.info("Planned pull changes");
10
+ if (updatedLocalPaths.length > 0) {
11
+ logger.log(` ${pc.bold("Update from repository")} (${updatedLocalPaths.length})`);
12
+ for (const path of updatedLocalPaths) {
13
+ logger.log(pc.dim(` + ${path}`));
14
+ }
15
+ }
16
+ if (deletedLocalPaths.length > 0) {
17
+ logger.log(` ${pc.bold("Remove locally")} (${deletedLocalPaths.length})`);
18
+ for (const path of deletedLocalPaths) {
19
+ logger.log(pc.dim(` - ${path}`));
20
+ }
21
+ }
22
+ };
23
+ const pullCommand = buildCommand({
24
+ docs: {
25
+ brief: "Apply the git-backed sync directory to local config paths",
26
+ fullDescription: "Read tracked artifacts from the sync directory and materialize them back onto local paths under your home directory. Secret artifacts are decrypted with the configured age identity before they are written locally.",
27
+ },
28
+ async func(flags) {
29
+ const verbose = flags.verbose ?? false;
30
+ const dryRun = flags.dryRun ?? false;
31
+ const logger = createCliLogger({ verbose });
32
+ const reporter = verbose ? logger : undefined;
33
+ const prepared = await preparePull({ dryRun, profile: flags.profile }, reporter);
34
+ const { config, plan, syncDirectory } = prepared;
35
+ if (plan.updatedLocalPaths.length === 0 &&
36
+ plan.deletedLocalPaths.length === 0) {
37
+ logger.info("Already up to date");
38
+ if (verbose) {
39
+ logger.log(pc.dim(` sync dir ${syncDirectory}`));
40
+ logger.log(pc.dim(` config ${buildPullResultFromPlan(plan, syncDirectory, dryRun).configPath}`));
41
+ }
42
+ return;
43
+ }
44
+ logPullPlanChanges(logger, plan.updatedLocalPaths, plan.deletedLocalPaths);
45
+ if (dryRun) {
46
+ logger.info(`Pull preview ${pc.dim("(dry run)")}`);
47
+ }
48
+ else if (flags.yes ?? false) {
49
+ await applyPullPlan(config, plan, reporter);
50
+ logger.success("Pull complete");
51
+ }
52
+ else {
53
+ if (!(process.stdin.isTTY ?? false)) {
54
+ throw new DotweaveError("Pull confirmation requires an interactive terminal.", {
55
+ hint: "Re-run 'dotweave pull -y' to apply changes without a prompt.",
56
+ });
57
+ }
58
+ const answer = await consola.prompt("Apply these changes? [y/N] ", {
59
+ cancel: "reject",
60
+ type: "text",
61
+ });
62
+ if (answer.trim() !== "y") {
63
+ logger.info("Skipped pull changes");
64
+ return;
65
+ }
66
+ await applyPullPlan(config, plan, reporter);
67
+ logger.success("Pull complete");
68
+ }
69
+ const result = buildPullResultFromPlan(plan, syncDirectory, dryRun);
70
+ const updateAction = dryRun ? "would be updated" : "updated";
71
+ const removeAction = dryRun ? "would be removed" : "removed";
72
+ logger.log(` ${plan.updatedLocalPaths.length} local paths ${updateAction}`);
73
+ logger.log(` ${plan.deletedLocalPaths.length} local paths ${removeAction}`);
74
+ if (verbose) {
75
+ logger.log(pc.dim(` sync dir ${result.syncDirectory}`));
76
+ logger.log(pc.dim(` config ${result.configPath}`));
77
+ }
78
+ },
79
+ parameters: {
80
+ flags: {
81
+ dryRun: {
82
+ brief: "Preview local file updates only",
83
+ kind: "boolean",
84
+ optional: true,
85
+ },
86
+ profile: {
87
+ brief: "Use a specific profile layer for this command",
88
+ kind: "parsed",
89
+ optional: true,
90
+ parse: String,
91
+ placeholder: "profile",
92
+ },
93
+ yes: {
94
+ brief: "Apply pull changes without prompting",
95
+ kind: "boolean",
96
+ optional: true,
97
+ withNegated: false,
98
+ },
99
+ verbose: verboseFlag,
100
+ },
101
+ aliases: {
102
+ y: "yes",
103
+ },
104
+ },
105
+ });
106
+ export default pullCommand;
107
+ //# sourceMappingURL=pull.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/cli/pull.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type DotweaveCliContext } from "#app/services/terminal/cli-runtime.ts";
2
+ declare const pushCommand: import("@stricli/core").Command<DotweaveCliContext>;
3
+ export default pushCommand;
4
+ //# sourceMappingURL=push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/cli/push.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,uCAAuC,CAAC;AAS/C,QAAA,MAAM,WAAW,qDAmDf,CAAC;AAEH,eAAe,WAAW,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { buildCommand } from "@stricli/core";
2
+ import pc from "picocolors";
3
+ import { pushChanges } from "#app/services/push.ts";
4
+ import { verboseFlag, } from "#app/services/terminal/cli-runtime.ts";
5
+ import { createCliLogger } from "#app/services/terminal/logger.ts";
6
+ const pushCommand = buildCommand({
7
+ docs: {
8
+ brief: "Mirror local config into the git-backed sync directory",
9
+ fullDescription: "Collect the current state of tracked local files and directories, then update the sync directory artifacts to match. Secret targets are encrypted before they are written into the repository.",
10
+ },
11
+ async func(flags) {
12
+ const verbose = flags.verbose ?? false;
13
+ const logger = createCliLogger({ verbose });
14
+ const reporter = verbose ? logger : undefined;
15
+ const result = await pushChanges({ dryRun: flags.dryRun ?? false, profile: flags.profile }, reporter);
16
+ const stats = `${result.plainFileCount} plain · ${result.encryptedFileCount} encrypted · ${result.symlinkCount} symlinks · ${result.directoryCount} dirs`;
17
+ if (result.dryRun) {
18
+ logger.info(`Push preview ${pc.dim("(dry run)")}`);
19
+ }
20
+ else {
21
+ logger.success("Push complete");
22
+ }
23
+ logger.log(` ${stats}`);
24
+ logger.log(` ${result.deletedArtifactCount} stale artifacts ${result.dryRun ? "would be removed" : "removed"}`);
25
+ if (verbose) {
26
+ logger.log(pc.dim(` sync dir ${result.syncDirectory}`));
27
+ logger.log(pc.dim(` config ${result.configPath}`));
28
+ }
29
+ },
30
+ parameters: {
31
+ flags: {
32
+ dryRun: {
33
+ brief: "Preview repository updates only",
34
+ kind: "boolean",
35
+ optional: true,
36
+ },
37
+ profile: {
38
+ brief: "Use a specific profile layer for this command",
39
+ kind: "parsed",
40
+ optional: true,
41
+ parse: String,
42
+ placeholder: "profile",
43
+ },
44
+ verbose: verboseFlag,
45
+ },
46
+ },
47
+ });
48
+ export default pushCommand;
49
+ //# sourceMappingURL=push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/cli/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAEL,WAAW,GACZ,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAQnE,MAAM,WAAW,GAAG,YAAY,CAAoC;IAClE,IAAI,EAAE;QACJ,KAAK,EAAE,wDAAwD;QAC/D,eAAe,EACb,gMAAgM;KACnM;IACD,KAAK,CAAC,IAAI,CAAC,KAAK;QACd,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC;QACvC,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9C,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EACzD,QAAQ,CACT,CAAC;QAEF,MAAM,KAAK,GAAG,GAAG,MAAM,CAAC,cAAc,YAAY,MAAM,CAAC,kBAAkB,gBAAgB,MAAM,CAAC,YAAY,eAAe,MAAM,CAAC,cAAc,OAAO,CAAC;QAE1J,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,CACR,KAAK,MAAM,CAAC,oBAAoB,oBAAoB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,EAAE,CACrG,CAAC;QAEF,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,UAAU,EAAE;QACV,KAAK,EAAE;YACL,MAAM,EAAE;gBACN,KAAK,EAAE,iCAAiC;gBACxC,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,IAAI;aACf;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,+CAA+C;gBACtD,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,MAAM;gBACb,WAAW,EAAE,SAAS;aACvB;YACD,OAAO,EAAE,WAAW;SACrB;KACF;CACF,CAAC,CAAC;AAEH,eAAe,WAAW,CAAC"}
@@ -0,0 +1,13 @@
1
+ export declare const rootCommandRoutes: {
2
+ cd: import("@stricli/core").Command<import("../services/terminal/cli-runtime.ts").DotweaveCliContext>;
3
+ doctor: import("@stricli/core").Command<import("../services/terminal/cli-runtime.ts").DotweaveCliContext>;
4
+ init: import("@stricli/core").Command<import("../services/terminal/cli-runtime.ts").DotweaveCliContext>;
5
+ profile: import("@stricli/core").RouteMap<import("../services/terminal/cli-runtime.ts").DotweaveCliContext>;
6
+ pull: import("@stricli/core").Command<import("../services/terminal/cli-runtime.ts").DotweaveCliContext>;
7
+ push: import("@stricli/core").Command<import("../services/terminal/cli-runtime.ts").DotweaveCliContext>;
8
+ status: import("@stricli/core").Command<import("../services/terminal/cli-runtime.ts").DotweaveCliContext>;
9
+ track: import("@stricli/core").Command<import("../services/terminal/cli-runtime.ts").DotweaveCliContext>;
10
+ untrack: import("@stricli/core").Command<import("../services/terminal/cli-runtime.ts").DotweaveCliContext>;
11
+ };
12
+ export declare const rootCommandNames: string[];
13
+ //# sourceMappingURL=root-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root-commands.d.ts","sourceRoot":"","sources":["../../src/cli/root-commands.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,iBAAiB;;;;;;;;;;CAU7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,UAG5B,CAAC"}
@@ -0,0 +1,25 @@
1
+ import cdCommand from "#app/cli/cd.ts";
2
+ import doctorCommand from "#app/cli/doctor.ts";
3
+ import initCommand from "#app/cli/init.ts";
4
+ import profileRoute from "#app/cli/profile/index.ts";
5
+ import pullCommand from "#app/cli/pull.ts";
6
+ import pushCommand from "#app/cli/push.ts";
7
+ import statusCommand from "#app/cli/status.ts";
8
+ import trackCommand from "#app/cli/track.ts";
9
+ import untrackCommand from "#app/cli/untrack.ts";
10
+ export const rootCommandRoutes = {
11
+ cd: cdCommand,
12
+ doctor: doctorCommand,
13
+ init: initCommand,
14
+ profile: profileRoute,
15
+ pull: pullCommand,
16
+ push: pushCommand,
17
+ status: statusCommand,
18
+ track: trackCommand,
19
+ untrack: untrackCommand,
20
+ };
21
+ export const rootCommandNames = [
22
+ "autocomplete",
23
+ ...Object.keys(rootCommandRoutes),
24
+ ];
25
+ //# sourceMappingURL=root-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root-commands.js","sourceRoot":"","sources":["../../src/cli/root-commands.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,YAAY,MAAM,2BAA2B,CAAC;AACrD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,EAAE,EAAE,SAAS;IACb,MAAM,EAAE,aAAa;IACrB,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,aAAa;IACrB,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE,cAAc;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,cAAc;IACd,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;CAClC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type DotweaveCliContext } from "#app/services/terminal/cli-runtime.ts";
2
+ declare const statusCommand: import("@stricli/core").Command<DotweaveCliContext>;
3
+ export default statusCommand;
4
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,uCAAuC,CAAC;AAqH/C,QAAA,MAAM,aAAa,qDAkEjB,CAAC;AAEH,eAAe,aAAa,CAAC"}
@@ -0,0 +1,132 @@
1
+ import { buildCommand } from "@stricli/core";
2
+ import pc from "picocolors";
3
+ import { getStatus, } from "#app/services/status.ts";
4
+ import { verboseFlag, } from "#app/services/terminal/cli-runtime.ts";
5
+ import { createCliLogger } from "#app/services/terminal/logger.ts";
6
+ const MAX_DISPLAY_ITEMS = 10;
7
+ const logPushChanges = (logger, changes) => {
8
+ const hasChanges = changes.added.length > 0 ||
9
+ changes.modified.length > 0 ||
10
+ changes.deleted.length > 0;
11
+ if (!hasChanges) {
12
+ logger.log(` ${pc.dim("No push changes")}`);
13
+ return;
14
+ }
15
+ if (changes.added.length > 0) {
16
+ logger.log(` ${pc.green("+")} ${pc.bold("Add")} (${changes.added.length}):`);
17
+ const displayItems = changes.added.slice(0, MAX_DISPLAY_ITEMS);
18
+ const remainingCount = changes.added.length - displayItems.length;
19
+ for (const path of displayItems) {
20
+ logger.log(pc.dim(` ${path}`));
21
+ }
22
+ if (remainingCount > 0) {
23
+ logger.log(pc.dim(` ... and ${remainingCount} more`));
24
+ }
25
+ }
26
+ if (changes.modified.length > 0) {
27
+ logger.log(` ${pc.yellow("~")} ${pc.bold("Modify")} (${changes.modified.length}):`);
28
+ const displayItems = changes.modified.slice(0, MAX_DISPLAY_ITEMS);
29
+ const remainingCount = changes.modified.length - displayItems.length;
30
+ for (const path of displayItems) {
31
+ logger.log(pc.dim(` ${path}`));
32
+ }
33
+ if (remainingCount > 0) {
34
+ logger.log(pc.dim(` ... and ${remainingCount} more`));
35
+ }
36
+ }
37
+ if (changes.deleted.length > 0) {
38
+ logger.log(` ${pc.red("-")} ${pc.bold("Delete")} (${changes.deleted.length}):`);
39
+ const displayItems = changes.deleted.slice(0, MAX_DISPLAY_ITEMS);
40
+ const remainingCount = changes.deleted.length - displayItems.length;
41
+ for (const path of displayItems) {
42
+ logger.log(pc.dim(` ${path}`));
43
+ }
44
+ if (remainingCount > 0) {
45
+ logger.log(pc.dim(` ... and ${remainingCount} more`));
46
+ }
47
+ }
48
+ };
49
+ const logPullChanges = (logger, changes) => {
50
+ const hasChanges = changes.updated.length > 0 || changes.deleted.length > 0;
51
+ if (!hasChanges) {
52
+ logger.log(` ${pc.dim("No pull changes")}`);
53
+ return;
54
+ }
55
+ if (changes.updated.length > 0) {
56
+ logger.log(` ${pc.green("+")} ${pc.bold("Changed")} (${changes.updated.length}):`);
57
+ const displayItems = changes.updated.slice(0, MAX_DISPLAY_ITEMS);
58
+ const remainingCount = changes.updated.length - displayItems.length;
59
+ for (const path of displayItems) {
60
+ logger.log(pc.dim(` ${path}`));
61
+ }
62
+ if (remainingCount > 0) {
63
+ logger.log(pc.dim(` ... and ${remainingCount} more`));
64
+ }
65
+ }
66
+ if (changes.deleted.length > 0) {
67
+ logger.log(` ${pc.red("-")} ${pc.bold("Remove")} (${changes.deleted.length}):`);
68
+ const displayItems = changes.deleted.slice(0, MAX_DISPLAY_ITEMS);
69
+ const remainingCount = changes.deleted.length - displayItems.length;
70
+ for (const path of displayItems) {
71
+ logger.log(pc.dim(` ${path}`));
72
+ }
73
+ if (remainingCount > 0) {
74
+ logger.log(pc.dim(` ... and ${remainingCount} more`));
75
+ }
76
+ }
77
+ };
78
+ const statusCommand = buildCommand({
79
+ docs: {
80
+ brief: "Show planned push and pull changes for the current sync config",
81
+ fullDescription: "Compare the tracked local files with the sync directory and report what push would write to the repository and what pull would write back locally.",
82
+ },
83
+ async func(flags) {
84
+ const verbose = flags.verbose ?? false;
85
+ const logger = createCliLogger({ verbose });
86
+ const reporter = verbose ? logger : undefined;
87
+ const result = await getStatus({
88
+ profile: flags.profile,
89
+ reporter,
90
+ });
91
+ logger.info("Sync status");
92
+ logger.log(` profile: ${result.activeProfile ?? "none"} · ${result.entryCount} entries · ${result.recipientCount} recipients`);
93
+ logger.log("");
94
+ logger.log(`${pc.bold("Push changes")} ${pc.dim("(repository):")}`);
95
+ logPushChanges(logger, result.push.changes);
96
+ logger.log("");
97
+ logger.log(`${pc.bold("Pull changes")} ${pc.dim("(local):")}`);
98
+ logPullChanges(logger, result.pull.changes);
99
+ if (verbose) {
100
+ logger.log("");
101
+ logger.log(pc.bold("Entries:"));
102
+ if (result.entries.length === 0) {
103
+ logger.log(pc.dim(" none"));
104
+ }
105
+ else {
106
+ for (const entry of result.entries) {
107
+ const profiles = entry.profiles.length > 0
108
+ ? `, profiles: ${entry.profiles.join(", ")}`
109
+ : "";
110
+ logger.log(pc.dim(` ${entry.repoPath} → ${entry.localPath} (${entry.kind}, ${entry.mode}${profiles})`));
111
+ }
112
+ }
113
+ logger.log("");
114
+ logger.log(pc.dim(` sync dir ${result.syncDirectory}`));
115
+ logger.log(pc.dim(` config ${result.configPath}`));
116
+ }
117
+ },
118
+ parameters: {
119
+ flags: {
120
+ profile: {
121
+ brief: "Use a specific profile layer for this command",
122
+ kind: "parsed",
123
+ optional: true,
124
+ parse: String,
125
+ placeholder: "profile",
126
+ },
127
+ verbose: verboseFlag,
128
+ },
129
+ },
130
+ });
131
+ export default statusCommand;
132
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type DotweaveCliContext } from "#app/services/terminal/cli-runtime.ts";
2
+ declare const trackCommand: import("@stricli/core").Command<DotweaveCliContext>;
3
+ export default trackCommand;
4
+ //# sourceMappingURL=track.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../../src/cli/track.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,uCAAuC,CAAC;AAY/C,QAAA,MAAM,YAAY,qDAwJhB,CAAC;AAEH,eAAe,YAAY,CAAC"}
@@ -0,0 +1,133 @@
1
+ import { buildCommand } from "@stricli/core";
2
+ import pc from "picocolors";
3
+ import { CONSTANTS } from "#app/config/constants.ts";
4
+ import { DotweaveError } from "#app/lib/error.ts";
5
+ import { assignProfiles } from "#app/services/profile.ts";
6
+ import { setTargetMode } from "#app/services/set.ts";
7
+ import { verboseFlag, } from "#app/services/terminal/cli-runtime.ts";
8
+ import { createCliLogger } from "#app/services/terminal/logger.ts";
9
+ import { proposePathCompletions } from "#app/services/terminal/path-completion.ts";
10
+ import { trackTarget } from "#app/services/track.ts";
11
+ const trackCommand = buildCommand({
12
+ docs: {
13
+ brief: "Track local files or directories for syncing",
14
+ fullDescription: "Register one or more files or directories inside your home directory so dotweave can mirror them into the sync directory. If a target is already tracked, its mode is updated. Targets may also be repository paths inside a tracked directory to create child entries with a specific mode.",
15
+ },
16
+ async func(flags, ...targets) {
17
+ const verbose = flags.verbose ?? false;
18
+ const logger = createCliLogger({ verbose });
19
+ const profiles = [...(flags.profile ?? [])];
20
+ const cwd = process.cwd();
21
+ if (flags.repoPath !== undefined && targets.length !== 1) {
22
+ throw new DotweaveError("The --repo-path flag can only be used with a single sync target.", {
23
+ code: "REPO_PATH_TARGET_COUNT",
24
+ hint: "Track one target at a time when overriding its repository path.",
25
+ });
26
+ }
27
+ if (verbose) {
28
+ logger.start(`Processing ${targets.length} sync target${targets.length === 1 ? "" : "s"}...`);
29
+ }
30
+ for (const target of targets) {
31
+ if (verbose) {
32
+ logger.start(`Resolving ${target}...`);
33
+ }
34
+ try {
35
+ const result = await trackTarget({
36
+ mode: flags.mode,
37
+ profiles: profiles.length > 0 ? profiles : undefined,
38
+ ...(flags.repoPath === undefined
39
+ ? {}
40
+ : { repoPath: flags.repoPath }),
41
+ target,
42
+ }, cwd);
43
+ if (!result.alreadyTracked) {
44
+ logger.success(`Started tracking ${result.repoPath}`);
45
+ }
46
+ else if (result.changed) {
47
+ logger.success(`Updated tracking for ${result.repoPath}`);
48
+ }
49
+ else {
50
+ logger.info(`${result.repoPath} already tracked`);
51
+ }
52
+ const profileInfo = result.profiles.length > 0
53
+ ? ` · profiles: ${result.profiles.join(", ")}`
54
+ : "";
55
+ logger.log(` ${result.localPath} · mode: ${result.mode}${profileInfo}`);
56
+ if (verbose) {
57
+ logger.log(pc.dim(` kind: ${result.kind}`));
58
+ logger.log(pc.dim(` sync dir ${result.syncDirectory}`));
59
+ logger.log(pc.dim(` config ${result.configPath}`));
60
+ }
61
+ }
62
+ catch (error) {
63
+ if (flags.repoPath === undefined &&
64
+ error instanceof DotweaveError &&
65
+ error.code === "TARGET_NOT_FOUND") {
66
+ if (verbose) {
67
+ logger.start(`Updating existing target ${target}...`);
68
+ }
69
+ const setResult = await setTargetMode({ mode: flags.mode, target }, cwd);
70
+ if (profiles.length > 0) {
71
+ const isProfileClear = profiles.length === 1 && profiles[0] === "";
72
+ await assignProfiles({ profiles: isProfileClear ? [] : profiles, target }, cwd);
73
+ }
74
+ if (setResult.action === "unchanged") {
75
+ logger.info(`Sync mode unchanged for ${setResult.repoPath}`);
76
+ }
77
+ else {
78
+ logger.success(`Updated sync mode for ${setResult.repoPath}`);
79
+ }
80
+ logger.log(` mode: ${setResult.mode}`);
81
+ if (setResult.reason === "already-set") {
82
+ logger.log(pc.dim(` already ${setResult.mode}`));
83
+ }
84
+ if (verbose) {
85
+ logger.log(pc.dim(` local ${setResult.localPath}`));
86
+ logger.log(pc.dim(` sync dir ${setResult.syncDirectory}`));
87
+ logger.log(pc.dim(` config ${setResult.configPath}`));
88
+ }
89
+ continue;
90
+ }
91
+ throw error;
92
+ }
93
+ }
94
+ },
95
+ parameters: {
96
+ flags: {
97
+ mode: {
98
+ brief: "Sync mode for the tracked targets",
99
+ default: CONSTANTS.SYNC.MODES[0],
100
+ kind: "enum",
101
+ values: CONSTANTS.SYNC.MODES,
102
+ },
103
+ profile: {
104
+ brief: "Restrict syncing to specific profiles",
105
+ kind: "parsed",
106
+ optional: true,
107
+ parse: String,
108
+ placeholder: "profile",
109
+ variadic: true,
110
+ },
111
+ repoPath: {
112
+ brief: "Repository-relative path under the profile namespace",
113
+ kind: "parsed",
114
+ optional: true,
115
+ parse: String,
116
+ placeholder: "path",
117
+ },
118
+ verbose: verboseFlag,
119
+ },
120
+ positional: {
121
+ kind: "array",
122
+ minimum: 1,
123
+ parameter: {
124
+ brief: "Local files or directories under your home directory to track, including cwd-relative paths or repository paths inside tracked directories",
125
+ parse: String,
126
+ placeholder: "target",
127
+ proposeCompletions: proposePathCompletions,
128
+ },
129
+ },
130
+ },
131
+ });
132
+ export default trackCommand;
133
+ //# sourceMappingURL=track.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track.js","sourceRoot":"","sources":["../../src/cli/track.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type DotweaveCliContext } from "#app/services/terminal/cli-runtime.ts";
2
+ declare const untrackCommand: import("@stricli/core").Command<DotweaveCliContext>;
3
+ export default untrackCommand;
4
+ //# sourceMappingURL=untrack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"untrack.d.ts","sourceRoot":"","sources":["../../src/cli/untrack.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,uCAAuC,CAAC;AAQ/C,QAAA,MAAM,cAAc,qDAyCnB,CAAC;AAEF,eAAe,cAAc,CAAC"}