@take-out/cli 0.0.39

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 (331) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +274 -0
  3. package/cli.mjs +3 -0
  4. package/dist/cjs/cli.cjs +71 -0
  5. package/dist/cjs/cli.js +70 -0
  6. package/dist/cjs/cli.js.map +6 -0
  7. package/dist/cjs/cli.native.js +79 -0
  8. package/dist/cjs/cli.native.js.map +6 -0
  9. package/dist/cjs/commands/changed.cjs +212 -0
  10. package/dist/cjs/commands/changed.js +214 -0
  11. package/dist/cjs/commands/changed.js.map +6 -0
  12. package/dist/cjs/commands/changed.native.js +289 -0
  13. package/dist/cjs/commands/changed.native.js.map +6 -0
  14. package/dist/cjs/commands/docs.cjs +388 -0
  15. package/dist/cjs/commands/docs.js +313 -0
  16. package/dist/cjs/commands/docs.js.map +6 -0
  17. package/dist/cjs/commands/docs.native.js +476 -0
  18. package/dist/cjs/commands/docs.native.js.map +6 -0
  19. package/dist/cjs/commands/env-setup.cjs +90 -0
  20. package/dist/cjs/commands/env-setup.js +78 -0
  21. package/dist/cjs/commands/env-setup.js.map +6 -0
  22. package/dist/cjs/commands/env-setup.native.js +85 -0
  23. package/dist/cjs/commands/env-setup.native.js.map +6 -0
  24. package/dist/cjs/commands/onboard.cjs +479 -0
  25. package/dist/cjs/commands/onboard.js +631 -0
  26. package/dist/cjs/commands/onboard.js.map +6 -0
  27. package/dist/cjs/commands/onboard.native.js +608 -0
  28. package/dist/cjs/commands/onboard.native.js.map +6 -0
  29. package/dist/cjs/commands/run.cjs +148 -0
  30. package/dist/cjs/commands/run.js +116 -0
  31. package/dist/cjs/commands/run.js.map +6 -0
  32. package/dist/cjs/commands/run.native.js +140 -0
  33. package/dist/cjs/commands/run.native.js.map +6 -0
  34. package/dist/cjs/commands/script.cjs +379 -0
  35. package/dist/cjs/commands/script.js +339 -0
  36. package/dist/cjs/commands/script.js.map +6 -0
  37. package/dist/cjs/commands/script.native.js +449 -0
  38. package/dist/cjs/commands/script.native.js.map +6 -0
  39. package/dist/cjs/commands/sync.cjs +190 -0
  40. package/dist/cjs/commands/sync.js +168 -0
  41. package/dist/cjs/commands/sync.js.map +6 -0
  42. package/dist/cjs/commands/sync.native.js +211 -0
  43. package/dist/cjs/commands/sync.native.js.map +6 -0
  44. package/dist/cjs/constants/ascii.cjs +36 -0
  45. package/dist/cjs/constants/ascii.js +30 -0
  46. package/dist/cjs/constants/ascii.js.map +6 -0
  47. package/dist/cjs/constants/ascii.native.js +36 -0
  48. package/dist/cjs/constants/ascii.native.js.map +6 -0
  49. package/dist/cjs/index.cjs +64 -0
  50. package/dist/cjs/index.js +55 -0
  51. package/dist/cjs/index.js.map +6 -0
  52. package/dist/cjs/index.native.js +94 -0
  53. package/dist/cjs/index.native.js.map +6 -0
  54. package/dist/cjs/types.cjs +16 -0
  55. package/dist/cjs/types.js +14 -0
  56. package/dist/cjs/types.js.map +6 -0
  57. package/dist/cjs/types.native.js +15 -0
  58. package/dist/cjs/types.native.js.map +6 -0
  59. package/dist/cjs/utils/env-categories.cjs +272 -0
  60. package/dist/cjs/utils/env-categories.js +296 -0
  61. package/dist/cjs/utils/env-categories.js.map +6 -0
  62. package/dist/cjs/utils/env-categories.native.js +317 -0
  63. package/dist/cjs/utils/env-categories.native.js.map +6 -0
  64. package/dist/cjs/utils/env-setup.cjs +181 -0
  65. package/dist/cjs/utils/env-setup.js +190 -0
  66. package/dist/cjs/utils/env-setup.js.map +6 -0
  67. package/dist/cjs/utils/env-setup.native.js +264 -0
  68. package/dist/cjs/utils/env-setup.native.js.map +6 -0
  69. package/dist/cjs/utils/env.cjs +118 -0
  70. package/dist/cjs/utils/env.js +97 -0
  71. package/dist/cjs/utils/env.js.map +6 -0
  72. package/dist/cjs/utils/env.native.js +128 -0
  73. package/dist/cjs/utils/env.native.js.map +6 -0
  74. package/dist/cjs/utils/files.cjs +215 -0
  75. package/dist/cjs/utils/files.js +164 -0
  76. package/dist/cjs/utils/files.js.map +6 -0
  77. package/dist/cjs/utils/files.native.js +266 -0
  78. package/dist/cjs/utils/files.native.js.map +6 -0
  79. package/dist/cjs/utils/parallel-runner.cjs +99 -0
  80. package/dist/cjs/utils/parallel-runner.js +84 -0
  81. package/dist/cjs/utils/parallel-runner.js.map +6 -0
  82. package/dist/cjs/utils/parallel-runner.native.js +123 -0
  83. package/dist/cjs/utils/parallel-runner.native.js.map +6 -0
  84. package/dist/cjs/utils/ports.cjs +101 -0
  85. package/dist/cjs/utils/ports.js +81 -0
  86. package/dist/cjs/utils/ports.js.map +6 -0
  87. package/dist/cjs/utils/ports.native.js +130 -0
  88. package/dist/cjs/utils/ports.native.js.map +6 -0
  89. package/dist/cjs/utils/prerequisites.cjs +119 -0
  90. package/dist/cjs/utils/prerequisites.js +107 -0
  91. package/dist/cjs/utils/prerequisites.js.map +6 -0
  92. package/dist/cjs/utils/prerequisites.native.js +127 -0
  93. package/dist/cjs/utils/prerequisites.native.js.map +6 -0
  94. package/dist/cjs/utils/prompts.cjs +161 -0
  95. package/dist/cjs/utils/prompts.js +162 -0
  96. package/dist/cjs/utils/prompts.js.map +6 -0
  97. package/dist/cjs/utils/prompts.native.js +179 -0
  98. package/dist/cjs/utils/prompts.native.js.map +6 -0
  99. package/dist/cjs/utils/script-listing.cjs +113 -0
  100. package/dist/cjs/utils/script-listing.js +108 -0
  101. package/dist/cjs/utils/script-listing.js.map +6 -0
  102. package/dist/cjs/utils/script-listing.native.js +174 -0
  103. package/dist/cjs/utils/script-listing.native.js.map +6 -0
  104. package/dist/cjs/utils/sync.cjs +85 -0
  105. package/dist/cjs/utils/sync.js +70 -0
  106. package/dist/cjs/utils/sync.js.map +6 -0
  107. package/dist/cjs/utils/sync.native.js +84 -0
  108. package/dist/cjs/utils/sync.native.js.map +6 -0
  109. package/dist/cjs/utils/welcome.cjs +50 -0
  110. package/dist/cjs/utils/welcome.js +42 -0
  111. package/dist/cjs/utils/welcome.js.map +6 -0
  112. package/dist/cjs/utils/welcome.native.js +47 -0
  113. package/dist/cjs/utils/welcome.native.js.map +6 -0
  114. package/dist/esm/cli.js +79 -0
  115. package/dist/esm/cli.js.map +6 -0
  116. package/dist/esm/cli.mjs +71 -0
  117. package/dist/esm/cli.mjs.map +1 -0
  118. package/dist/esm/cli.native.js +69 -0
  119. package/dist/esm/cli.native.js.map +1 -0
  120. package/dist/esm/commands/changed.js +194 -0
  121. package/dist/esm/commands/changed.js.map +6 -0
  122. package/dist/esm/commands/changed.mjs +178 -0
  123. package/dist/esm/commands/changed.mjs.map +1 -0
  124. package/dist/esm/commands/changed.native.js +273 -0
  125. package/dist/esm/commands/changed.native.js.map +1 -0
  126. package/dist/esm/commands/docs.js +306 -0
  127. package/dist/esm/commands/docs.js.map +6 -0
  128. package/dist/esm/commands/docs.mjs +353 -0
  129. package/dist/esm/commands/docs.mjs.map +1 -0
  130. package/dist/esm/commands/docs.native.js +516 -0
  131. package/dist/esm/commands/docs.native.js.map +1 -0
  132. package/dist/esm/commands/env-setup.js +56 -0
  133. package/dist/esm/commands/env-setup.js.map +6 -0
  134. package/dist/esm/commands/env-setup.mjs +56 -0
  135. package/dist/esm/commands/env-setup.mjs.map +1 -0
  136. package/dist/esm/commands/env-setup.native.js +59 -0
  137. package/dist/esm/commands/env-setup.native.js.map +1 -0
  138. package/dist/esm/commands/onboard.js +645 -0
  139. package/dist/esm/commands/onboard.js.map +6 -0
  140. package/dist/esm/commands/onboard.mjs +445 -0
  141. package/dist/esm/commands/onboard.mjs.map +1 -0
  142. package/dist/esm/commands/onboard.native.js +584 -0
  143. package/dist/esm/commands/onboard.native.js.map +1 -0
  144. package/dist/esm/commands/run.js +95 -0
  145. package/dist/esm/commands/run.js.map +6 -0
  146. package/dist/esm/commands/run.mjs +114 -0
  147. package/dist/esm/commands/run.mjs.map +1 -0
  148. package/dist/esm/commands/run.native.js +133 -0
  149. package/dist/esm/commands/run.native.js.map +1 -0
  150. package/dist/esm/commands/script.js +338 -0
  151. package/dist/esm/commands/script.js.map +6 -0
  152. package/dist/esm/commands/script.mjs +336 -0
  153. package/dist/esm/commands/script.mjs.map +1 -0
  154. package/dist/esm/commands/script.native.js +445 -0
  155. package/dist/esm/commands/script.native.js.map +1 -0
  156. package/dist/esm/commands/sync.js +158 -0
  157. package/dist/esm/commands/sync.js.map +6 -0
  158. package/dist/esm/commands/sync.mjs +155 -0
  159. package/dist/esm/commands/sync.mjs.map +1 -0
  160. package/dist/esm/commands/sync.native.js +173 -0
  161. package/dist/esm/commands/sync.native.js.map +1 -0
  162. package/dist/esm/constants/ascii.js +14 -0
  163. package/dist/esm/constants/ascii.js.map +6 -0
  164. package/dist/esm/constants/ascii.mjs +12 -0
  165. package/dist/esm/constants/ascii.mjs.map +1 -0
  166. package/dist/esm/constants/ascii.native.js +12 -0
  167. package/dist/esm/constants/ascii.native.js.map +1 -0
  168. package/dist/esm/index.js +83 -0
  169. package/dist/esm/index.js.map +6 -0
  170. package/dist/esm/index.mjs +7 -0
  171. package/dist/esm/index.mjs.map +1 -0
  172. package/dist/esm/index.native.js +7 -0
  173. package/dist/esm/index.native.js.map +1 -0
  174. package/dist/esm/types.js +1 -0
  175. package/dist/esm/types.js.map +6 -0
  176. package/dist/esm/types.mjs +2 -0
  177. package/dist/esm/types.mjs.map +1 -0
  178. package/dist/esm/types.native.js +2 -0
  179. package/dist/esm/types.native.js.map +1 -0
  180. package/dist/esm/utils/env-categories.js +272 -0
  181. package/dist/esm/utils/env-categories.js.map +6 -0
  182. package/dist/esm/utils/env-categories.mjs +233 -0
  183. package/dist/esm/utils/env-categories.mjs.map +1 -0
  184. package/dist/esm/utils/env-categories.native.js +246 -0
  185. package/dist/esm/utils/env-categories.native.js.map +1 -0
  186. package/dist/esm/utils/env-setup.js +173 -0
  187. package/dist/esm/utils/env-setup.js.map +6 -0
  188. package/dist/esm/utils/env-setup.mjs +146 -0
  189. package/dist/esm/utils/env-setup.mjs.map +1 -0
  190. package/dist/esm/utils/env-setup.native.js +243 -0
  191. package/dist/esm/utils/env-setup.native.js.map +1 -0
  192. package/dist/esm/utils/env.js +83 -0
  193. package/dist/esm/utils/env.js.map +6 -0
  194. package/dist/esm/utils/env.mjs +90 -0
  195. package/dist/esm/utils/env.mjs.map +1 -0
  196. package/dist/esm/utils/env.native.js +99 -0
  197. package/dist/esm/utils/env.native.js.map +1 -0
  198. package/dist/esm/utils/files.js +150 -0
  199. package/dist/esm/utils/files.js.map +6 -0
  200. package/dist/esm/utils/files.mjs +187 -0
  201. package/dist/esm/utils/files.mjs.map +1 -0
  202. package/dist/esm/utils/files.native.js +247 -0
  203. package/dist/esm/utils/files.native.js.map +1 -0
  204. package/dist/esm/utils/parallel-runner.js +69 -0
  205. package/dist/esm/utils/parallel-runner.js.map +6 -0
  206. package/dist/esm/utils/parallel-runner.mjs +76 -0
  207. package/dist/esm/utils/parallel-runner.mjs.map +1 -0
  208. package/dist/esm/utils/parallel-runner.native.js +109 -0
  209. package/dist/esm/utils/parallel-runner.native.js.map +1 -0
  210. package/dist/esm/utils/ports.js +65 -0
  211. package/dist/esm/utils/ports.js.map +6 -0
  212. package/dist/esm/utils/ports.mjs +74 -0
  213. package/dist/esm/utils/ports.mjs.map +1 -0
  214. package/dist/esm/utils/ports.native.js +93 -0
  215. package/dist/esm/utils/ports.native.js.map +1 -0
  216. package/dist/esm/utils/prerequisites.js +91 -0
  217. package/dist/esm/utils/prerequisites.js.map +6 -0
  218. package/dist/esm/utils/prerequisites.mjs +91 -0
  219. package/dist/esm/utils/prerequisites.mjs.map +1 -0
  220. package/dist/esm/utils/prerequisites.native.js +97 -0
  221. package/dist/esm/utils/prerequisites.native.js.map +1 -0
  222. package/dist/esm/utils/prompts.js +139 -0
  223. package/dist/esm/utils/prompts.js.map +6 -0
  224. package/dist/esm/utils/prompts.mjs +112 -0
  225. package/dist/esm/utils/prompts.mjs.map +1 -0
  226. package/dist/esm/utils/prompts.native.js +115 -0
  227. package/dist/esm/utils/prompts.native.js.map +1 -0
  228. package/dist/esm/utils/script-listing.js +91 -0
  229. package/dist/esm/utils/script-listing.js.map +6 -0
  230. package/dist/esm/utils/script-listing.mjs +76 -0
  231. package/dist/esm/utils/script-listing.mjs.map +1 -0
  232. package/dist/esm/utils/script-listing.native.js +151 -0
  233. package/dist/esm/utils/script-listing.native.js.map +1 -0
  234. package/dist/esm/utils/sync.js +50 -0
  235. package/dist/esm/utils/sync.js.map +6 -0
  236. package/dist/esm/utils/sync.mjs +48 -0
  237. package/dist/esm/utils/sync.mjs.map +1 -0
  238. package/dist/esm/utils/sync.native.js +53 -0
  239. package/dist/esm/utils/sync.native.js.map +1 -0
  240. package/dist/esm/utils/welcome.js +21 -0
  241. package/dist/esm/utils/welcome.js.map +6 -0
  242. package/dist/esm/utils/welcome.mjs +15 -0
  243. package/dist/esm/utils/welcome.mjs.map +1 -0
  244. package/dist/esm/utils/welcome.native.js +18 -0
  245. package/dist/esm/utils/welcome.native.js.map +1 -0
  246. package/docs/aggregates.md +579 -0
  247. package/docs/cloudflare-dev-tunnel.md +41 -0
  248. package/docs/database.md +203 -0
  249. package/docs/docs.md +8 -0
  250. package/docs/emitters.md +562 -0
  251. package/docs/hot-updater.md +223 -0
  252. package/docs/native-hot-update.md +252 -0
  253. package/docs/one-components.md +234 -0
  254. package/docs/one-hooks.md +570 -0
  255. package/docs/one-routes.md +660 -0
  256. package/docs/package-json.md +115 -0
  257. package/docs/react-native-navigation-flow.md +184 -0
  258. package/docs/scripts.md +147 -0
  259. package/docs/sync-prompt.md +208 -0
  260. package/docs/tamagui.md +478 -0
  261. package/docs/testing-integration.md +564 -0
  262. package/docs/triggers.md +450 -0
  263. package/docs/zero.md +719 -0
  264. package/package.json +76 -0
  265. package/scripts/seed.ts +209 -0
  266. package/src/cli.ts +147 -0
  267. package/src/commands/changed.ts +313 -0
  268. package/src/commands/docs.ts +582 -0
  269. package/src/commands/env-setup.ts +69 -0
  270. package/src/commands/onboard.ts +1391 -0
  271. package/src/commands/run.ts +173 -0
  272. package/src/commands/script.ts +587 -0
  273. package/src/commands/sync.ts +305 -0
  274. package/src/constants/ascii.ts +17 -0
  275. package/src/index.ts +63 -0
  276. package/src/types.ts +59 -0
  277. package/src/utils/env-categories.ts +245 -0
  278. package/src/utils/env-setup.ts +338 -0
  279. package/src/utils/env.ts +127 -0
  280. package/src/utils/files.ts +302 -0
  281. package/src/utils/parallel-runner.ts +129 -0
  282. package/src/utils/ports.ts +77 -0
  283. package/src/utils/prerequisites.ts +137 -0
  284. package/src/utils/prompts.ts +197 -0
  285. package/src/utils/script-listing.ts +214 -0
  286. package/src/utils/sync.ts +101 -0
  287. package/src/withOpSqliteStatic.cjs +51 -0
  288. package/types/cli.d.ts +7 -0
  289. package/types/cli.d.ts.map +1 -0
  290. package/types/commands/changed.d.ts +14 -0
  291. package/types/commands/changed.d.ts.map +1 -0
  292. package/types/commands/docs.d.ts +5 -0
  293. package/types/commands/docs.d.ts.map +1 -0
  294. package/types/commands/env-setup.d.ts +25 -0
  295. package/types/commands/env-setup.d.ts.map +1 -0
  296. package/types/commands/onboard.d.ts +16 -0
  297. package/types/commands/onboard.d.ts.map +1 -0
  298. package/types/commands/run.d.ts +8 -0
  299. package/types/commands/run.d.ts.map +1 -0
  300. package/types/commands/script.d.ts +28 -0
  301. package/types/commands/script.d.ts.map +1 -0
  302. package/types/commands/sync.d.ts +5 -0
  303. package/types/commands/sync.d.ts.map +1 -0
  304. package/types/constants/ascii.d.ts +6 -0
  305. package/types/constants/ascii.d.ts.map +1 -0
  306. package/types/index.d.ts +12 -0
  307. package/types/index.d.ts.map +1 -0
  308. package/types/types.d.ts +54 -0
  309. package/types/types.d.ts.map +1 -0
  310. package/types/utils/env-categories.d.ts +8 -0
  311. package/types/utils/env-categories.d.ts.map +1 -0
  312. package/types/utils/env-setup.d.ts +10 -0
  313. package/types/utils/env-setup.d.ts.map +1 -0
  314. package/types/utils/env.d.ts +19 -0
  315. package/types/utils/env.d.ts.map +1 -0
  316. package/types/utils/files.d.ts +47 -0
  317. package/types/utils/files.d.ts.map +1 -0
  318. package/types/utils/parallel-runner.d.ts +15 -0
  319. package/types/utils/parallel-runner.d.ts.map +1 -0
  320. package/types/utils/ports.d.ts +16 -0
  321. package/types/utils/ports.d.ts.map +1 -0
  322. package/types/utils/prerequisites.d.ts +11 -0
  323. package/types/utils/prerequisites.d.ts.map +1 -0
  324. package/types/utils/prompts.d.ts +30 -0
  325. package/types/utils/prompts.d.ts.map +1 -0
  326. package/types/utils/script-listing.d.ts +7 -0
  327. package/types/utils/script-listing.d.ts.map +1 -0
  328. package/types/utils/sync.d.ts +16 -0
  329. package/types/utils/sync.d.ts.map +1 -0
  330. package/types/utils/welcome.d.ts +6 -0
  331. package/types/utils/welcome.d.ts.map +1 -0
