@take-out/cli 0.6.22 → 0.7.0-1784497775575
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/README.md +3 -5
- package/dist/cjs/commands/docs.cjs +50 -176
- package/dist/cjs/commands/onboard.cjs +2 -2
- package/dist/cjs/commands/skills.cjs +3 -29
- package/dist/cjs/commands/sync.cjs +4 -15
- package/dist/esm/commands/docs.mjs +52 -177
- package/dist/esm/commands/docs.mjs.map +1 -1
- package/dist/esm/commands/onboard.mjs +2 -2
- package/dist/esm/commands/onboard.mjs.map +1 -1
- package/dist/esm/commands/skills.mjs +4 -29
- package/dist/esm/commands/skills.mjs.map +1 -1
- package/dist/esm/commands/sync.mjs +5 -15
- package/dist/esm/commands/sync.mjs.map +1 -1
- package/package.json +3 -4
- package/src/commands/docs.ts +53 -210
- package/src/commands/onboard.ts +2 -2
- package/src/commands/skills.ts +6 -34
- package/src/commands/sync.ts +6 -19
- package/types/commands/docs.d.ts +1 -1
- package/types/commands/docs.d.ts.map +1 -1
- package/types/commands/skills.d.ts.map +1 -1
- package/types/commands/sync.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["existsSync","lstatSync","mkdirSync","readdirSync","readFileSync","readlinkSync","rmSync","rmdirSync","symlinkSync","unlinkSync","
|
|
1
|
+
{"version":3,"names":["existsSync","lstatSync","mkdirSync","readdirSync","readFileSync","readlinkSync","rmSync","rmdirSync","symlinkSync","unlinkSync","join","relative","resolve","defineCommand","pc","SKILL_PREFIX","hasSkillFrontmatter","content","startsWith","endIndex","indexOf","frontmatter","slice","includes","isDevOnly","test","resolveLocalDocsDir","cwd","skillsDir","collectAllDocs","docs","localDocsDir","files","filter","f","endsWith","file","name","replace","push","path","generateDocSkills","clean","expectedSkillNames","Set","length","console","info","yellow","dim","existing","dir","recursive","symlinked","generated","unchanged","removed","skipped","isDev","process","env","IS_TAMAGUI_DEV","doc","hasFrontmatter","nameMatch","match","skillName","trim","add","skillDir","skillFile","relativePath","shouldCreate","stat","isSymbolicLink","existingContent","green","has","force","red","shouldUnlink","linkTarget","resolvedTarget","generateCommand","meta","description","args","type","default","run","bold","cyan","docStats","skillsCommand","subCommands","generate"],"sources":["../../../src/commands/skills.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { execSync, spawn, spawnSync } from "node:child_process";
|
|
2
2
|
import { existsSync, mkdtempSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
3
|
import { tmpdir } from "node:os";
|
|
4
|
-
import {
|
|
5
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { join } from "node:path";
|
|
6
5
|
import { defineCommand } from "citty";
|
|
7
6
|
import pc from "picocolors";
|
|
8
7
|
import { confirmContinue, promptSelect, showError, showInfo, showStep, showSuccess } from "../utils/prompts.mjs";
|
|
@@ -10,20 +9,11 @@ const UPSTREAM_REPO = "tamagui/takeout2";
|
|
|
10
9
|
const UPSTREAM_REMOTE = "takeout-upstream";
|
|
11
10
|
const TAKEOUT_FILE = ".takeout";
|
|
12
11
|
function getSyncPrompt() {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
while (monorepoRoot !== parse(monorepoRoot).root) {
|
|
17
|
-
const promptPath = join(monorepoRoot, "packages", "docs", "sync-prompt.md");
|
|
18
|
-
if (existsSync(promptPath)) {
|
|
19
|
-
return readFileSync(promptPath, "utf-8");
|
|
20
|
-
}
|
|
21
|
-
monorepoRoot = dirname(monorepoRoot);
|
|
22
|
-
}
|
|
23
|
-
throw new Error("Could not find sync-prompt.md in packages/docs");
|
|
24
|
-
} catch (error) {
|
|
25
|
-
throw new Error(`Could not load sync prompt: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
12
|
+
const promptPath = join(process.cwd(), "docs", "upgrade.md");
|
|
13
|
+
if (!existsSync(promptPath)) {
|
|
14
|
+
throw new Error("Missing docs/upgrade.md. Copy it from https://github.com/tamagui/takeout2/blob/main/docs/upgrade.md and rerun `bun tko sync`.");
|
|
26
15
|
}
|
|
16
|
+
return readFileSync(promptPath, "utf-8");
|
|
27
17
|
}
|
|
28
18
|
function checkToolAvailable(command) {
|
|
29
19
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["execSync","spawn","spawnSync","existsSync","mkdtempSync","readFileSync","writeFileSync","tmpdir","
|
|
1
|
+
{"version":3,"names":["execSync","spawn","spawnSync","existsSync","mkdtempSync","readFileSync","writeFileSync","tmpdir","join","defineCommand","pc","confirmContinue","promptSelect","showError","showInfo","showStep","showSuccess","UPSTREAM_REPO","UPSTREAM_REMOTE","TAKEOUT_FILE","getSyncPrompt","promptPath","process","cwd","Error","checkToolAvailable","command","checkCmd","platform","result","status","ensureUpstreamRemote","remotes","encoding","includes","stdio","getUpstreamHeadSha","sha","trim","writeTakeoutConfig","configPath","date","Date","toISOString","split","content","syncCommand","meta","name","description","args","auto","type","default","print","run","isAuto","isPrint","console","info","gray","hasClaudeCode","hasCursor","hasAider","choice","exit","options","push","value","label","hint","dim","upstreamSha","slice","prompt","repeat","shouldContinue","tempDir","promptFile","claude","stdin","write","end","on","code","cursor","aider","error","message"],"sources":["../../../src/commands/sync.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@take-out/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0-1784497775575",
|
|
4
4
|
"description": "CLI tools for Takeout starter kit - interactive onboarding and project setup",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -52,9 +52,8 @@
|
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"@clack/prompts": "^0.8.2",
|
|
55
|
-
"@take-out/
|
|
56
|
-
"@take-out/
|
|
57
|
-
"@take-out/scripts": "0.6.22",
|
|
55
|
+
"@take-out/run": "0.7.0-1784497775575",
|
|
56
|
+
"@take-out/scripts": "0.7.0-1784497775575",
|
|
58
57
|
"citty": "^0.1.6",
|
|
59
58
|
"picocolors": "^1.1.1"
|
|
60
59
|
},
|
package/src/commands/docs.ts
CHANGED
|
@@ -1,38 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* docs command group - read the current repository's documentation
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { existsSync,
|
|
6
|
-
import {
|
|
7
|
-
import { dirname, join } from 'node:path'
|
|
5
|
+
import { existsSync, readdirSync, readFileSync } from 'node:fs'
|
|
6
|
+
import { join } from 'node:path'
|
|
8
7
|
|
|
9
8
|
import { defineCommand } from 'citty'
|
|
10
9
|
import pc from 'picocolors'
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
getFileSize,
|
|
16
|
-
syncFileWithConfirmation,
|
|
17
|
-
} from '../utils/sync'
|
|
11
|
+
function resolveDocsDir(cwd = process.cwd()): string {
|
|
12
|
+
const skillsDir = join(cwd, 'skills')
|
|
13
|
+
if (existsSync(skillsDir)) return skillsDir
|
|
18
14
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
const docsDir = join(cwd, 'docs')
|
|
16
|
+
if (existsSync(docsDir)) return docsDir
|
|
17
|
+
|
|
18
|
+
throw new Error(`No docs or skills directory found in ${cwd}`)
|
|
19
|
+
}
|
|
22
20
|
|
|
23
21
|
const listCommand = defineCommand({
|
|
24
22
|
meta: {
|
|
25
23
|
name: 'list',
|
|
26
|
-
description: 'List
|
|
24
|
+
description: 'List repository documentation files',
|
|
27
25
|
},
|
|
28
26
|
async run() {
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
let docsDir: string
|
|
28
|
+
try {
|
|
29
|
+
docsDir = resolveDocsDir()
|
|
30
|
+
} catch (error) {
|
|
31
|
+
console.error(pc.red(`✗ ${error instanceof Error ? error.message : String(error)}`))
|
|
31
32
|
process.exit(1)
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
const files = readdirSync(
|
|
35
|
-
.filter((
|
|
35
|
+
const files = readdirSync(docsDir)
|
|
36
|
+
.filter((file) => file.endsWith('.md'))
|
|
36
37
|
.sort()
|
|
37
38
|
|
|
38
39
|
console.info()
|
|
@@ -41,26 +42,11 @@ const listCommand = defineCommand({
|
|
|
41
42
|
|
|
42
43
|
for (const file of files) {
|
|
43
44
|
const name = file.replace(/\.md$/, '')
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
// try to extract first heading as description
|
|
47
|
-
let description = ''
|
|
48
|
-
try {
|
|
49
|
-
const content = readFileSync(path, 'utf-8')
|
|
50
|
-
const match = content.match(/^#\s+(.+)$/m)
|
|
51
|
-
if (match?.[1]) {
|
|
52
|
-
description = match[1]
|
|
53
|
-
}
|
|
54
|
-
} catch {
|
|
55
|
-
// ignore read errors
|
|
56
|
-
}
|
|
45
|
+
const content = readFileSync(join(docsDir, file), 'utf-8')
|
|
46
|
+
const heading = content.match(/^#\s+(.+)$/m)?.[1]
|
|
57
47
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
console.info(` ${pc.dim(description)}`)
|
|
61
|
-
} else {
|
|
62
|
-
console.info(` ${pc.green(name)}`)
|
|
63
|
-
}
|
|
48
|
+
console.info(` ${pc.green(name)}`)
|
|
49
|
+
if (heading) console.info(` ${pc.dim(heading)}`)
|
|
64
50
|
}
|
|
65
51
|
|
|
66
52
|
console.info()
|
|
@@ -72,7 +58,7 @@ const listCommand = defineCommand({
|
|
|
72
58
|
const getCommand = defineCommand({
|
|
73
59
|
meta: {
|
|
74
60
|
name: 'get',
|
|
75
|
-
description: 'Get the content of one or more documentation files',
|
|
61
|
+
description: 'Get the content of one or more repository documentation files',
|
|
76
62
|
},
|
|
77
63
|
args: {
|
|
78
64
|
name: {
|
|
@@ -83,80 +69,42 @@ const getCommand = defineCommand({
|
|
|
83
69
|
},
|
|
84
70
|
},
|
|
85
71
|
async run({ args }) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
72
|
+
let docsDir: string
|
|
73
|
+
try {
|
|
74
|
+
docsDir = resolveDocsDir()
|
|
75
|
+
} catch (error) {
|
|
76
|
+
console.error(pc.red(`✗ ${error instanceof Error ? error.message : String(error)}`))
|
|
77
|
+
process.exit(1)
|
|
78
|
+
}
|
|
90
79
|
|
|
80
|
+
const names = args._.length > 0 ? args._ : [args.name]
|
|
91
81
|
const results: Array<{ name: string; content: string }> = []
|
|
92
|
-
const errors: Array<{ name: string; error: string }> = []
|
|
93
|
-
|
|
94
|
-
// check local ./skills, then ./docs, then the package docs
|
|
95
|
-
const cwd = process.cwd()
|
|
96
|
-
const localSkillsDir = join(cwd, 'skills')
|
|
97
|
-
const localDocsDir = join(cwd, 'docs')
|
|
98
82
|
|
|
99
|
-
// collect all docs
|
|
100
83
|
for (const name of names) {
|
|
101
84
|
const fileName = name.endsWith('.md') ? name : `${name}.md`
|
|
85
|
+
const filePath = join(docsDir, fileName)
|
|
102
86
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const localDocsPath = join(localDocsDir, fileName)
|
|
106
|
-
const packageFilePath = join(DOCS_DIR, fileName)
|
|
107
|
-
|
|
108
|
-
let filePath: string | null = null
|
|
109
|
-
|
|
110
|
-
if (existsSync(localSkillsPath)) {
|
|
111
|
-
filePath = localSkillsPath
|
|
112
|
-
} else if (existsSync(localDocsPath)) {
|
|
113
|
-
filePath = localDocsPath
|
|
114
|
-
} else if (existsSync(packageFilePath)) {
|
|
115
|
-
filePath = packageFilePath
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
if (!filePath) {
|
|
119
|
-
errors.push({ name, error: 'File not found' })
|
|
87
|
+
if (!existsSync(filePath)) {
|
|
88
|
+
console.error(pc.red(`✗ Doc file not found: ${name}`))
|
|
120
89
|
continue
|
|
121
90
|
}
|
|
122
91
|
|
|
123
|
-
|
|
124
|
-
const content = readFileSync(filePath, 'utf-8')
|
|
125
|
-
results.push({ name, content })
|
|
126
|
-
} catch (err) {
|
|
127
|
-
errors.push({ name, error: String(err) })
|
|
128
|
-
}
|
|
92
|
+
results.push({ name, content: readFileSync(filePath, 'utf-8') })
|
|
129
93
|
}
|
|
130
94
|
|
|
131
|
-
|
|
132
|
-
if (errors.length > 0) {
|
|
133
|
-
for (const { name } of errors) {
|
|
134
|
-
console.error(pc.red(`✗ Doc file not found: ${name}`))
|
|
135
|
-
}
|
|
95
|
+
if (results.length === 0) {
|
|
136
96
|
console.info()
|
|
137
97
|
console.info(pc.dim(`Use 'takeout docs list' to see available docs`))
|
|
138
|
-
|
|
139
|
-
// if no successful results, exit
|
|
140
|
-
if (results.length === 0) {
|
|
141
|
-
process.exit(1)
|
|
142
|
-
}
|
|
143
|
-
console.info()
|
|
98
|
+
process.exit(1)
|
|
144
99
|
}
|
|
145
100
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
const result = results[i]
|
|
149
|
-
if (!result) continue
|
|
150
|
-
|
|
151
|
-
// print title
|
|
101
|
+
for (let index = 0; index < results.length; index++) {
|
|
102
|
+
const result = results[index]!
|
|
152
103
|
console.info(`# ${result.name}`)
|
|
153
104
|
console.info()
|
|
154
|
-
|
|
155
|
-
// print content
|
|
156
105
|
console.info(result.content)
|
|
157
106
|
|
|
158
|
-
|
|
159
|
-
if (i < results.length - 1) {
|
|
107
|
+
if (index < results.length - 1) {
|
|
160
108
|
console.info()
|
|
161
109
|
console.info('---')
|
|
162
110
|
console.info()
|
|
@@ -168,7 +116,7 @@ const getCommand = defineCommand({
|
|
|
168
116
|
const pathCommand = defineCommand({
|
|
169
117
|
meta: {
|
|
170
118
|
name: 'path',
|
|
171
|
-
description: 'Get the absolute path to
|
|
119
|
+
description: 'Get the absolute path to repository documentation',
|
|
172
120
|
},
|
|
173
121
|
args: {
|
|
174
122
|
name: {
|
|
@@ -178,14 +126,21 @@ const pathCommand = defineCommand({
|
|
|
178
126
|
},
|
|
179
127
|
},
|
|
180
128
|
async run({ args }) {
|
|
129
|
+
let docsDir: string
|
|
130
|
+
try {
|
|
131
|
+
docsDir = resolveDocsDir()
|
|
132
|
+
} catch (error) {
|
|
133
|
+
console.error(pc.red(`✗ ${error instanceof Error ? error.message : String(error)}`))
|
|
134
|
+
process.exit(1)
|
|
135
|
+
}
|
|
136
|
+
|
|
181
137
|
if (!args.name) {
|
|
182
|
-
|
|
183
|
-
console.info(DOCS_DIR)
|
|
138
|
+
console.info(docsDir)
|
|
184
139
|
return
|
|
185
140
|
}
|
|
186
141
|
|
|
187
142
|
const fileName = args.name.endsWith('.md') ? args.name : `${args.name}.md`
|
|
188
|
-
const filePath = join(
|
|
143
|
+
const filePath = join(docsDir, fileName)
|
|
189
144
|
|
|
190
145
|
if (!existsSync(filePath)) {
|
|
191
146
|
console.error(pc.red(`✗ Doc file not found: ${args.name}`))
|
|
@@ -196,126 +151,14 @@ const pathCommand = defineCommand({
|
|
|
196
151
|
},
|
|
197
152
|
})
|
|
198
153
|
|
|
199
|
-
const ejectCommand = defineCommand({
|
|
200
|
-
meta: {
|
|
201
|
-
name: 'eject',
|
|
202
|
-
description: 'Eject Takeout documentation files into your project',
|
|
203
|
-
},
|
|
204
|
-
args: {
|
|
205
|
-
yes: {
|
|
206
|
-
type: 'boolean',
|
|
207
|
-
description: 'Skip confirmations and eject all files',
|
|
208
|
-
default: false,
|
|
209
|
-
},
|
|
210
|
-
},
|
|
211
|
-
async run({ args }) {
|
|
212
|
-
const cwd = process.cwd()
|
|
213
|
-
const targetDocsDir = join(cwd, 'docs')
|
|
214
|
-
const sourceDocsDir = DOCS_DIR
|
|
215
|
-
|
|
216
|
-
console.info()
|
|
217
|
-
console.info(pc.bold(pc.cyan('📚 Eject Docs')))
|
|
218
|
-
console.info()
|
|
219
|
-
console.info(pc.dim(`Source: ${sourceDocsDir}`))
|
|
220
|
-
console.info(pc.dim(`Target: ${targetDocsDir}`))
|
|
221
|
-
console.info()
|
|
222
|
-
|
|
223
|
-
if (!existsSync(sourceDocsDir)) {
|
|
224
|
-
console.error(pc.red('✗ Source docs directory not found in Takeout package'))
|
|
225
|
-
process.exit(1)
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
// ensure target docs directory exists
|
|
229
|
-
if (!existsSync(targetDocsDir)) {
|
|
230
|
-
console.info(pc.yellow('⚠ Target docs directory does not exist, will create it'))
|
|
231
|
-
mkdirSync(targetDocsDir, { recursive: true })
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
// get all markdown files from source
|
|
235
|
-
const sourceFiles = readdirSync(sourceDocsDir).filter((f) => f.endsWith('.md'))
|
|
236
|
-
|
|
237
|
-
if (sourceFiles.length === 0) {
|
|
238
|
-
console.info(pc.yellow('No markdown files found in Takeout docs'))
|
|
239
|
-
return
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
// analyze all files
|
|
243
|
-
const filesToSync: FileToSync[] = []
|
|
244
|
-
const stats = {
|
|
245
|
-
new: 0,
|
|
246
|
-
modified: 0,
|
|
247
|
-
identical: 0,
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
for (const file of sourceFiles) {
|
|
251
|
-
const sourcePath = join(sourceDocsDir, file)
|
|
252
|
-
const targetPath = join(targetDocsDir, file)
|
|
253
|
-
const status = compareFiles(sourcePath, targetPath)
|
|
254
|
-
|
|
255
|
-
stats[status]++
|
|
256
|
-
|
|
257
|
-
filesToSync.push({
|
|
258
|
-
name: file,
|
|
259
|
-
sourcePath,
|
|
260
|
-
targetPath,
|
|
261
|
-
status,
|
|
262
|
-
sourceSize: getFileSize(sourcePath),
|
|
263
|
-
targetSize: getFileSize(targetPath),
|
|
264
|
-
})
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
console.info(pc.bold('Summary:'))
|
|
268
|
-
console.info(` ${pc.green(`${stats.new} new`)}`)
|
|
269
|
-
console.info(` ${pc.yellow(`${stats.modified} modified`)}`)
|
|
270
|
-
console.info(` ${pc.dim(`${stats.identical} identical`)}`)
|
|
271
|
-
console.info()
|
|
272
|
-
|
|
273
|
-
if (stats.new === 0 && stats.modified === 0) {
|
|
274
|
-
console.info(pc.green('✓ All docs are already up to date!'))
|
|
275
|
-
return
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
// sort files: new first, then modified, then identical
|
|
279
|
-
const sortOrder = { new: 0, modified: 1, identical: 2 }
|
|
280
|
-
filesToSync.sort((a, b) => sortOrder[a.status] - sortOrder[b.status])
|
|
281
|
-
|
|
282
|
-
// sync files
|
|
283
|
-
let syncedCount = 0
|
|
284
|
-
|
|
285
|
-
for (const file of filesToSync) {
|
|
286
|
-
if (args.yes && file.status !== 'identical') {
|
|
287
|
-
// auto-sync without confirmation
|
|
288
|
-
const targetDir = join(targetDocsDir)
|
|
289
|
-
if (!existsSync(targetDir)) {
|
|
290
|
-
mkdirSync(targetDir, { recursive: true })
|
|
291
|
-
}
|
|
292
|
-
const content = readFileSync(file.sourcePath)
|
|
293
|
-
writeFileSync(file.targetPath, content)
|
|
294
|
-
console.info(pc.green(` ✓ ${file.name}`))
|
|
295
|
-
syncedCount++
|
|
296
|
-
} else {
|
|
297
|
-
const wasSynced = await syncFileWithConfirmation(file)
|
|
298
|
-
if (wasSynced) {
|
|
299
|
-
syncedCount++
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
console.info()
|
|
305
|
-
console.info(pc.bold(pc.green(`✓ Complete: ${syncedCount} file(s) ejected`)))
|
|
306
|
-
console.info()
|
|
307
|
-
},
|
|
308
|
-
})
|
|
309
|
-
|
|
310
154
|
export const docsCommand = defineCommand({
|
|
311
155
|
meta: {
|
|
312
156
|
name: 'docs',
|
|
313
|
-
description: 'List and retrieve
|
|
157
|
+
description: 'List and retrieve repository documentation',
|
|
314
158
|
},
|
|
315
159
|
subCommands: {
|
|
316
160
|
list: listCommand,
|
|
317
161
|
get: getCommand,
|
|
318
162
|
path: pathCommand,
|
|
319
|
-
eject: ejectCommand,
|
|
320
163
|
},
|
|
321
164
|
})
|
package/src/commands/onboard.ts
CHANGED
|
@@ -367,7 +367,7 @@ export const onboardCommand = defineCommand({
|
|
|
367
367
|
console.info()
|
|
368
368
|
console.info(' bun ios # build iOS dev app')
|
|
369
369
|
console.info(' bun android # build Android dev app')
|
|
370
|
-
console.info(' bun tko docs list # view
|
|
370
|
+
console.info(' bun tko docs list # view repository docs')
|
|
371
371
|
console.info()
|
|
372
372
|
}
|
|
373
373
|
|
|
@@ -981,7 +981,7 @@ async function setupUncloudDeployment(cwd: string): Promise<void> {
|
|
|
981
981
|
console.info(pc.gray(' uc machine add --name server-2 root@IP'))
|
|
982
982
|
console.info(pc.gray(' uc scale web 3 # run 3 instances'))
|
|
983
983
|
console.info()
|
|
984
|
-
console.info(pc.gray('view detailed guide: bun tko docs
|
|
984
|
+
console.info(pc.gray('view detailed guide: bun tko docs get deploy-uncloud'))
|
|
985
985
|
console.info(pc.gray('or see: docs/deployment-uncloud.md'))
|
|
986
986
|
}
|
|
987
987
|
|
package/src/commands/skills.ts
CHANGED
|
@@ -15,22 +15,13 @@ import {
|
|
|
15
15
|
unlinkSync,
|
|
16
16
|
writeFileSync,
|
|
17
17
|
} from 'node:fs'
|
|
18
|
-
import {
|
|
19
|
-
import { dirname, join, relative, resolve } from 'node:path'
|
|
18
|
+
import { join, relative, resolve } from 'node:path'
|
|
20
19
|
|
|
21
20
|
import { defineCommand } from 'citty'
|
|
22
21
|
import pc from 'picocolors'
|
|
23
22
|
|
|
24
23
|
// --- doc skills generation ---
|
|
25
24
|
|
|
26
|
-
const require = createRequire(import.meta.url)
|
|
27
|
-
let DOCS_DIR: string
|
|
28
|
-
try {
|
|
29
|
-
DOCS_DIR = dirname(require.resolve('@take-out/docs/package.json'))
|
|
30
|
-
} catch {
|
|
31
|
-
DOCS_DIR = ''
|
|
32
|
-
}
|
|
33
|
-
|
|
34
25
|
const SKILL_PREFIX = 'takeout-'
|
|
35
26
|
|
|
36
27
|
function hasSkillFrontmatter(content: string): boolean {
|
|
@@ -66,29 +57,15 @@ function resolveLocalDocsDir(cwd: string): string {
|
|
|
66
57
|
return join(cwd, 'docs')
|
|
67
58
|
}
|
|
68
59
|
|
|
69
|
-
function collectAllDocs(
|
|
70
|
-
|
|
71
|
-
): Array<{ name: string; path: string; source: 'package' | 'local' }> {
|
|
72
|
-
const docs: Array<{ name: string; path: string; source: 'package' | 'local' }> = []
|
|
73
|
-
const seen = new Set<string>()
|
|
60
|
+
function collectAllDocs(cwd: string): Array<{ name: string; path: string }> {
|
|
61
|
+
const docs: Array<{ name: string; path: string }> = []
|
|
74
62
|
|
|
75
63
|
const localDocsDir = resolveLocalDocsDir(cwd)
|
|
76
64
|
if (existsSync(localDocsDir)) {
|
|
77
65
|
const files = readdirSync(localDocsDir).filter((f) => f.endsWith('.md'))
|
|
78
66
|
for (const file of files) {
|
|
79
67
|
const name = file.replace(/\.md$/, '')
|
|
80
|
-
docs.push({ name, path: join(localDocsDir, file)
|
|
81
|
-
seen.add(name)
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
if (DOCS_DIR && existsSync(DOCS_DIR)) {
|
|
86
|
-
const files = readdirSync(DOCS_DIR).filter((f) => f.endsWith('.md'))
|
|
87
|
-
for (const file of files) {
|
|
88
|
-
const name = file.replace(/\.md$/, '')
|
|
89
|
-
if (!seen.has(name)) {
|
|
90
|
-
docs.push({ name, path: join(DOCS_DIR, file), source: 'package' })
|
|
91
|
-
}
|
|
68
|
+
docs.push({ name, path: join(localDocsDir, file) })
|
|
92
69
|
}
|
|
93
70
|
}
|
|
94
71
|
|
|
@@ -179,10 +156,7 @@ async function generateDocSkills(
|
|
|
179
156
|
symlinkSync(relativePath, skillFile)
|
|
180
157
|
symlinked++
|
|
181
158
|
|
|
182
|
-
|
|
183
|
-
console.info(
|
|
184
|
-
` ${pc.green('⟷')} ${skillName} ${sourceLabel} ${pc.dim('(symlink)')}`,
|
|
185
|
-
)
|
|
159
|
+
console.info(` ${pc.green('⟷')} ${skillName} ${pc.dim('(symlink)')}`)
|
|
186
160
|
} else {
|
|
187
161
|
if (!hasFrontmatter) {
|
|
188
162
|
skipped++
|
|
@@ -214,9 +188,7 @@ async function generateDocSkills(
|
|
|
214
188
|
if (stat.isSymbolicLink()) {
|
|
215
189
|
const linkTarget = readlinkSync(skillFile)
|
|
216
190
|
const resolvedTarget = resolve(skillDir, linkTarget)
|
|
217
|
-
shouldUnlink =
|
|
218
|
-
resolvedTarget.startsWith(`${localDocsDir}/`) ||
|
|
219
|
-
(!!DOCS_DIR && resolvedTarget.startsWith(`${DOCS_DIR}/`))
|
|
191
|
+
shouldUnlink = resolvedTarget.startsWith(`${localDocsDir}/`)
|
|
220
192
|
}
|
|
221
193
|
} catch {
|
|
222
194
|
// ignore unrelated skill directories
|