@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.
- package/LICENSE +21 -0
- package/README.md +274 -0
- package/cli.mjs +3 -0
- package/dist/cjs/cli.cjs +71 -0
- package/dist/cjs/cli.js +70 -0
- package/dist/cjs/cli.js.map +6 -0
- package/dist/cjs/cli.native.js +79 -0
- package/dist/cjs/cli.native.js.map +6 -0
- package/dist/cjs/commands/changed.cjs +212 -0
- package/dist/cjs/commands/changed.js +214 -0
- package/dist/cjs/commands/changed.js.map +6 -0
- package/dist/cjs/commands/changed.native.js +289 -0
- package/dist/cjs/commands/changed.native.js.map +6 -0
- package/dist/cjs/commands/docs.cjs +388 -0
- package/dist/cjs/commands/docs.js +313 -0
- package/dist/cjs/commands/docs.js.map +6 -0
- package/dist/cjs/commands/docs.native.js +476 -0
- package/dist/cjs/commands/docs.native.js.map +6 -0
- package/dist/cjs/commands/env-setup.cjs +90 -0
- package/dist/cjs/commands/env-setup.js +78 -0
- package/dist/cjs/commands/env-setup.js.map +6 -0
- package/dist/cjs/commands/env-setup.native.js +85 -0
- package/dist/cjs/commands/env-setup.native.js.map +6 -0
- package/dist/cjs/commands/onboard.cjs +479 -0
- package/dist/cjs/commands/onboard.js +631 -0
- package/dist/cjs/commands/onboard.js.map +6 -0
- package/dist/cjs/commands/onboard.native.js +608 -0
- package/dist/cjs/commands/onboard.native.js.map +6 -0
- package/dist/cjs/commands/run.cjs +148 -0
- package/dist/cjs/commands/run.js +116 -0
- package/dist/cjs/commands/run.js.map +6 -0
- package/dist/cjs/commands/run.native.js +140 -0
- package/dist/cjs/commands/run.native.js.map +6 -0
- package/dist/cjs/commands/script.cjs +379 -0
- package/dist/cjs/commands/script.js +339 -0
- package/dist/cjs/commands/script.js.map +6 -0
- package/dist/cjs/commands/script.native.js +449 -0
- package/dist/cjs/commands/script.native.js.map +6 -0
- package/dist/cjs/commands/sync.cjs +190 -0
- package/dist/cjs/commands/sync.js +168 -0
- package/dist/cjs/commands/sync.js.map +6 -0
- package/dist/cjs/commands/sync.native.js +211 -0
- package/dist/cjs/commands/sync.native.js.map +6 -0
- package/dist/cjs/constants/ascii.cjs +36 -0
- package/dist/cjs/constants/ascii.js +30 -0
- package/dist/cjs/constants/ascii.js.map +6 -0
- package/dist/cjs/constants/ascii.native.js +36 -0
- package/dist/cjs/constants/ascii.native.js.map +6 -0
- package/dist/cjs/index.cjs +64 -0
- package/dist/cjs/index.js +55 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/index.native.js +94 -0
- package/dist/cjs/index.native.js.map +6 -0
- package/dist/cjs/types.cjs +16 -0
- package/dist/cjs/types.js +14 -0
- package/dist/cjs/types.js.map +6 -0
- package/dist/cjs/types.native.js +15 -0
- package/dist/cjs/types.native.js.map +6 -0
- package/dist/cjs/utils/env-categories.cjs +272 -0
- package/dist/cjs/utils/env-categories.js +296 -0
- package/dist/cjs/utils/env-categories.js.map +6 -0
- package/dist/cjs/utils/env-categories.native.js +317 -0
- package/dist/cjs/utils/env-categories.native.js.map +6 -0
- package/dist/cjs/utils/env-setup.cjs +181 -0
- package/dist/cjs/utils/env-setup.js +190 -0
- package/dist/cjs/utils/env-setup.js.map +6 -0
- package/dist/cjs/utils/env-setup.native.js +264 -0
- package/dist/cjs/utils/env-setup.native.js.map +6 -0
- package/dist/cjs/utils/env.cjs +118 -0
- package/dist/cjs/utils/env.js +97 -0
- package/dist/cjs/utils/env.js.map +6 -0
- package/dist/cjs/utils/env.native.js +128 -0
- package/dist/cjs/utils/env.native.js.map +6 -0
- package/dist/cjs/utils/files.cjs +215 -0
- package/dist/cjs/utils/files.js +164 -0
- package/dist/cjs/utils/files.js.map +6 -0
- package/dist/cjs/utils/files.native.js +266 -0
- package/dist/cjs/utils/files.native.js.map +6 -0
- package/dist/cjs/utils/parallel-runner.cjs +99 -0
- package/dist/cjs/utils/parallel-runner.js +84 -0
- package/dist/cjs/utils/parallel-runner.js.map +6 -0
- package/dist/cjs/utils/parallel-runner.native.js +123 -0
- package/dist/cjs/utils/parallel-runner.native.js.map +6 -0
- package/dist/cjs/utils/ports.cjs +101 -0
- package/dist/cjs/utils/ports.js +81 -0
- package/dist/cjs/utils/ports.js.map +6 -0
- package/dist/cjs/utils/ports.native.js +130 -0
- package/dist/cjs/utils/ports.native.js.map +6 -0
- package/dist/cjs/utils/prerequisites.cjs +119 -0
- package/dist/cjs/utils/prerequisites.js +107 -0
- package/dist/cjs/utils/prerequisites.js.map +6 -0
- package/dist/cjs/utils/prerequisites.native.js +127 -0
- package/dist/cjs/utils/prerequisites.native.js.map +6 -0
- package/dist/cjs/utils/prompts.cjs +161 -0
- package/dist/cjs/utils/prompts.js +162 -0
- package/dist/cjs/utils/prompts.js.map +6 -0
- package/dist/cjs/utils/prompts.native.js +179 -0
- package/dist/cjs/utils/prompts.native.js.map +6 -0
- package/dist/cjs/utils/script-listing.cjs +113 -0
- package/dist/cjs/utils/script-listing.js +108 -0
- package/dist/cjs/utils/script-listing.js.map +6 -0
- package/dist/cjs/utils/script-listing.native.js +174 -0
- package/dist/cjs/utils/script-listing.native.js.map +6 -0
- package/dist/cjs/utils/sync.cjs +85 -0
- package/dist/cjs/utils/sync.js +70 -0
- package/dist/cjs/utils/sync.js.map +6 -0
- package/dist/cjs/utils/sync.native.js +84 -0
- package/dist/cjs/utils/sync.native.js.map +6 -0
- package/dist/cjs/utils/welcome.cjs +50 -0
- package/dist/cjs/utils/welcome.js +42 -0
- package/dist/cjs/utils/welcome.js.map +6 -0
- package/dist/cjs/utils/welcome.native.js +47 -0
- package/dist/cjs/utils/welcome.native.js.map +6 -0
- package/dist/esm/cli.js +79 -0
- package/dist/esm/cli.js.map +6 -0
- package/dist/esm/cli.mjs +71 -0
- package/dist/esm/cli.mjs.map +1 -0
- package/dist/esm/cli.native.js +69 -0
- package/dist/esm/cli.native.js.map +1 -0
- package/dist/esm/commands/changed.js +194 -0
- package/dist/esm/commands/changed.js.map +6 -0
- package/dist/esm/commands/changed.mjs +178 -0
- package/dist/esm/commands/changed.mjs.map +1 -0
- package/dist/esm/commands/changed.native.js +273 -0
- package/dist/esm/commands/changed.native.js.map +1 -0
- package/dist/esm/commands/docs.js +306 -0
- package/dist/esm/commands/docs.js.map +6 -0
- package/dist/esm/commands/docs.mjs +353 -0
- package/dist/esm/commands/docs.mjs.map +1 -0
- package/dist/esm/commands/docs.native.js +516 -0
- package/dist/esm/commands/docs.native.js.map +1 -0
- package/dist/esm/commands/env-setup.js +56 -0
- package/dist/esm/commands/env-setup.js.map +6 -0
- package/dist/esm/commands/env-setup.mjs +56 -0
- package/dist/esm/commands/env-setup.mjs.map +1 -0
- package/dist/esm/commands/env-setup.native.js +59 -0
- package/dist/esm/commands/env-setup.native.js.map +1 -0
- package/dist/esm/commands/onboard.js +645 -0
- package/dist/esm/commands/onboard.js.map +6 -0
- package/dist/esm/commands/onboard.mjs +445 -0
- package/dist/esm/commands/onboard.mjs.map +1 -0
- package/dist/esm/commands/onboard.native.js +584 -0
- package/dist/esm/commands/onboard.native.js.map +1 -0
- package/dist/esm/commands/run.js +95 -0
- package/dist/esm/commands/run.js.map +6 -0
- package/dist/esm/commands/run.mjs +114 -0
- package/dist/esm/commands/run.mjs.map +1 -0
- package/dist/esm/commands/run.native.js +133 -0
- package/dist/esm/commands/run.native.js.map +1 -0
- package/dist/esm/commands/script.js +338 -0
- package/dist/esm/commands/script.js.map +6 -0
- package/dist/esm/commands/script.mjs +336 -0
- package/dist/esm/commands/script.mjs.map +1 -0
- package/dist/esm/commands/script.native.js +445 -0
- package/dist/esm/commands/script.native.js.map +1 -0
- package/dist/esm/commands/sync.js +158 -0
- package/dist/esm/commands/sync.js.map +6 -0
- package/dist/esm/commands/sync.mjs +155 -0
- package/dist/esm/commands/sync.mjs.map +1 -0
- package/dist/esm/commands/sync.native.js +173 -0
- package/dist/esm/commands/sync.native.js.map +1 -0
- package/dist/esm/constants/ascii.js +14 -0
- package/dist/esm/constants/ascii.js.map +6 -0
- package/dist/esm/constants/ascii.mjs +12 -0
- package/dist/esm/constants/ascii.mjs.map +1 -0
- package/dist/esm/constants/ascii.native.js +12 -0
- package/dist/esm/constants/ascii.native.js.map +1 -0
- package/dist/esm/index.js +83 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/index.mjs +7 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +7 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +6 -0
- package/dist/esm/types.mjs +2 -0
- package/dist/esm/types.mjs.map +1 -0
- package/dist/esm/types.native.js +2 -0
- package/dist/esm/types.native.js.map +1 -0
- package/dist/esm/utils/env-categories.js +272 -0
- package/dist/esm/utils/env-categories.js.map +6 -0
- package/dist/esm/utils/env-categories.mjs +233 -0
- package/dist/esm/utils/env-categories.mjs.map +1 -0
- package/dist/esm/utils/env-categories.native.js +246 -0
- package/dist/esm/utils/env-categories.native.js.map +1 -0
- package/dist/esm/utils/env-setup.js +173 -0
- package/dist/esm/utils/env-setup.js.map +6 -0
- package/dist/esm/utils/env-setup.mjs +146 -0
- package/dist/esm/utils/env-setup.mjs.map +1 -0
- package/dist/esm/utils/env-setup.native.js +243 -0
- package/dist/esm/utils/env-setup.native.js.map +1 -0
- package/dist/esm/utils/env.js +83 -0
- package/dist/esm/utils/env.js.map +6 -0
- package/dist/esm/utils/env.mjs +90 -0
- package/dist/esm/utils/env.mjs.map +1 -0
- package/dist/esm/utils/env.native.js +99 -0
- package/dist/esm/utils/env.native.js.map +1 -0
- package/dist/esm/utils/files.js +150 -0
- package/dist/esm/utils/files.js.map +6 -0
- package/dist/esm/utils/files.mjs +187 -0
- package/dist/esm/utils/files.mjs.map +1 -0
- package/dist/esm/utils/files.native.js +247 -0
- package/dist/esm/utils/files.native.js.map +1 -0
- package/dist/esm/utils/parallel-runner.js +69 -0
- package/dist/esm/utils/parallel-runner.js.map +6 -0
- package/dist/esm/utils/parallel-runner.mjs +76 -0
- package/dist/esm/utils/parallel-runner.mjs.map +1 -0
- package/dist/esm/utils/parallel-runner.native.js +109 -0
- package/dist/esm/utils/parallel-runner.native.js.map +1 -0
- package/dist/esm/utils/ports.js +65 -0
- package/dist/esm/utils/ports.js.map +6 -0
- package/dist/esm/utils/ports.mjs +74 -0
- package/dist/esm/utils/ports.mjs.map +1 -0
- package/dist/esm/utils/ports.native.js +93 -0
- package/dist/esm/utils/ports.native.js.map +1 -0
- package/dist/esm/utils/prerequisites.js +91 -0
- package/dist/esm/utils/prerequisites.js.map +6 -0
- package/dist/esm/utils/prerequisites.mjs +91 -0
- package/dist/esm/utils/prerequisites.mjs.map +1 -0
- package/dist/esm/utils/prerequisites.native.js +97 -0
- package/dist/esm/utils/prerequisites.native.js.map +1 -0
- package/dist/esm/utils/prompts.js +139 -0
- package/dist/esm/utils/prompts.js.map +6 -0
- package/dist/esm/utils/prompts.mjs +112 -0
- package/dist/esm/utils/prompts.mjs.map +1 -0
- package/dist/esm/utils/prompts.native.js +115 -0
- package/dist/esm/utils/prompts.native.js.map +1 -0
- package/dist/esm/utils/script-listing.js +91 -0
- package/dist/esm/utils/script-listing.js.map +6 -0
- package/dist/esm/utils/script-listing.mjs +76 -0
- package/dist/esm/utils/script-listing.mjs.map +1 -0
- package/dist/esm/utils/script-listing.native.js +151 -0
- package/dist/esm/utils/script-listing.native.js.map +1 -0
- package/dist/esm/utils/sync.js +50 -0
- package/dist/esm/utils/sync.js.map +6 -0
- package/dist/esm/utils/sync.mjs +48 -0
- package/dist/esm/utils/sync.mjs.map +1 -0
- package/dist/esm/utils/sync.native.js +53 -0
- package/dist/esm/utils/sync.native.js.map +1 -0
- package/dist/esm/utils/welcome.js +21 -0
- package/dist/esm/utils/welcome.js.map +6 -0
- package/dist/esm/utils/welcome.mjs +15 -0
- package/dist/esm/utils/welcome.mjs.map +1 -0
- package/dist/esm/utils/welcome.native.js +18 -0
- package/dist/esm/utils/welcome.native.js.map +1 -0
- package/docs/aggregates.md +579 -0
- package/docs/cloudflare-dev-tunnel.md +41 -0
- package/docs/database.md +203 -0
- package/docs/docs.md +8 -0
- package/docs/emitters.md +562 -0
- package/docs/hot-updater.md +223 -0
- package/docs/native-hot-update.md +252 -0
- package/docs/one-components.md +234 -0
- package/docs/one-hooks.md +570 -0
- package/docs/one-routes.md +660 -0
- package/docs/package-json.md +115 -0
- package/docs/react-native-navigation-flow.md +184 -0
- package/docs/scripts.md +147 -0
- package/docs/sync-prompt.md +208 -0
- package/docs/tamagui.md +478 -0
- package/docs/testing-integration.md +564 -0
- package/docs/triggers.md +450 -0
- package/docs/zero.md +719 -0
- package/package.json +76 -0
- package/scripts/seed.ts +209 -0
- package/src/cli.ts +147 -0
- package/src/commands/changed.ts +313 -0
- package/src/commands/docs.ts +582 -0
- package/src/commands/env-setup.ts +69 -0
- package/src/commands/onboard.ts +1391 -0
- package/src/commands/run.ts +173 -0
- package/src/commands/script.ts +587 -0
- package/src/commands/sync.ts +305 -0
- package/src/constants/ascii.ts +17 -0
- package/src/index.ts +63 -0
- package/src/types.ts +59 -0
- package/src/utils/env-categories.ts +245 -0
- package/src/utils/env-setup.ts +338 -0
- package/src/utils/env.ts +127 -0
- package/src/utils/files.ts +302 -0
- package/src/utils/parallel-runner.ts +129 -0
- package/src/utils/ports.ts +77 -0
- package/src/utils/prerequisites.ts +137 -0
- package/src/utils/prompts.ts +197 -0
- package/src/utils/script-listing.ts +214 -0
- package/src/utils/sync.ts +101 -0
- package/src/withOpSqliteStatic.cjs +51 -0
- package/types/cli.d.ts +7 -0
- package/types/cli.d.ts.map +1 -0
- package/types/commands/changed.d.ts +14 -0
- package/types/commands/changed.d.ts.map +1 -0
- package/types/commands/docs.d.ts +5 -0
- package/types/commands/docs.d.ts.map +1 -0
- package/types/commands/env-setup.d.ts +25 -0
- package/types/commands/env-setup.d.ts.map +1 -0
- package/types/commands/onboard.d.ts +16 -0
- package/types/commands/onboard.d.ts.map +1 -0
- package/types/commands/run.d.ts +8 -0
- package/types/commands/run.d.ts.map +1 -0
- package/types/commands/script.d.ts +28 -0
- package/types/commands/script.d.ts.map +1 -0
- package/types/commands/sync.d.ts +5 -0
- package/types/commands/sync.d.ts.map +1 -0
- package/types/constants/ascii.d.ts +6 -0
- package/types/constants/ascii.d.ts.map +1 -0
- package/types/index.d.ts +12 -0
- package/types/index.d.ts.map +1 -0
- package/types/types.d.ts +54 -0
- package/types/types.d.ts.map +1 -0
- package/types/utils/env-categories.d.ts +8 -0
- package/types/utils/env-categories.d.ts.map +1 -0
- package/types/utils/env-setup.d.ts +10 -0
- package/types/utils/env-setup.d.ts.map +1 -0
- package/types/utils/env.d.ts +19 -0
- package/types/utils/env.d.ts.map +1 -0
- package/types/utils/files.d.ts +47 -0
- package/types/utils/files.d.ts.map +1 -0
- package/types/utils/parallel-runner.d.ts +15 -0
- package/types/utils/parallel-runner.d.ts.map +1 -0
- package/types/utils/ports.d.ts +16 -0
- package/types/utils/ports.d.ts.map +1 -0
- package/types/utils/prerequisites.d.ts +11 -0
- package/types/utils/prerequisites.d.ts.map +1 -0
- package/types/utils/prompts.d.ts +30 -0
- package/types/utils/prompts.d.ts.map +1 -0
- package/types/utils/script-listing.d.ts +7 -0
- package/types/utils/script-listing.d.ts.map +1 -0
- package/types/utils/sync.d.ts +16 -0
- package/types/utils/sync.d.ts.map +1 -0
- package/types/utils/welcome.d.ts +6 -0
- package/types/utils/welcome.d.ts.map +1 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reusable prompt helpers using @clack/prompts
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import * as p from '@clack/prompts'
|
|
6
|
+
import pc from 'picocolors'
|
|
7
|
+
|
|
8
|
+
import type { PortCheck, PrerequisiteCheck } from '../types'
|
|
9
|
+
|
|
10
|
+
export function displayWelcome(projectName = 'Takeout'): void {
|
|
11
|
+
console.info()
|
|
12
|
+
p.intro(pc.bgCyan(pc.black(` ${projectName} Starter Kit `)))
|
|
13
|
+
console.info()
|
|
14
|
+
p.note(
|
|
15
|
+
pc.dim(
|
|
16
|
+
"You can re-run 'bun onboard' anytime to reconfigure or skip to specific steps.\nNo need to decide everything upfront!"
|
|
17
|
+
),
|
|
18
|
+
pc.cyan('Tip')
|
|
19
|
+
)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function displayOutro(message: string): void {
|
|
23
|
+
p.outro(pc.green(message))
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function displayPrerequisites(checks: PrerequisiteCheck[]): void {
|
|
27
|
+
const items = checks.map((check) => {
|
|
28
|
+
const icon = check.installed ? pc.green('✓') : pc.red('✗')
|
|
29
|
+
const message = check.message || ''
|
|
30
|
+
const recommendation = check.recommendation
|
|
31
|
+
? `\n ${pc.dim(check.recommendation)}`
|
|
32
|
+
: ''
|
|
33
|
+
return `${icon} ${pc.bold(check.name)}: ${message}${recommendation}`
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
p.note(items.join('\n'), 'Prerequisites')
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function displayPortConflicts(conflicts: PortCheck[]): void {
|
|
40
|
+
if (conflicts.length === 0) return
|
|
41
|
+
|
|
42
|
+
const items = conflicts.map((conflict) => {
|
|
43
|
+
const pid = conflict.pid ? ` (PID: ${conflict.pid})` : ''
|
|
44
|
+
return `${pc.yellow('⚠')} Port ${conflict.port} (${conflict.name})${pid}`
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
p.note(items.join('\n'), pc.yellow('Port Conflicts Detected'))
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export async function confirmContinue(
|
|
51
|
+
message: string,
|
|
52
|
+
defaultValue = true
|
|
53
|
+
): Promise<boolean> {
|
|
54
|
+
const result = await p.confirm({
|
|
55
|
+
message,
|
|
56
|
+
initialValue: defaultValue,
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
if (p.isCancel(result)) {
|
|
60
|
+
p.cancel('Operation cancelled.')
|
|
61
|
+
process.exit(0)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return result
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export async function promptText(
|
|
68
|
+
message: string,
|
|
69
|
+
defaultValue?: string,
|
|
70
|
+
placeholder?: string
|
|
71
|
+
): Promise<string> {
|
|
72
|
+
const result = await p.text({
|
|
73
|
+
message,
|
|
74
|
+
defaultValue,
|
|
75
|
+
placeholder,
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
if (p.isCancel(result)) {
|
|
79
|
+
p.cancel('Operation cancelled.')
|
|
80
|
+
process.exit(0)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return result
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export async function promptPassword(message: string): Promise<string> {
|
|
87
|
+
const result = await p.password({
|
|
88
|
+
message,
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
if (p.isCancel(result)) {
|
|
92
|
+
p.cancel('Operation cancelled.')
|
|
93
|
+
process.exit(0)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return result
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export async function promptSelect<T extends string>(
|
|
100
|
+
message: string,
|
|
101
|
+
options: { value: T; label: string; hint?: string }[]
|
|
102
|
+
): Promise<T | 'cancel'> {
|
|
103
|
+
const result = await p.select({
|
|
104
|
+
message,
|
|
105
|
+
options: options as any,
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
if (p.isCancel(result)) {
|
|
109
|
+
return 'cancel' as const
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return result as T
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export async function promptStartStep(): Promise<
|
|
116
|
+
'full' | 'prerequisites' | 'identity' | 'ports' | 'eject' | 'production' | 'cancel'
|
|
117
|
+
> {
|
|
118
|
+
console.info()
|
|
119
|
+
console.info(pc.gray('What would you like to do?'))
|
|
120
|
+
console.info()
|
|
121
|
+
|
|
122
|
+
return promptSelect('Select starting point:', [
|
|
123
|
+
{
|
|
124
|
+
value: 'full',
|
|
125
|
+
label: 'Complete setup',
|
|
126
|
+
hint: 'Run through all setup steps',
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
value: 'prerequisites',
|
|
130
|
+
label: 'Check prerequisites',
|
|
131
|
+
hint: 'Verify bun, docker, git, etc.',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
value: 'identity',
|
|
135
|
+
label: 'Project identity',
|
|
136
|
+
hint: 'Customize app name and bundle ID',
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
value: 'ports',
|
|
140
|
+
label: 'Check ports',
|
|
141
|
+
hint: 'Verify required ports are available',
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
value: 'eject',
|
|
145
|
+
label: 'Eject from monorepo',
|
|
146
|
+
hint: 'Remove ./packages, use published versions',
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
value: 'production',
|
|
150
|
+
label: 'Production deployment',
|
|
151
|
+
hint: 'Configure production environment and deployment',
|
|
152
|
+
},
|
|
153
|
+
])
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export async function promptOldSelect<T extends string>(
|
|
157
|
+
message: string,
|
|
158
|
+
options: { value: T; label: string; hint?: string }[]
|
|
159
|
+
): Promise<T> {
|
|
160
|
+
const result = await p.select<string>({
|
|
161
|
+
message,
|
|
162
|
+
options,
|
|
163
|
+
})
|
|
164
|
+
|
|
165
|
+
if (p.isCancel(result)) {
|
|
166
|
+
p.cancel('Operation cancelled.')
|
|
167
|
+
process.exit(0)
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return result as T
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export function showSpinner(message: string): ReturnType<typeof p.spinner> {
|
|
174
|
+
const s = p.spinner()
|
|
175
|
+
s.start(message)
|
|
176
|
+
return s
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export function showError(message: string): void {
|
|
180
|
+
p.log.error(pc.red(message))
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export function showWarning(message: string): void {
|
|
184
|
+
p.log.warning(pc.yellow(message))
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export function showSuccess(message: string): void {
|
|
188
|
+
p.log.success(pc.green(message))
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
export function showInfo(message: string): void {
|
|
192
|
+
p.log.info(pc.blue(message))
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export function showStep(message: string): void {
|
|
196
|
+
p.log.step(message)
|
|
197
|
+
}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for listing and discovering scripts
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { existsSync, statSync } from 'node:fs'
|
|
6
|
+
import { join, relative } from 'node:path'
|
|
7
|
+
import { fileURLToPath } from 'node:url'
|
|
8
|
+
|
|
9
|
+
import pc from 'picocolors'
|
|
10
|
+
|
|
11
|
+
// re-export needed functions from script command
|
|
12
|
+
import {
|
|
13
|
+
discoverScripts,
|
|
14
|
+
getLocalScriptsDir,
|
|
15
|
+
getScriptMetadata,
|
|
16
|
+
} from '../commands/script'
|
|
17
|
+
|
|
18
|
+
// find scripts package root using import.meta.resolve
|
|
19
|
+
function findScriptsPackageRoot(): string | null {
|
|
20
|
+
try {
|
|
21
|
+
const resolved = import.meta.resolve('@take-out/scripts/package.json')
|
|
22
|
+
// use fileURLToPath for proper cross-platform handling
|
|
23
|
+
const packageJsonPath = fileURLToPath(new URL(resolved))
|
|
24
|
+
const packageRoot = join(packageJsonPath, '..')
|
|
25
|
+
const srcPath = join(packageRoot, 'src')
|
|
26
|
+
|
|
27
|
+
if (existsSync(srcPath)) {
|
|
28
|
+
return srcPath
|
|
29
|
+
}
|
|
30
|
+
} catch (err) {
|
|
31
|
+
// scripts package not found, that's ok for hybrid mode
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return null
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// format script listing
|
|
38
|
+
export function formatScriptList(
|
|
39
|
+
title: string,
|
|
40
|
+
scripts: Map<string, string>,
|
|
41
|
+
showDescriptions: boolean = false
|
|
42
|
+
): void {
|
|
43
|
+
if (scripts.size === 0) return
|
|
44
|
+
|
|
45
|
+
console.info()
|
|
46
|
+
console.info(pc.bold(pc.cyan(title)))
|
|
47
|
+
console.info()
|
|
48
|
+
|
|
49
|
+
// group by category
|
|
50
|
+
const categories = new Map<string, Array<[string, string]>>()
|
|
51
|
+
const rootScripts: Array<[string, string]> = []
|
|
52
|
+
|
|
53
|
+
for (const [name, path] of scripts) {
|
|
54
|
+
if (name.includes('/')) {
|
|
55
|
+
const parts = name.split('/')
|
|
56
|
+
if (parts.length > 0 && parts[0]) {
|
|
57
|
+
const category = parts[0]
|
|
58
|
+
if (!categories.has(category)) {
|
|
59
|
+
categories.set(category, [])
|
|
60
|
+
}
|
|
61
|
+
categories.get(category)!.push([name, path])
|
|
62
|
+
}
|
|
63
|
+
} else {
|
|
64
|
+
rootScripts.push([name, path])
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// display root scripts
|
|
69
|
+
for (const [name, path] of rootScripts) {
|
|
70
|
+
let line = ` ${pc.green(name)}`
|
|
71
|
+
|
|
72
|
+
if (showDescriptions) {
|
|
73
|
+
const metadata = getScriptMetadata(path)
|
|
74
|
+
if (metadata.description) {
|
|
75
|
+
line += pc.dim(` - ${metadata.description}`)
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
console.info(line)
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// display categorized scripts
|
|
83
|
+
for (const [category, categoryScripts] of categories) {
|
|
84
|
+
console.info()
|
|
85
|
+
console.info(` ${pc.yellow(category)}/`)
|
|
86
|
+
|
|
87
|
+
for (const [name, path] of categoryScripts) {
|
|
88
|
+
const shortName = name.startsWith(`${category}/`)
|
|
89
|
+
? name.substring(category.length + 1)
|
|
90
|
+
: name
|
|
91
|
+
let line = ` ${pc.green(shortName)}`
|
|
92
|
+
|
|
93
|
+
if (showDescriptions) {
|
|
94
|
+
const metadata = getScriptMetadata(path)
|
|
95
|
+
if (metadata.description) {
|
|
96
|
+
line += pc.dim(` - ${metadata.description}`)
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
console.info(line)
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// list all available scripts (local and built-in)
|
|
106
|
+
export function listAllScripts(includeCommands = true): void {
|
|
107
|
+
// show header with description
|
|
108
|
+
console.info()
|
|
109
|
+
console.info(pc.bold(pc.cyan('Takeout CLI - Project Scripts & Commands')))
|
|
110
|
+
console.info()
|
|
111
|
+
console.info(pc.dim(' Manage scripts, run tasks, and configure your project'))
|
|
112
|
+
console.info()
|
|
113
|
+
|
|
114
|
+
if (includeCommands) {
|
|
115
|
+
// Show built-in CLI commands
|
|
116
|
+
console.info(pc.bold(pc.cyan('🛠️ Built-in Commands')))
|
|
117
|
+
console.info()
|
|
118
|
+
console.info(` ${pc.green('onboard')} - Setup wizard for new projects`)
|
|
119
|
+
console.info(` ${pc.green('docs')} - View documentation`)
|
|
120
|
+
console.info(` ${pc.green('env:setup')} - Setup environment variables`)
|
|
121
|
+
console.info(` ${pc.green('run')} - Run scripts in parallel`)
|
|
122
|
+
console.info(` ${pc.green('script')} - Manage and run scripts`)
|
|
123
|
+
console.info(` ${pc.green('sync')} - Sync fork with upstream Takeout`)
|
|
124
|
+
console.info(` ${pc.green('changed')} - Show changes since last sync`)
|
|
125
|
+
console.info(` ${pc.green('completion')} - Shell completion setup`)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const localScripts = discoverScripts(getLocalScriptsDir())
|
|
129
|
+
const builtInDir = findScriptsPackageRoot()
|
|
130
|
+
const builtInScripts = builtInDir ? discoverScripts(builtInDir) : new Map()
|
|
131
|
+
|
|
132
|
+
if (localScripts.size > 0) {
|
|
133
|
+
formatScriptList('📁 Local Scripts', localScripts, true)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (builtInScripts.size > 0) {
|
|
137
|
+
formatScriptList('📦 Built-in Scripts', builtInScripts, true)
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (localScripts.size === 0 && builtInScripts.size === 0) {
|
|
141
|
+
console.info()
|
|
142
|
+
console.info(pc.yellow('No scripts found'))
|
|
143
|
+
console.info()
|
|
144
|
+
console.info(
|
|
145
|
+
pc.dim(`Create scripts in ${relative(process.cwd(), getLocalScriptsDir())}/`)
|
|
146
|
+
)
|
|
147
|
+
console.info(pc.dim(`Or install @take-out/scripts package for built-in scripts`))
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
console.info()
|
|
151
|
+
console.info(pc.bold('Usage:'))
|
|
152
|
+
console.info(
|
|
153
|
+
` ${pc.cyan('tko <command>')} ${pc.dim('Run a built-in command')}`
|
|
154
|
+
)
|
|
155
|
+
console.info(
|
|
156
|
+
` ${pc.cyan('tko <script-name>')} ${pc.dim('Execute a script (use / for nested, e.g., tko web/build)')}`
|
|
157
|
+
)
|
|
158
|
+
console.info(` ${pc.cyan('tko script new <path>')} ${pc.dim('Create a new script')}`)
|
|
159
|
+
console.info()
|
|
160
|
+
console.info(pc.bold('Examples:'))
|
|
161
|
+
console.info(
|
|
162
|
+
` ${pc.cyan('tko upgrade/tamagui')} ${pc.dim('Upgrade Tamagui packages')}`
|
|
163
|
+
)
|
|
164
|
+
console.info(` ${pc.cyan('tko web/build')} ${pc.dim('Build web platform')}`)
|
|
165
|
+
console.info(
|
|
166
|
+
` ${pc.cyan('tko check/types')} ${pc.dim('Run TypeScript type checking')}`
|
|
167
|
+
)
|
|
168
|
+
console.info()
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// check if a name is a category and list its scripts
|
|
172
|
+
export function listCategoryScripts(categoryName: string): boolean {
|
|
173
|
+
const localDir = getLocalScriptsDir()
|
|
174
|
+
const categoryPath = join(localDir, categoryName)
|
|
175
|
+
|
|
176
|
+
if (existsSync(categoryPath) && statSync(categoryPath).isDirectory()) {
|
|
177
|
+
// list scripts in this category
|
|
178
|
+
const categoryScripts = discoverScripts(categoryPath)
|
|
179
|
+
|
|
180
|
+
if (categoryScripts.size > 0) {
|
|
181
|
+
console.info()
|
|
182
|
+
console.info(pc.bold(pc.cyan(`📁 ${categoryName} Scripts`)))
|
|
183
|
+
console.info()
|
|
184
|
+
|
|
185
|
+
for (const [name, path] of categoryScripts) {
|
|
186
|
+
const shortName = name.replace(`${categoryName}/`, '')
|
|
187
|
+
const metadata = getScriptMetadata(path)
|
|
188
|
+
let line = ` ${pc.green(shortName)}`
|
|
189
|
+
|
|
190
|
+
if (metadata.description) {
|
|
191
|
+
line += pc.dim(` - ${metadata.description}`)
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if (metadata.args && metadata.args.length > 0) {
|
|
195
|
+
line += pc.dim(` [${metadata.args.join(', ')}]`)
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
console.info(line)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
console.info()
|
|
202
|
+
console.info(pc.dim(`Run: tko ${categoryName}/<name> [args...] to execute`))
|
|
203
|
+
console.info()
|
|
204
|
+
} else {
|
|
205
|
+
console.info()
|
|
206
|
+
console.info(pc.yellow(`No scripts found in ${categoryName}/`))
|
|
207
|
+
console.info()
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
return true
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
return false
|
|
214
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync utilities for updating docs and scripts between repositories
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { createHash } from 'node:crypto'
|
|
6
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync, statSync } from 'node:fs'
|
|
7
|
+
import { join, relative, dirname } from 'node:path'
|
|
8
|
+
|
|
9
|
+
import { confirm } from '@clack/prompts'
|
|
10
|
+
import pc from 'picocolors'
|
|
11
|
+
|
|
12
|
+
export interface FileToSync {
|
|
13
|
+
name: string
|
|
14
|
+
sourcePath: string
|
|
15
|
+
targetPath: string
|
|
16
|
+
status: 'new' | 'modified' | 'identical'
|
|
17
|
+
sourceSize?: number
|
|
18
|
+
targetSize?: number
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function getFileHash(filePath: string): string {
|
|
22
|
+
const content = readFileSync(filePath)
|
|
23
|
+
return createHash('md5').update(content).digest('hex')
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function compareFiles(
|
|
27
|
+
sourcePath: string,
|
|
28
|
+
targetPath: string
|
|
29
|
+
): 'new' | 'modified' | 'identical' {
|
|
30
|
+
if (!existsSync(targetPath)) {
|
|
31
|
+
return 'new'
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const sourceHash = getFileHash(sourcePath)
|
|
35
|
+
const targetHash = getFileHash(targetPath)
|
|
36
|
+
|
|
37
|
+
return sourceHash === targetHash ? 'identical' : 'modified'
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export async function syncFileWithConfirmation(file: FileToSync): Promise<boolean> {
|
|
41
|
+
const relPath = relative(process.cwd(), file.targetPath)
|
|
42
|
+
|
|
43
|
+
if (file.status === 'identical') {
|
|
44
|
+
console.info(pc.dim(` ✓ ${file.name} (already up to date)`))
|
|
45
|
+
return false
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const statusColor = file.status === 'new' ? pc.green : pc.yellow
|
|
49
|
+
const statusText = file.status === 'new' ? 'NEW' : 'MODIFIED'
|
|
50
|
+
|
|
51
|
+
console.info()
|
|
52
|
+
console.info(statusColor(` ${statusText}: ${file.name}`))
|
|
53
|
+
|
|
54
|
+
if (file.status === 'modified') {
|
|
55
|
+
const sourceSize = file.sourceSize || 0
|
|
56
|
+
const targetSize = file.targetSize || 0
|
|
57
|
+
const diff = sourceSize - targetSize
|
|
58
|
+
|
|
59
|
+
console.info(pc.dim(` Source: ${sourceSize} bytes`))
|
|
60
|
+
console.info(pc.dim(` Target: ${targetSize} bytes`))
|
|
61
|
+
|
|
62
|
+
if (diff > 0) {
|
|
63
|
+
console.info(pc.cyan(` Source is ${diff} bytes larger`))
|
|
64
|
+
} else if (diff < 0) {
|
|
65
|
+
console.info(pc.magenta(` Target is ${Math.abs(diff)} bytes larger`))
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
console.info(pc.dim(` → ${relPath}`))
|
|
70
|
+
|
|
71
|
+
const shouldSync = await confirm({
|
|
72
|
+
message: `Overwrite this file?`,
|
|
73
|
+
initialValue: true,
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
if (shouldSync === false || typeof shouldSync === 'symbol') {
|
|
77
|
+
console.info(pc.dim(` ⊘ Skipped`))
|
|
78
|
+
return false
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// ensure target directory exists
|
|
82
|
+
const targetDir = dirname(file.targetPath)
|
|
83
|
+
if (!existsSync(targetDir)) {
|
|
84
|
+
mkdirSync(targetDir, { recursive: true })
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// copy file
|
|
88
|
+
const content = readFileSync(file.sourcePath)
|
|
89
|
+
writeFileSync(file.targetPath, content)
|
|
90
|
+
|
|
91
|
+
console.info(pc.green(` ✓ Synced`))
|
|
92
|
+
return true
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export function getFileSize(filePath: string): number {
|
|
96
|
+
try {
|
|
97
|
+
return statSync(filePath).size
|
|
98
|
+
} catch {
|
|
99
|
+
return 0
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
const { withDangerousMod } = require('@expo/config-plugins')
|
|
2
|
+
const { mergeContents } = require('@expo/config-plugins/build/utils/generateCode')
|
|
3
|
+
const fs = require('node:fs')
|
|
4
|
+
const path = require('node:path')
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* expo config plugin to add pre_install hook for op-sqlite static framework compilation
|
|
8
|
+
* required when using useFrameworks: 'static'
|
|
9
|
+
* based on: https://github.com/OP-Engineering/op-sqlite/issues/238
|
|
10
|
+
*/
|
|
11
|
+
function withOpSqliteStatic(config) {
|
|
12
|
+
return withDangerousMod(config, [
|
|
13
|
+
'ios',
|
|
14
|
+
async (config) => {
|
|
15
|
+
const podfilePath = path.join(config.modRequest.platformProjectRoot, 'Podfile')
|
|
16
|
+
|
|
17
|
+
if (!fs.existsSync(podfilePath)) {
|
|
18
|
+
return config
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const podfileContent = fs.readFileSync(podfilePath, 'utf-8')
|
|
22
|
+
|
|
23
|
+
const setOpSqliteStatic = mergeContents({
|
|
24
|
+
tag: 'op-sqlite-static-library',
|
|
25
|
+
src: podfileContent,
|
|
26
|
+
newSrc: `pre_install do |installer|
|
|
27
|
+
installer.pod_targets.each do |pod|
|
|
28
|
+
if pod.name.eql?('op-sqlite')
|
|
29
|
+
def pod.build_type
|
|
30
|
+
Pod::BuildType.static_library
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end`,
|
|
35
|
+
anchor: /platform :ios.*/,
|
|
36
|
+
offset: 1,
|
|
37
|
+
comment: '#',
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
if (!setOpSqliteStatic.didMerge) {
|
|
41
|
+
return config
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
fs.writeFileSync(podfilePath, setOpSqliteStatic.contents)
|
|
45
|
+
|
|
46
|
+
return config
|
|
47
|
+
},
|
|
48
|
+
])
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
module.exports = withOpSqliteStatic
|
package/types/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Changed command - show what's changed in upstream Takeout since last sync
|
|
3
|
+
*/
|
|
4
|
+
export declare const changedCommand: import("citty").CommandDef<{
|
|
5
|
+
from: {
|
|
6
|
+
type: "string";
|
|
7
|
+
description: string;
|
|
8
|
+
};
|
|
9
|
+
to: {
|
|
10
|
+
type: "string";
|
|
11
|
+
description: string;
|
|
12
|
+
};
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=changed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changed.d.ts","sourceRoot":"","sources":["../../src/commands/changed.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2OH,eAAO,MAAM,cAAc;;;;;;;;;EA2EzB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAujBH,eAAO,MAAM,WAAW,qDAYtB,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare const envSetupCommand: import("citty").CommandDef<{
|
|
2
|
+
category: {
|
|
3
|
+
type: "string";
|
|
4
|
+
description: string;
|
|
5
|
+
alias: string;
|
|
6
|
+
};
|
|
7
|
+
file: {
|
|
8
|
+
type: "string";
|
|
9
|
+
description: string;
|
|
10
|
+
default: string;
|
|
11
|
+
alias: string;
|
|
12
|
+
};
|
|
13
|
+
list: {
|
|
14
|
+
type: "boolean";
|
|
15
|
+
description: string;
|
|
16
|
+
alias: string;
|
|
17
|
+
default: false;
|
|
18
|
+
};
|
|
19
|
+
'skip-optional': {
|
|
20
|
+
type: "boolean";
|
|
21
|
+
description: string;
|
|
22
|
+
default: false;
|
|
23
|
+
};
|
|
24
|
+
}>;
|
|
25
|
+
//# sourceMappingURL=env-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-setup.d.ts","sourceRoot":"","sources":["../../src/commands/env-setup.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;EA+D1B,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Onboard command - interactive setup for Takeout starter kit
|
|
3
|
+
*/
|
|
4
|
+
export declare const onboardCommand: import("citty").CommandDef<{
|
|
5
|
+
skip: {
|
|
6
|
+
type: "boolean";
|
|
7
|
+
description: string;
|
|
8
|
+
default: false;
|
|
9
|
+
};
|
|
10
|
+
defaults: {
|
|
11
|
+
type: "boolean";
|
|
12
|
+
description: string;
|
|
13
|
+
default: false;
|
|
14
|
+
};
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=onboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AA4CH,eAAO,MAAM,cAAc;;;;;;;;;;;EA0czB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,UAAU;;;;;;EAsKrB,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced Script command - hybrid script runner with filesystem discovery
|
|
3
|
+
*/
|
|
4
|
+
interface ScriptMetadata {
|
|
5
|
+
description?: string;
|
|
6
|
+
args?: string[];
|
|
7
|
+
mtime?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function getLocalScriptsDir(): string;
|
|
10
|
+
export declare function getScriptMetadata(filePath: string): ScriptMetadata;
|
|
11
|
+
export declare function discoverScripts(dir: string, baseDir?: string, depth?: number, maxDepth?: number): Map<string, string>;
|
|
12
|
+
export declare function findScript(name: string): string | null;
|
|
13
|
+
export { formatScriptList, listAllScripts, listCategoryScripts, } from '../utils/script-listing';
|
|
14
|
+
export declare const scriptCommand: import("citty").CommandDef<{
|
|
15
|
+
name: {
|
|
16
|
+
type: "positional";
|
|
17
|
+
description: string;
|
|
18
|
+
required: false;
|
|
19
|
+
};
|
|
20
|
+
}>;
|
|
21
|
+
export declare function createShorthandCommand(name: string): import("citty").CommandDef<{
|
|
22
|
+
args: {
|
|
23
|
+
type: "positional";
|
|
24
|
+
description: string;
|
|
25
|
+
required: false;
|
|
26
|
+
};
|
|
27
|
+
}>;
|
|
28
|
+
//# sourceMappingURL=script.d.ts.map
|