@@ -0,0 +1,449 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: !0 });
10
+ }, __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from == "object" || typeof from == "function")
12
+ for (let key of __getOwnPropNames(from))
13
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ return to;
15
+ };
16
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
+ // If the importer is in node compatibility mode or this is not an ESM
18
+ // file that has been converted to a CommonJS file using a Babel-
19
+ // compatible transform (i.e. "__esModule" has not been set), then set
20
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
22
+ mod
23
+ )), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
24
+ var script_exports = {};
25
+ __export(script_exports, {
26
+ createShorthandCommand: () => createShorthandCommand,
27
+ discoverScripts: () => discoverScripts,
28
+ findScript: () => findScript,
29
+ formatScriptList: () => import_script_listing2.formatScriptList,
30
+ getLocalScriptsDir: () => getLocalScriptsDir,
31
+ getScriptMetadata: () => getScriptMetadata,
32
+ listAllScripts: () => import_script_listing2.listAllScripts,
33
+ listCategoryScripts: () => import_script_listing2.listCategoryScripts,
34
+ scriptCommand: () => scriptCommand
35
+ });
36
+ module.exports = __toCommonJS(script_exports);
37
+ var import_fs = require("fs"), import_os = require("os"), import_path = require("path"), import_url = require("url"), import_citty = require("citty"), import_picocolors = __toESM(require("picocolors"), 1), import_script_listing = require("../utils/script-listing"), import_sync = require("../utils/sync"), import_script_listing2 = require("../utils/script-listing");
38
+ const import_meta = {};
39
+ var CACHE_DIR = (0, import_path.join)((0, import_os.homedir)(), ".takeout"), CACHE_FILE = (0, import_path.join)(CACHE_DIR, "script-cache.json");
40
+ function findScriptsPackageRoot() {
41
+ try {
42
+ var resolved = import_meta.resolve("@take-out/scripts/package.json"), packageJsonPath = (0, import_url.fileURLToPath)(new URL(resolved)), packageRoot = (0, import_path.join)(packageJsonPath, ".."), srcPath = (0, import_path.join)(packageRoot, "src");
43
+ if ((0, import_fs.existsSync)(srcPath))
44
+ return srcPath;
45
+ } catch {
46
+ }
47
+ return null;
48
+ }
49
+ function getLocalScriptsDir() {
50
+ return (0, import_path.join)(process.cwd(), "scripts");
51
+ }
52
+ function extractMetadata(filePath) {
53
+ try {
54
+ var content = (0, import_fs.readFileSync)(filePath, "utf-8"), lines = content.split(`
55
+ `).slice(0, 20), metadata = {}, _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
56
+ try {
57
+ for (var _iterator = lines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
58
+ var line = _step.value, descMatch = line.match(/@description\s+(.+)/);
59
+ descMatch && descMatch[1] && (metadata.description = descMatch[1].trim());
60
+ var argsMatch = line.match(/@args\s+(.+)/);
61
+ argsMatch && argsMatch[1] && (metadata.args = argsMatch[1].split(",").map(function(a) {
62
+ return a.trim();
63
+ }));
64
+ }
65
+ } catch (err) {
66
+ _didIteratorError = !0, _iteratorError = err;
67
+ } finally {
68
+ try {
69
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
70
+ } finally {
71
+ if (_didIteratorError)
72
+ throw _iteratorError;
73
+ }
74
+ }
75
+ var stat = (0, import_fs.statSync)(filePath);
76
+ return metadata.mtime = stat.mtimeMs, metadata;
77
+ } catch {
78
+ return {};
79
+ }
80
+ }
81
+ function loadCache() {
82
+ try {
83
+ if ((0, import_fs.existsSync)(CACHE_FILE))
84
+ return JSON.parse((0, import_fs.readFileSync)(CACHE_FILE, "utf-8"));
85
+ } catch {
86
+ }
87
+ return {};
88
+ }
89
+ function saveCache(cache) {
90
+ try {
91
+ (0, import_fs.existsSync)(CACHE_DIR) || (0, import_fs.mkdirSync)(CACHE_DIR, {
92
+ recursive: !0
93
+ }), (0, import_fs.writeFileSync)(CACHE_FILE, JSON.stringify(cache, null, 2));
94
+ } catch {
95
+ }
96
+ }
97
+ function getScriptMetadata(filePath) {
98
+ var cache = loadCache(), stat = (0, import_fs.statSync)(filePath);
99
+ if (cache[filePath] && cache[filePath].mtime === stat.mtimeMs)
100
+ return cache[filePath];
101
+ var metadata = extractMetadata(filePath);
102
+ return cache[filePath] = metadata, saveCache(cache), metadata;
103
+ }
104
+ function discoverScripts(dir) {
105
+ var baseDir = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : dir, depth = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0, maxDepth = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 1, scripts = /* @__PURE__ */ new Map();
106
+ if (!(0, import_fs.existsSync)(dir))
107
+ return scripts;
108
+ try {
109
+ var entries = (0, import_fs.readdirSync)(dir), _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
110
+ try {
111
+ for (var _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
112
+ var entry = _step.value, fullPath = (0, import_path.join)(dir, entry), stat = (0, import_fs.statSync)(fullPath);
113
+ if (stat.isDirectory()) {
114
+ if (entry === "helpers" || depth >= maxDepth)
115
+ continue;
116
+ var subScripts = discoverScripts(fullPath, baseDir, depth + 1, maxDepth), _iteratorNormalCompletion1 = !0, _didIteratorError1 = !1, _iteratorError1 = void 0;
117
+ try {
118
+ for (var _iterator1 = subScripts[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = !0) {
119
+ var [name, path] = _step1.value;
120
+ scripts.set(name, path);
121
+ }
122
+ } catch (err) {
123
+ _didIteratorError1 = !0, _iteratorError1 = err;
124
+ } finally {
125
+ try {
126
+ !_iteratorNormalCompletion1 && _iterator1.return != null && _iterator1.return();
127
+ } finally {
128
+ if (_didIteratorError1)
129
+ throw _iteratorError1;
130
+ }
131
+ }
132
+ } else if (entry.endsWith(".ts") || entry.endsWith(".js")) {
133
+ var relativePath = (0, import_path.relative)(baseDir, fullPath).split("\\").join("/"), scriptName = relativePath.replace(/\.(ts|js)$/, "");
134
+ scripts.set(scriptName, fullPath);
135
+ }
136
+ }
137
+ } catch (err) {
138
+ _didIteratorError = !0, _iteratorError = err;
139
+ } finally {
140
+ try {
141
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
142
+ } finally {
143
+ if (_didIteratorError)
144
+ throw _iteratorError;
145
+ }
146
+ }
147
+ } catch {
148
+ }
149
+ return scripts;
150
+ }
151
+ function findScript(name) {
152
+ for (var normalizedName = name.replace(/:/g, "/"), localDir = getLocalScriptsDir(), _i = 0, _iter = [
153
+ ".ts",
154
+ ".js",
155
+ ""
156
+ ]; _i < _iter.length; _i++) {
157
+ var ext = _iter[_i], localPath = (0, import_path.join)(localDir, `${normalizedName}${ext}`);
158
+ if ((0, import_fs.existsSync)(localPath))
159
+ return localPath;
160
+ }
161
+ var builtInDir = findScriptsPackageRoot();
162
+ if (builtInDir)
163
+ for (var _i1 = 0, _iter1 = [
164
+ ".ts",
165
+ ".js",
166
+ ""
167
+ ]; _i1 < _iter1.length; _i1++) {
168
+ var ext1 = _iter1[_i1], builtInPath = (0, import_path.join)(builtInDir, `${normalizedName}${ext1}`);
169
+ if ((0, import_fs.existsSync)(builtInPath))
170
+ return builtInPath;
171
+ }
172
+ return null;
173
+ }
174
+ async function runScript(scriptPath, args) {
175
+ console.info(import_picocolors.default.dim(`Running: ${(0, import_path.relative)(process.cwd(), scriptPath)}`)), console.info();
176
+ try {
177
+ var { $ } = await import("bun");
178
+ await $`bun ${scriptPath} ${args}`;
179
+ } catch (err) {
180
+ console.error(import_picocolors.default.red(`\u2717 Error running script: ${err}`)), process.exit(1);
181
+ }
182
+ }
183
+ var newCommand = (0, import_citty.defineCommand)({
184
+ meta: {
185
+ name: "new",
186
+ description: "Create a new script from template"
187
+ },
188
+ args: {
189
+ path: {
190
+ type: "positional",
191
+ description: "Path for the new script (e.g., ci/test)",
192
+ required: !0
193
+ }
194
+ },
195
+ async run(param) {
196
+ var { args } = param, scriptPath = args.path, localDir = getLocalScriptsDir(), fullPath = (0, import_path.join)(localDir, `${scriptPath}.ts`), dir = (0, import_path.dirname)(fullPath);
197
+ (0, import_fs.existsSync)(dir) || (0, import_fs.mkdirSync)(dir, {
198
+ recursive: !0
199
+ }), (0, import_fs.existsSync)(fullPath) && (console.error(import_picocolors.default.red(`\u2717 Script already exists: ${(0, import_path.relative)(process.cwd(), fullPath)}`)), process.exit(1));
200
+ var template = `#!/usr/bin/env bun
201
+
202
+ /**
203
+ * @description TODO: Add description
204
+ * @args --verbose, --dry-run
205
+ */
206
+
207
+ import { parseArgs } from 'node:util'
208
+
209
+ const { values } = parseArgs({
210
+ args: process.argv.slice(2),
211
+ options: {
212
+ verbose: {
213
+ type: 'boolean',
214
+ short: 'v',
215
+ },
216
+ 'dry-run': {
217
+ type: 'boolean',
218
+ },
219
+ },
220
+ })
221
+
222
+ async function main() {
223
+ console.info('Running ${(0, import_path.basename)(scriptPath)}...')
224
+
225
+ if (values.verbose) {
226
+ console.info('Verbose mode enabled')
227
+ }
228
+
229
+ if (values['dry-run']) {
230
+ console.info('Dry run mode - no changes will be made')
231
+ }
232
+
233
+ // TODO: Implement your script logic here
234
+ }
235
+
236
+ main().catch(console.error)
237
+ `;
238
+ (0, import_fs.writeFileSync)(fullPath, template), console.info(import_picocolors.default.green(`\u2713 Created new script: ${(0, import_path.relative)(process.cwd(), fullPath)}`)), console.info(), console.info(import_picocolors.default.dim("Edit the script and update the TODO sections"));
239
+ }
240
+ });
241
+ function getAllScriptFiles(dir) {
242
+ var baseDir = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : dir, files = [];
243
+ if (!(0, import_fs.existsSync)(dir))
244
+ return files;
245
+ try {
246
+ var entries = (0, import_fs.readdirSync)(dir), _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
247
+ try {
248
+ for (var _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
249
+ var entry = _step.value, fullPath = (0, import_path.join)(dir, entry), stat = (0, import_fs.statSync)(fullPath);
250
+ stat.isDirectory() ? files.push(...getAllScriptFiles(fullPath, baseDir)) : (entry.endsWith(".ts") || entry.endsWith(".js") || entry.endsWith(".cjs")) && files.push((0, import_path.relative)(baseDir, fullPath).split("\\").join("/"));
251
+ }
252
+ } catch (err) {
253
+ _didIteratorError = !0, _iteratorError = err;
254
+ } finally {
255
+ try {
256
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
257
+ } finally {
258
+ if (_didIteratorError)
259
+ throw _iteratorError;
260
+ }
261
+ }
262
+ } catch {
263
+ }
264
+ return files;
265
+ }
266
+ var ejectCommand = (0, import_citty.defineCommand)({
267
+ meta: {
268
+ name: "eject",
269
+ description: "Eject built-in scripts into your project"
270
+ },
271
+ args: {
272
+ yes: {
273
+ type: "boolean",
274
+ description: "Skip confirmations and eject all files",
275
+ default: !1
276
+ }
277
+ },
278
+ async run(param) {
279
+ var { args } = param, cwd = process.cwd(), targetScriptsDir = (0, import_path.join)(cwd, "scripts"), sourceScriptsDir = findScriptsPackageRoot();
280
+ console.info(), console.info(import_picocolors.default.bold(import_picocolors.default.cyan("\u2699\uFE0F Eject Scripts"))), console.info(), sourceScriptsDir || (console.error(import_picocolors.default.red("\u2717 Built-in scripts package (@take-out/scripts) not found or not installed")), console.info(), console.info(import_picocolors.default.dim("Install with: bun add -d @take-out/scripts")), process.exit(1)), console.info(import_picocolors.default.dim(`Source: ${sourceScriptsDir}`)), console.info(import_picocolors.default.dim(`Target: ${targetScriptsDir}`)), console.info(), (0, import_fs.existsSync)(targetScriptsDir) || (console.info(import_picocolors.default.yellow("\u26A0 Target scripts directory does not exist, will create it")), (0, import_fs.mkdirSync)(targetScriptsDir, {
281
+ recursive: !0
282
+ }));
283
+ var sourceFiles = getAllScriptFiles(sourceScriptsDir);
284
+ if (sourceFiles.length === 0) {
285
+ console.info(import_picocolors.default.yellow("No script files found in built-in scripts package"));
286
+ return;
287
+ }
288
+ var filesToSync = [], stats = {
289
+ new: 0,
290
+ modified: 0,
291
+ identical: 0
292
+ }, _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
293
+ try {
294
+ for (var _iterator = sourceFiles[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
295
+ var file = _step.value, sourcePath = (0, import_path.join)(sourceScriptsDir, file), targetPath = (0, import_path.join)(targetScriptsDir, file), status = (0, import_sync.compareFiles)(sourcePath, targetPath);
296
+ stats[status]++, filesToSync.push({
297
+ name: file,
298
+ sourcePath,
299
+ targetPath,
300
+ status,
301
+ sourceSize: (0, import_sync.getFileSize)(sourcePath),
302
+ targetSize: (0, import_sync.getFileSize)(targetPath)
303
+ });
304
+ }
305
+ } catch (err) {
306
+ _didIteratorError = !0, _iteratorError = err;
307
+ } finally {
308
+ try {
309
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
310
+ } finally {
311
+ if (_didIteratorError)
312
+ throw _iteratorError;
313
+ }
314
+ }
315
+ if (console.info(import_picocolors.default.bold("Summary:")), console.info(` ${import_picocolors.default.green(`${stats.new} new`)}`), console.info(` ${import_picocolors.default.yellow(`${stats.modified} modified`)}`), console.info(` ${import_picocolors.default.dim(`${stats.identical} identical`)}`), console.info(), stats.new === 0 && stats.modified === 0) {
316
+ console.info(import_picocolors.default.green("\u2713 All scripts are already up to date!"));
317
+ return;
318
+ }
319
+ var sortOrder = {
320
+ new: 0,
321
+ modified: 1,
322
+ identical: 2
323
+ };
324
+ filesToSync.sort(function(a, b) {
325
+ return sortOrder[a.status] - sortOrder[b.status];
326
+ });
327
+ var syncedCount = 0, _iteratorNormalCompletion1 = !0, _didIteratorError1 = !1, _iteratorError1 = void 0;
328
+ try {
329
+ for (var _iterator1 = filesToSync[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = !0) {
330
+ var file1 = _step1.value;
331
+ if (args.yes && file1.status !== "identical") {
332
+ var targetDir = (0, import_path.dirname)(file1.targetPath);
333
+ (0, import_fs.existsSync)(targetDir) || (0, import_fs.mkdirSync)(targetDir, {
334
+ recursive: !0
335
+ });
336
+ var content = (0, import_fs.readFileSync)(file1.sourcePath);
337
+ (0, import_fs.writeFileSync)(file1.targetPath, content), console.info(import_picocolors.default.green(` \u2713 ${file1.name}`)), syncedCount++;
338
+ } else {
339
+ var wasSynced = await (0, import_sync.syncFileWithConfirmation)(file1);
340
+ wasSynced && syncedCount++;
341
+ }
342
+ }
343
+ } catch (err) {
344
+ _didIteratorError1 = !0, _iteratorError1 = err;
345
+ } finally {
346
+ try {
347
+ !_iteratorNormalCompletion1 && _iterator1.return != null && _iterator1.return();
348
+ } finally {
349
+ if (_didIteratorError1)
350
+ throw _iteratorError1;
351
+ }
352
+ }
353
+ console.info(), console.info(import_picocolors.default.bold(import_picocolors.default.green(`\u2713 Complete: ${syncedCount} file(s) ejected`))), console.info();
354
+ }
355
+ }), runSubCommand = (0, import_citty.defineCommand)({
356
+ meta: {
357
+ name: "run",
358
+ description: "Run a script (for backwards compatibility)"
359
+ },
360
+ args: {
361
+ name: {
362
+ type: "positional",
363
+ description: "Script name",
364
+ required: !0
365
+ }
366
+ },
367
+ async run(param) {
368
+ var { args, rawArgs } = param, scriptPath = findScript(args.name);
369
+ scriptPath || (console.error(import_picocolors.default.red(`\u2717 Script not found: ${args.name}`)), console.info(), console.info(import_picocolors.default.dim("Run 'tko script' to see available scripts")), process.exit(1));
370
+ var scriptArgs = rawArgs.slice(rawArgs.indexOf(args.name) + 1);
371
+ await runScript(scriptPath, scriptArgs);
372
+ }
373
+ }), scriptCommand = (0, import_citty.defineCommand)({
374
+ meta: {
375
+ name: "script",
376
+ description: "Hybrid script runner with filesystem discovery"
377
+ },
378
+ args: {
379
+ name: {
380
+ type: "positional",
381
+ description: "Script name or category to run/list",
382
+ required: !1
383
+ }
384
+ },
385
+ subCommands: {
386
+ new: newCommand,
387
+ run: runSubCommand,
388
+ eject: ejectCommand
389
+ },
390
+ async run(param) {
391
+ var { args, rawArgs } = param, scriptName = args.name || rawArgs[1];
392
+ if (!scriptName) {
393
+ (0, import_script_listing.listAllScripts)(!1);
394
+ return;
395
+ }
396
+ if (!(0, import_script_listing.listCategoryScripts)(scriptName)) {
397
+ var scriptPath = findScript(scriptName);
398
+ scriptPath || (console.error(import_picocolors.default.red(`\u2717 Script not found: ${scriptName}`)), console.info(), console.info(import_picocolors.default.dim("Run 'tko script' to see available scripts")), process.exit(1));
399
+ var scriptArgs = rawArgs.slice(rawArgs.indexOf(scriptName) + 1);
400
+ await runScript(scriptPath, scriptArgs);
401
+ }
402
+ }
403
+ });
404
+ function createShorthandCommand(name) {
405
+ return (0, import_citty.defineCommand)({
406
+ meta: {
407
+ name,
408
+ description: "Run script directly"
409
+ },
410
+ args: {
411
+ args: {
412
+ type: "positional",
413
+ description: "Script and arguments",
414
+ required: !1
415
+ }
416
+ },
417
+ async run(param) {
418
+ var { rawArgs } = param, scriptName = rawArgs.length > 0 ? `${name}/${rawArgs[0]}` : name, scriptArgs = rawArgs.length > 0 ? [
419
+ "script",
420
+ scriptName,
421
+ ...rawArgs.slice(1)
422
+ ] : [
423
+ "script",
424
+ name
425
+ ], { run } = scriptCommand;
426
+ run && await run({
427
+ args: {
428
+ name: scriptName,
429
+ _: rawArgs.slice(1)
430
+ },
431
+ rawArgs: scriptArgs,
432
+ cmd: scriptCommand
433
+ });
434
+ }
435
+ });
436
+ }
437
+ // Annotate the CommonJS export names for ESM import in node:
438
+ 0 && (module.exports = {
439
+ createShorthandCommand,
440
+ discoverScripts,
441
+ findScript,
442
+ formatScriptList,
443
+ getLocalScriptsDir,
444
+ getScriptMetadata,
445
+ listAllScripts,
446
+ listCategoryScripts,
447
+ scriptCommand
448
+ });
449
+ //# sourceMappingURL=script.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/commands/script.ts"],
4
+ "mappings": "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",
5
+ "names": ["import_script_listing", "pc"]
6
+ }
@@ -0,0 +1,190 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf,
6
+ __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
26
+ value: mod,
27
+ enumerable: !0
28
+ }) : target, mod)),
29
+ __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
30
+ value: !0
31
+ }), mod);
32
+ var sync_exports = {};
33
+ __export(sync_exports, {
34
+ syncCommand: () => syncCommand
35
+ });
36
+ module.exports = __toCommonJS(sync_exports);
37
+ var import_node_child_process = require("node:child_process"),
38
+ import_node_fs = require("node:fs"),
39
+ import_node_os = require("node:os"),
40
+ import_node_path = require("node:path"),
41
+ import_node_url = require("node:url"),
42
+ import_citty = require("citty"),
43
+ import_picocolors = __toESM(require("picocolors"), 1),
44
+ import_prompts = require("../utils/prompts.cjs");
45
+ const import_meta = {},
46
+ UPSTREAM_REPO = "tamagui/takeout3",
47
+ UPSTREAM_REMOTE = "takeout-upstream",
48
+ TAKEOUT_FILE = ".takeout";
49
+ function getSyncPrompt() {
50
+ try {
51
+ let packageRoot = (0, import_node_path.dirname)((0, import_node_url.fileURLToPath)(import_meta.url));
52
+ for (; packageRoot !== (0, import_node_path.parse)(packageRoot).root;) {
53
+ const pkgPath = (0, import_node_path.join)(packageRoot, "package.json");
54
+ if ((0, import_node_fs.existsSync)(pkgPath) && JSON.parse((0, import_node_fs.readFileSync)(pkgPath, "utf-8")).name === "@take-out/cli") break;
55
+ packageRoot = (0, import_node_path.dirname)(packageRoot);
56
+ }
57
+ const promptPath = (0, import_node_path.join)(packageRoot, "docs", "sync-prompt.md");
58
+ return (0, import_node_fs.readFileSync)(promptPath, "utf-8");
59
+ } catch (error) {
60
+ throw new Error(`Could not load sync prompt: ${error instanceof Error ? error.message : "Unknown error"}`);
61
+ }
62
+ }
63
+ function checkToolAvailable(command) {
64
+ try {
65
+ const checkCmd = process.platform === "win32" ? "where" : "which";
66
+ return (0, import_node_child_process.spawnSync)(checkCmd, [command]).status === 0;
67
+ } catch {
68
+ return !1;
69
+ }
70
+ }
71
+ function ensureUpstreamRemote() {
72
+ try {
73
+ return (0, import_node_child_process.execSync)("git remote", {
74
+ encoding: "utf-8"
75
+ }).includes(UPSTREAM_REMOTE) || (0, import_node_child_process.execSync)(`git remote add ${UPSTREAM_REMOTE} git@github.com:${UPSTREAM_REPO}.git`, {
76
+ stdio: "pipe"
77
+ }), (0, import_node_child_process.execSync)(`git fetch ${UPSTREAM_REMOTE} --quiet`, {
78
+ stdio: "pipe"
79
+ }), !0;
80
+ } catch {
81
+ return !1;
82
+ }
83
+ }
84
+ function getUpstreamHeadSha() {
85
+ try {
86
+ return (0, import_node_child_process.execSync)(`git rev-parse ${UPSTREAM_REMOTE}/main`, {
87
+ encoding: "utf-8"
88
+ }).trim();
89
+ } catch {
90
+ return null;
91
+ }
92
+ }
93
+ function writeTakeoutConfig(sha) {
94
+ const configPath = (0, import_node_path.join)(process.cwd(), TAKEOUT_FILE),
95
+ date = (/* @__PURE__ */new Date()).toISOString().split("T")[0],
96
+ content = `# takeout sync tracking file
97
+ # this file tracks the last synced commit from upstream takeout
98
+ sha=${sha}
99
+ date=${date}
100
+ `;
101
+ (0, import_node_fs.writeFileSync)(configPath, content);
102
+ }
103
+ const syncCommand = (0, import_citty.defineCommand)({
104
+ meta: {
105
+ name: "sync",
106
+ description: "Sync your fork with the latest Takeout repository"
107
+ },
108
+ async run() {
109
+ (0, import_prompts.showStep)("Takeout Repository Sync"), console.info(), (0, import_prompts.showInfo)("Takeout sync uses AI to intelligently merge upstream changes"), console.info(), console.info(import_picocolors.default.gray("How it works:")), console.info(import_picocolors.default.gray(" \u2022 Analyzes commits from upstream Takeout repository")), console.info(import_picocolors.default.gray(" \u2022 Determines which changes are relevant to your fork")), console.info(import_picocolors.default.gray(" \u2022 Applies changes while preserving your customizations")), console.info(import_picocolors.default.gray(" \u2022 Handles package ejection automatically")), console.info(import_picocolors.default.gray(" \u2022 Asks for your input when decisions are needed")), console.info();
110
+ const hasClaudeCode = checkToolAvailable("claude"),
111
+ hasCursor = checkToolAvailable("cursor-agent"),
112
+ hasAider = checkToolAvailable("aider"),
113
+ options = [];
114
+ hasClaudeCode && options.push({
115
+ value: "claude-code",
116
+ label: "Claude Code (recommended)",
117
+ hint: "Run sync automatically with Claude Code CLI"
118
+ }), hasCursor && options.push({
119
+ value: "cursor",
120
+ label: "Cursor Agent",
121
+ hint: "Run sync automatically with Cursor CLI"
122
+ }), hasAider && options.push({
123
+ value: "aider",
124
+ label: "Aider",
125
+ hint: "Run sync automatically with Aider CLI"
126
+ }), options.push({
127
+ value: "show-prompt",
128
+ label: "Show prompt (copy & paste manually)",
129
+ hint: "Display the full prompt to use with any LLM"
130
+ });
131
+ const choice = await (0, import_prompts.promptSelect)("How would you like to sync?", options);
132
+ if (choice === "cancel") {
133
+ console.info(), (0, import_prompts.showInfo)("Sync cancelled");
134
+ return;
135
+ }
136
+ if (console.info(), console.info(import_picocolors.default.dim("Fetching upstream repository...")), !ensureUpstreamRemote()) {
137
+ (0, import_prompts.showError)("Failed to fetch upstream repository");
138
+ return;
139
+ }
140
+ const upstreamSha = getUpstreamHeadSha();
141
+ if (!upstreamSha) {
142
+ (0, import_prompts.showError)("Failed to get upstream HEAD SHA");
143
+ return;
144
+ }
145
+ console.info(import_picocolors.default.dim(`Target SHA: ${upstreamSha.slice(0, 7)}`)), console.info();
146
+ try {
147
+ const prompt = getSyncPrompt();
148
+ if (choice === "show-prompt") console.info(import_picocolors.default.dim("=".repeat(80))), console.info(prompt), console.info(import_picocolors.default.dim("=".repeat(80))), console.info(), (0, import_prompts.showInfo)("Copy the prompt above and paste it into your preferred LLM"), console.info(), console.info(import_picocolors.default.gray("Recommended LLMs:")), console.info(import_picocolors.default.gray(" \u2022 Claude Code (best for complex instructions)")), console.info(import_picocolors.default.gray(" \u2022 ChatGPT")), console.info(import_picocolors.default.gray(" \u2022 Cursor")), console.info(import_picocolors.default.gray(" \u2022 Aider")), console.info();else if (choice === "claude-code") {
149
+ if ((0, import_prompts.showInfo)("Starting Claude Code with sync prompt..."), console.info(), console.info(import_picocolors.default.dim("Note: Claude Code will run in headless mode and make changes automatically.")), console.info(import_picocolors.default.dim("You will be asked to confirm important decisions.")), console.info(), !(await (0, import_prompts.confirmContinue)("Continue with Claude Code?", !0))) {
150
+ (0, import_prompts.showInfo)("Sync cancelled");
151
+ return;
152
+ }
153
+ const tempDir = (0, import_node_fs.mkdtempSync)((0, import_node_path.join)((0, import_node_os.tmpdir)(), "takeout-sync-")),
154
+ promptFile = (0, import_node_path.join)(tempDir, "prompt.md");
155
+ (0, import_node_fs.writeFileSync)(promptFile, prompt);
156
+ const claude = (0, import_node_child_process.spawn)("claude", ["-p", "-"], {
157
+ stdio: ["pipe", "inherit", "inherit"]
158
+ });
159
+ claude.stdin?.write(prompt), claude.stdin?.end(), claude.on("close", code => {
160
+ console.info(), code === 0 ? (writeTakeoutConfig(upstreamSha), (0, import_prompts.showSuccess)("Sync completed successfully!"), console.info(import_picocolors.default.dim(`Updated .takeout to ${upstreamSha.slice(0, 7)}`))) : (0, import_prompts.showError)(`Claude Code exited with code ${code}`);
161
+ });
162
+ } else if (choice === "cursor") {
163
+ if ((0, import_prompts.showInfo)("Starting Cursor Agent with sync prompt..."), console.info(), !(await (0, import_prompts.confirmContinue)("Continue with Cursor?", !0))) {
164
+ (0, import_prompts.showInfo)("Sync cancelled");
165
+ return;
166
+ }
167
+ const cursor = (0, import_node_child_process.spawn)("cursor-agent", ["-p", "-"], {
168
+ stdio: ["pipe", "inherit", "inherit"]
169
+ });
170
+ cursor.stdin?.write(prompt), cursor.stdin?.end(), cursor.on("close", code => {
171
+ console.info(), code === 0 ? (writeTakeoutConfig(upstreamSha), (0, import_prompts.showSuccess)("Sync completed successfully!"), console.info(import_picocolors.default.dim(`Updated .takeout to ${upstreamSha.slice(0, 7)}`))) : (0, import_prompts.showError)(`Cursor Agent exited with code ${code}`);
172
+ });
173
+ } else if (choice === "aider") {
174
+ if ((0, import_prompts.showInfo)("Starting Aider with sync prompt..."), console.info(), !(await (0, import_prompts.confirmContinue)("Continue with Aider?", !0))) {
175
+ (0, import_prompts.showInfo)("Sync cancelled");
176
+ return;
177
+ }
178
+ const tempDir = (0, import_node_fs.mkdtempSync)((0, import_node_path.join)((0, import_node_os.tmpdir)(), "takeout-sync-")),
179
+ promptFile = (0, import_node_path.join)(tempDir, "prompt.md");
180
+ (0, import_node_fs.writeFileSync)(promptFile, prompt), (0, import_node_child_process.spawn)("aider", ["--message-file", promptFile, "--no-stream"], {
181
+ stdio: "inherit"
182
+ }).on("close", code => {
183
+ console.info(), code === 0 ? (writeTakeoutConfig(upstreamSha), (0, import_prompts.showSuccess)("Sync completed successfully!"), console.info(import_picocolors.default.dim(`Updated .takeout to ${upstreamSha.slice(0, 7)}`))) : (0, import_prompts.showError)(`Aider exited with code ${code}`);
184
+ });
185
+ }
186
+ } catch (error) {
187
+ (0, import_prompts.showError)(error instanceof Error ? error.message : "Unknown error");
188
+ }
189
+ }
190
+ });