openkbs 0.0.45 → 0.0.49
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/package.json +3 -2
- package/scripts/update-version.js +17 -0
- package/src/actions.js +87 -6
- package/src/index.js +11 -8
- package/version.json +5 -0
package/package.json
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openkbs",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.49",
|
|
4
4
|
"description": "OpenKBS - Command Line Interface",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "pkg .",
|
|
8
|
-
"deploy": "npm run build && npm run deploy:linux && npm run deploy:macos && npm run deploy:win && npm run deploy:templates",
|
|
8
|
+
"deploy": "npm run build && npm run deploy:linux && npm run deploy:macos && npm run deploy:win && npm run deploy:templates && npm run deploy:version",
|
|
9
9
|
"deploy:linux": "aws s3 cp build/openkbs-linux-x64 s3://openkbs-downloads/cli/linux/openkbs && aws s3 cp build/openkbs-linux-arm64 s3://openkbs-downloads/cli/linux/openkbs-arm64",
|
|
10
10
|
"deploy:macos": "aws s3 cp build/openkbs-macos-arm64 s3://openkbs-downloads/cli/macos/openkbs && aws s3 cp build/openkbs-macos-x64 s3://openkbs-downloads/cli/macos/openkbs-x64",
|
|
11
11
|
"deploy:win": "aws s3 cp build/openkbs-win-x64.exe s3://openkbs-downloads/cli/windows/openkbs.exe && aws s3 cp build/openkbs-win-arm64.exe s3://openkbs-downloads/cli/windows/openkbs-arm64.exe",
|
|
12
12
|
"deploy:templates": "node scripts/deploy-templates.js",
|
|
13
|
+
"deploy:version": "node scripts/update-version.js && aws s3 cp version.json s3://openkbs-downloads/cli/version.json",
|
|
13
14
|
"postinstall": "node src/install.js",
|
|
14
15
|
"postupdate": "node src/install.js"
|
|
15
16
|
},
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
const packageJsonPath = path.join(__dirname, '..', 'package.json');
|
|
5
|
+
const versionJsonPath = path.join(__dirname, '..', 'version.json');
|
|
6
|
+
|
|
7
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
8
|
+
|
|
9
|
+
const versionData = {
|
|
10
|
+
version: packageJson.version,
|
|
11
|
+
releaseDate: new Date().toISOString().split('T')[0],
|
|
12
|
+
releaseNotes: `OpenKBS CLI version ${packageJson.version}`
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
fs.writeFileSync(versionJsonPath, JSON.stringify(versionData, null, 2));
|
|
16
|
+
|
|
17
|
+
console.log(`Updated version.json with version ${packageJson.version}`);
|
package/src/actions.js
CHANGED
|
@@ -538,7 +538,7 @@ async function downloadModifyAction() {
|
|
|
538
538
|
});
|
|
539
539
|
}
|
|
540
540
|
|
|
541
|
-
async function updateKnowledgeAction() {
|
|
541
|
+
async function updateKnowledgeAction(silent = false) {
|
|
542
542
|
try {
|
|
543
543
|
const knowledgeDir = path.join(process.cwd(), '.openkbs', 'knowledge');
|
|
544
544
|
const metadataPath = path.join(knowledgeDir, 'metadata.json');
|
|
@@ -546,7 +546,9 @@ async function updateKnowledgeAction() {
|
|
|
546
546
|
|
|
547
547
|
// Check if .openkbs/knowledge directory exists
|
|
548
548
|
if (!fs.existsSync(knowledgeDir)) {
|
|
549
|
-
|
|
549
|
+
if (!silent) {
|
|
550
|
+
console.red('Knowledge directory not found. Please ensure you are in an OpenKBS project directory.');
|
|
551
|
+
}
|
|
550
552
|
return;
|
|
551
553
|
}
|
|
552
554
|
|
|
@@ -557,7 +559,9 @@ async function updateKnowledgeAction() {
|
|
|
557
559
|
const localMetadata = JSON.parse(fs.readFileSync(metadataPath, 'utf8'));
|
|
558
560
|
localVersion = localMetadata.version;
|
|
559
561
|
} catch (error) {
|
|
560
|
-
|
|
562
|
+
if (!silent) {
|
|
563
|
+
console.red('Error reading local metadata.json:', error.message);
|
|
564
|
+
}
|
|
561
565
|
return;
|
|
562
566
|
}
|
|
563
567
|
}
|
|
@@ -581,7 +585,9 @@ async function updateKnowledgeAction() {
|
|
|
581
585
|
const remoteMetadata = JSON.parse(remoteMetadataContent);
|
|
582
586
|
remoteVersion = remoteMetadata.version;
|
|
583
587
|
} catch (error) {
|
|
584
|
-
|
|
588
|
+
if (!silent) {
|
|
589
|
+
console.red('Error fetching remote metadata:', error.message);
|
|
590
|
+
}
|
|
585
591
|
return;
|
|
586
592
|
}
|
|
587
593
|
|
|
@@ -602,10 +608,84 @@ async function updateKnowledgeAction() {
|
|
|
602
608
|
console.green('Knowledge base updated successfully!');
|
|
603
609
|
|
|
604
610
|
} catch (error) {
|
|
605
|
-
|
|
611
|
+
if (!silent) {
|
|
612
|
+
console.red('Error updating knowledge base:', error.message);
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
async function updateCliAction() {
|
|
618
|
+
try {
|
|
619
|
+
const packageJson = require('../package.json');
|
|
620
|
+
const currentVersion = packageJson.version;
|
|
621
|
+
|
|
622
|
+
console.log(`Current OpenKBS CLI version: ${currentVersion}`);
|
|
623
|
+
console.log('Checking for updates...');
|
|
624
|
+
|
|
625
|
+
// Check remote version from S3
|
|
626
|
+
const https = require('https');
|
|
627
|
+
const bucket = 'openkbs-downloads';
|
|
628
|
+
const versionMetadataKey = 'cli/version.json';
|
|
629
|
+
|
|
630
|
+
let remoteVersionData = null;
|
|
631
|
+
let cliUpdateAvailable = false;
|
|
632
|
+
|
|
633
|
+
try {
|
|
634
|
+
const fileUrl = `https://${bucket}.s3.amazonaws.com/${versionMetadataKey}`;
|
|
635
|
+
const remoteVersionContent = await new Promise((resolve, reject) => {
|
|
636
|
+
https.get(fileUrl, (res) => {
|
|
637
|
+
if (res.statusCode === 404) {
|
|
638
|
+
reject(new Error('Version metadata not found on remote server'));
|
|
639
|
+
return;
|
|
640
|
+
}
|
|
641
|
+
let data = '';
|
|
642
|
+
res.on('data', (chunk) => data += chunk);
|
|
643
|
+
res.on('end', () => resolve(data));
|
|
644
|
+
}).on('error', reject);
|
|
645
|
+
});
|
|
646
|
+
|
|
647
|
+
remoteVersionData = JSON.parse(remoteVersionContent);
|
|
648
|
+
const remoteVersion = remoteVersionData.version;
|
|
649
|
+
|
|
650
|
+
// Compare versions using semantic versioning
|
|
651
|
+
if (compareVersions(currentVersion, remoteVersion) < 0) {
|
|
652
|
+
cliUpdateAvailable = true;
|
|
653
|
+
console.log(`New CLI version available: ${remoteVersion}`);
|
|
654
|
+
console.yellow('To update the CLI, please run:');
|
|
655
|
+
console.log(`npm uninstall -g openkbs && npm install -g openkbs@${remoteVersion}`);
|
|
656
|
+
console.yellow('Or simply:');
|
|
657
|
+
console.log('npm update -g openkbs');
|
|
658
|
+
} else {
|
|
659
|
+
console.green('OpenKBS CLI is already up to date.');
|
|
660
|
+
}
|
|
661
|
+
} catch (error) {
|
|
662
|
+
console.red('Error fetching CLI version metadata:', error.message);
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
// Also update knowledge base silently if it exists
|
|
666
|
+
await updateKnowledgeAction(true);
|
|
667
|
+
|
|
668
|
+
} catch (error) {
|
|
669
|
+
console.red('Error updating CLI:', error.message);
|
|
606
670
|
}
|
|
607
671
|
}
|
|
608
672
|
|
|
673
|
+
function compareVersions(version1, version2) {
|
|
674
|
+
const parts1 = version1.split('.').map(Number);
|
|
675
|
+
const parts2 = version2.split('.').map(Number);
|
|
676
|
+
|
|
677
|
+
for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
|
|
678
|
+
const part1 = parts1[i] || 0;
|
|
679
|
+
const part2 = parts2[i] || 0;
|
|
680
|
+
|
|
681
|
+
if (part1 > part2) return 1;
|
|
682
|
+
if (part1 < part2) return -1;
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
return 0;
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
|
|
609
689
|
async function downloadKnowledgeFromS3(targetDir) {
|
|
610
690
|
const https = require('https');
|
|
611
691
|
const bucket = 'openkbs-downloads';
|
|
@@ -717,5 +797,6 @@ module.exports = {
|
|
|
717
797
|
installFrontendPackageAction,
|
|
718
798
|
modifyAction,
|
|
719
799
|
downloadModifyAction,
|
|
720
|
-
updateKnowledgeAction
|
|
800
|
+
updateKnowledgeAction,
|
|
801
|
+
updateCliAction
|
|
721
802
|
};
|
package/src/index.js
CHANGED
|
@@ -13,7 +13,7 @@ const {
|
|
|
13
13
|
deleteFileAction,
|
|
14
14
|
describeAction, deployAction, createByTemplateAction, initByTemplateAction,
|
|
15
15
|
logoutAction, installFrontendPackageAction, modifyAction, downloadModifyAction,
|
|
16
|
-
updateKnowledgeAction
|
|
16
|
+
updateKnowledgeAction, updateCliAction
|
|
17
17
|
} = require('./actions');
|
|
18
18
|
|
|
19
19
|
|
|
@@ -155,11 +155,12 @@ This file will be automatically included when you run the 'openkbs modify' comma
|
|
|
155
155
|
`);
|
|
156
156
|
|
|
157
157
|
program
|
|
158
|
-
.command('update')
|
|
159
|
-
.
|
|
160
|
-
.description('Update project components from remote repository')
|
|
158
|
+
.command('update [target]')
|
|
159
|
+
.description('Update OpenKBS CLI or project components from remote repository')
|
|
161
160
|
.action((target) => {
|
|
162
|
-
if (target
|
|
161
|
+
if (!target) {
|
|
162
|
+
updateCliAction();
|
|
163
|
+
} else if (target === 'knowledge') {
|
|
163
164
|
updateKnowledgeAction();
|
|
164
165
|
} else {
|
|
165
166
|
console.error(`Unknown update target: ${target}. Currently supported: knowledge`);
|
|
@@ -168,10 +169,12 @@ program
|
|
|
168
169
|
})
|
|
169
170
|
.addHelpText('after', `
|
|
170
171
|
Examples:
|
|
171
|
-
$ openkbs update
|
|
172
|
+
$ openkbs update
|
|
173
|
+
This will check for CLI updates and install them if available.
|
|
172
174
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
+
$ openkbs update knowledge
|
|
176
|
+
This will check if your local .openkbs/knowledge directory is up to date with the remote repository
|
|
177
|
+
and update it if necessary.
|
|
175
178
|
`);
|
|
176
179
|
|
|
177
180
|
program.parse(process.argv);
|