yeknal 1.1.6 → 1.1.7
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/bin/yeknal.js +13 -2
- package/package.json +1 -1
package/bin/yeknal.js
CHANGED
|
@@ -267,7 +267,11 @@ async function discoverLocalSkillFolders(sourceRoot) {
|
|
|
267
267
|
}
|
|
268
268
|
|
|
269
269
|
async function downloadSkillsFromGit(tempRoot, skillFolders, repoTree) {
|
|
270
|
-
|
|
270
|
+
const total = skillFolders.length;
|
|
271
|
+
for (let i = 0; i < skillFolders.length; i++) {
|
|
272
|
+
const folder = skillFolders[i];
|
|
273
|
+
process.stdout.write(`\r Downloading skills... (${i + 1}/${total}) ${folder.padEnd(32)}`);
|
|
274
|
+
|
|
271
275
|
const localFolder = path.join(tempRoot, folder);
|
|
272
276
|
const folderFiles = listFilesForFolder(repoTree, folder);
|
|
273
277
|
|
|
@@ -278,6 +282,7 @@ async function downloadSkillsFromGit(tempRoot, skillFolders, repoTree) {
|
|
|
278
282
|
await downloadUrlToFile(buildRawFileUrl(repoPath), destinationPath);
|
|
279
283
|
}
|
|
280
284
|
}
|
|
285
|
+
process.stdout.write(`\r Downloaded ${total} skill folder(s).${" ".repeat(32)}\n`);
|
|
281
286
|
}
|
|
282
287
|
|
|
283
288
|
async function stageSkillsFromGitClone(tempRoot) {
|
|
@@ -376,12 +381,16 @@ async function runSkillsCommand() {
|
|
|
376
381
|
let sourceLabel = "GitHub API + raw file download";
|
|
377
382
|
|
|
378
383
|
try {
|
|
384
|
+
process.stdout.write(" Fetching repository file list from GitHub API...");
|
|
379
385
|
const repoTree = await fetchRepoTree();
|
|
386
|
+
process.stdout.write(" done.\n");
|
|
387
|
+
|
|
380
388
|
skillFolders = discoverSkillFolders(repoTree);
|
|
381
389
|
if (skillFolders.length === 0) {
|
|
382
390
|
throw new Error("No skill folders were discovered from the GitHub repository.");
|
|
383
391
|
}
|
|
384
392
|
|
|
393
|
+
console.log(` Found ${skillFolders.length} skill folder(s). Starting download...\n`);
|
|
385
394
|
await downloadSkillsFromGit(tempRoot, skillFolders, repoTree);
|
|
386
395
|
} catch (error) {
|
|
387
396
|
const message = error && error.message ? error.message : String(error);
|
|
@@ -389,8 +398,10 @@ async function runSkillsCommand() {
|
|
|
389
398
|
throw error;
|
|
390
399
|
}
|
|
391
400
|
|
|
392
|
-
console.log("\
|
|
401
|
+
console.log("\n GitHub API rate-limited. Falling back to git clone...");
|
|
402
|
+
console.log(" Cloning repository (this may take a moment)...");
|
|
393
403
|
skillFolders = await stageSkillsFromGitClone(tempRoot);
|
|
404
|
+
console.log(` Clone complete. Found ${skillFolders.length} skill folder(s).`);
|
|
394
405
|
sourceLabel = "git clone fallback";
|
|
395
406
|
}
|
|
396
407
|
|