@leadcms/sdk 2.1.4 ā 2.2.1
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 +331 -6
- package/dist/cli/index.js +97 -68
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/auth.d.ts +55 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +204 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/cms-config-types.d.ts +57 -0
- package/dist/lib/cms-config-types.d.ts.map +1 -0
- package/dist/lib/cms-config-types.js +64 -0
- package/dist/lib/cms-config-types.js.map +1 -0
- package/dist/lib/cms.d.ts +52 -0
- package/dist/lib/cms.d.ts.map +1 -1
- package/dist/lib/cms.js +113 -0
- package/dist/lib/cms.js.map +1 -1
- package/dist/lib/comment-types.d.ts +73 -0
- package/dist/lib/comment-types.d.ts.map +1 -0
- package/dist/lib/comment-types.js +6 -0
- package/dist/lib/comment-types.js.map +1 -0
- package/dist/lib/comment-utils.d.ts +173 -0
- package/dist/lib/comment-utils.d.ts.map +1 -0
- package/dist/lib/comment-utils.js +338 -0
- package/dist/lib/comment-utils.js.map +1 -0
- package/dist/lib/config.d.ts +4 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +10 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/content-api-formatting.d.ts.map +1 -1
- package/dist/lib/content-api-formatting.js +5 -0
- package/dist/lib/content-api-formatting.js.map +1 -1
- package/dist/lib/data-service.d.ts.map +1 -1
- package/dist/lib/data-service.js +72 -6
- package/dist/lib/data-service.js.map +1 -1
- package/dist/scripts/fetch-leadcms-comments.d.ts +26 -0
- package/dist/scripts/fetch-leadcms-comments.d.ts.map +1 -0
- package/dist/scripts/fetch-leadcms-comments.js +352 -0
- package/dist/scripts/fetch-leadcms-comments.js.map +1 -0
- package/dist/scripts/fetch-leadcms-content.d.ts.map +1 -1
- package/dist/scripts/fetch-leadcms-content.js +86 -39
- package/dist/scripts/fetch-leadcms-content.js.map +1 -1
- package/dist/scripts/init-leadcms.d.ts +7 -0
- package/dist/scripts/init-leadcms.d.ts.map +1 -0
- package/dist/scripts/init-leadcms.js +397 -0
- package/dist/scripts/init-leadcms.js.map +1 -0
- package/dist/scripts/leadcms-helpers.d.ts +2 -2
- package/dist/scripts/leadcms-helpers.d.ts.map +1 -1
- package/dist/scripts/leadcms-helpers.js +12 -7
- package/dist/scripts/leadcms-helpers.js.map +1 -1
- package/dist/scripts/login-leadcms.d.ts +10 -0
- package/dist/scripts/login-leadcms.d.ts.map +1 -0
- package/dist/scripts/login-leadcms.js +90 -0
- package/dist/scripts/login-leadcms.js.map +1 -0
- package/dist/scripts/pull-all.d.ts +12 -0
- package/dist/scripts/pull-all.d.ts.map +1 -0
- package/dist/scripts/pull-all.js +81 -0
- package/dist/scripts/pull-all.js.map +1 -0
- package/dist/scripts/pull-comments.d.ts +11 -0
- package/dist/scripts/pull-comments.d.ts.map +1 -0
- package/dist/scripts/pull-comments.js +45 -0
- package/dist/scripts/pull-comments.js.map +1 -0
- package/dist/scripts/pull-content.d.ts +11 -0
- package/dist/scripts/pull-content.d.ts.map +1 -0
- package/dist/scripts/pull-content.js +45 -0
- package/dist/scripts/pull-content.js.map +1 -0
- package/dist/scripts/pull-media.d.ts +12 -0
- package/dist/scripts/pull-media.d.ts.map +1 -0
- package/dist/scripts/pull-media.js +46 -0
- package/dist/scripts/pull-media.js.map +1 -0
- package/dist/scripts/push-leadcms-content.d.ts.map +1 -1
- package/dist/scripts/push-leadcms-content.js +35 -13
- package/dist/scripts/push-leadcms-content.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* LeadCMS Login - Interactive token-based authentication
|
|
4
|
+
*/
|
|
5
|
+
import { config as dotenvConfig } from 'dotenv';
|
|
6
|
+
import { getConfig } from '../lib/config.js';
|
|
7
|
+
import { authenticate, saveTokenToEnv } from '../lib/auth.js';
|
|
8
|
+
import axios from 'axios';
|
|
9
|
+
import * as readline from 'readline';
|
|
10
|
+
// Load environment variables from .env file
|
|
11
|
+
dotenvConfig();
|
|
12
|
+
/**
|
|
13
|
+
* Prompt user for input
|
|
14
|
+
*/
|
|
15
|
+
function prompt(question) {
|
|
16
|
+
const rl = readline.createInterface({
|
|
17
|
+
input: process.stdin,
|
|
18
|
+
output: process.stdout,
|
|
19
|
+
});
|
|
20
|
+
return new Promise((resolve) => {
|
|
21
|
+
rl.question(question, (answer) => {
|
|
22
|
+
rl.close();
|
|
23
|
+
resolve(answer.trim());
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Interactive login flow
|
|
29
|
+
*/
|
|
30
|
+
async function main() {
|
|
31
|
+
let leadCMSUrl;
|
|
32
|
+
// Try to get URL from config file first
|
|
33
|
+
try {
|
|
34
|
+
const config = getConfig();
|
|
35
|
+
leadCMSUrl = config.url;
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
// Config file not found or invalid, try environment variable
|
|
39
|
+
leadCMSUrl = process.env.LEADCMS_URL;
|
|
40
|
+
}
|
|
41
|
+
if (!leadCMSUrl) {
|
|
42
|
+
console.log('\nā LeadCMS URL is not configured.');
|
|
43
|
+
console.log('\nš” Options:');
|
|
44
|
+
console.log(' 1. Run: leadcms init (to create a config file)');
|
|
45
|
+
console.log(' 2. Or set LEADCMS_URL in your .env file\n');
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
// Use shared authentication function
|
|
50
|
+
const { token, user } = await authenticate(leadCMSUrl, prompt);
|
|
51
|
+
// Save to .env
|
|
52
|
+
saveTokenToEnv(token);
|
|
53
|
+
console.log('ā
Token verified and saved to .env file!');
|
|
54
|
+
console.log(`\nš¤ Successfully logged in as: ${user.displayName || user.userName}`);
|
|
55
|
+
console.log(` Email: ${user.email}`);
|
|
56
|
+
console.log('\nā
You can now use commands like:');
|
|
57
|
+
console.log(' ⢠leadcms push - Push local changes to LeadCMS');
|
|
58
|
+
console.log(' ⢠leadcms pull - Pull content from LeadCMS');
|
|
59
|
+
console.log(' ⢠leadcms status - Check sync status\n');
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (axios.isAxiosError(error)) {
|
|
63
|
+
if (error.response?.status === 401) {
|
|
64
|
+
console.log('\nā Authentication failed: Invalid token');
|
|
65
|
+
console.log(' Please make sure you copied the token correctly.\n');
|
|
66
|
+
}
|
|
67
|
+
else if (error.response?.status === 404) {
|
|
68
|
+
console.log('\nā User not found');
|
|
69
|
+
console.log(' The token is valid but the user account may not exist.\n');
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.log(`\nā Error: ${error.response?.statusText || error.message}`);
|
|
73
|
+
console.log(' Please try again or contact support.\n');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
console.log(`\nā ${error.message}\n`);
|
|
78
|
+
}
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Handle direct script execution
|
|
83
|
+
if (typeof import.meta !== 'undefined' && process.argv[1] && import.meta.url === `file://${process.argv[1]}`) {
|
|
84
|
+
main().catch((error) => {
|
|
85
|
+
console.error('Error:', error.message);
|
|
86
|
+
process.exit(1);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
export { main as loginLeadCMS };
|
|
90
|
+
//# sourceMappingURL=login-leadcms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login-leadcms.js","sourceRoot":"","sources":["../../src/scripts/login-leadcms.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Orchestrator for pulling all content from LeadCMS
|
|
4
|
+
* Checks entity support before fetching content, media, and comments
|
|
5
|
+
*/
|
|
6
|
+
import "dotenv/config";
|
|
7
|
+
/**
|
|
8
|
+
* Main orchestrator function
|
|
9
|
+
*/
|
|
10
|
+
declare function main(): Promise<void>;
|
|
11
|
+
export { main as pullAll };
|
|
12
|
+
//# sourceMappingURL=pull-all.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull-all.d.ts","sourceRoot":"","sources":["../../src/scripts/pull-all.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,eAAe,CAAC;AA0CvB;;GAEG;AACH,iBAAe,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAkCnC;AAGD,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Orchestrator for pulling all content from LeadCMS
|
|
4
|
+
* Checks entity support before fetching content, media, and comments
|
|
5
|
+
*/
|
|
6
|
+
import "dotenv/config";
|
|
7
|
+
import axios from "axios";
|
|
8
|
+
import { leadCMSUrl } from "./leadcms-helpers.js";
|
|
9
|
+
import { setCMSConfig, isContentSupported, isMediaSupported, isCommentsSupported } from "../lib/cms-config-types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Fetch CMS config to determine which entities are supported
|
|
12
|
+
*/
|
|
13
|
+
async function fetchAndCacheCMSConfig() {
|
|
14
|
+
try {
|
|
15
|
+
console.log(`š Checking CMS configuration...`);
|
|
16
|
+
const configUrl = new URL('/api/config', leadCMSUrl).toString();
|
|
17
|
+
const response = await axios.get(configUrl, { timeout: 10000 });
|
|
18
|
+
if (response.data) {
|
|
19
|
+
setCMSConfig(response.data);
|
|
20
|
+
const support = {
|
|
21
|
+
content: isContentSupported(),
|
|
22
|
+
media: isMediaSupported(),
|
|
23
|
+
comments: isCommentsSupported(),
|
|
24
|
+
};
|
|
25
|
+
console.log(`ā
CMS Configuration received`);
|
|
26
|
+
console.log(` - Content: ${support.content ? 'ā' : 'ā'}`);
|
|
27
|
+
console.log(` - Media: ${support.media ? 'ā' : 'ā'}`);
|
|
28
|
+
console.log(` - Comments: ${support.comments ? 'ā' : 'ā'}`);
|
|
29
|
+
console.log('');
|
|
30
|
+
return support;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
console.warn(`ā ļø Could not fetch CMS config: ${error.message}`);
|
|
35
|
+
console.warn(`ā ļø Assuming all entities are supported (backward compatibility)\n`);
|
|
36
|
+
}
|
|
37
|
+
return { content: false, media: false, comments: false };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Main orchestrator function
|
|
41
|
+
*/
|
|
42
|
+
async function main() {
|
|
43
|
+
console.log(`\nš LeadCMS Pull - Fetching all content\n`);
|
|
44
|
+
// Check which entities are supported
|
|
45
|
+
const { content, media, comments } = await fetchAndCacheCMSConfig();
|
|
46
|
+
if (!content && !media && !comments) {
|
|
47
|
+
console.log(`āļø No supported entities found - nothing to sync`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// Import and run fetch functions for supported entities
|
|
51
|
+
const fetchPromises = [];
|
|
52
|
+
if (content || media) {
|
|
53
|
+
console.log(`š Fetching content and media...`);
|
|
54
|
+
const { fetchLeadCMSContent } = await import('./fetch-leadcms-content.js');
|
|
55
|
+
fetchPromises.push(fetchLeadCMSContent());
|
|
56
|
+
}
|
|
57
|
+
if (comments) {
|
|
58
|
+
console.log(`š¬ Fetching comments...`);
|
|
59
|
+
const { fetchLeadCMSComments } = await import('./fetch-leadcms-comments.js');
|
|
60
|
+
fetchPromises.push(fetchLeadCMSComments());
|
|
61
|
+
}
|
|
62
|
+
// Wait for all fetches to complete
|
|
63
|
+
try {
|
|
64
|
+
await Promise.all(fetchPromises);
|
|
65
|
+
console.log(`\n⨠Pull completed successfully!\n`);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.error(`\nā Pull failed: ${error.message}\n`);
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Export the main function
|
|
73
|
+
export { main as pullAll };
|
|
74
|
+
// If this script is run directly, execute the main function
|
|
75
|
+
if (typeof import.meta !== 'undefined' && process.argv[1] && import.meta.url === `file://${process.argv[1]}`) {
|
|
76
|
+
main().catch((error) => {
|
|
77
|
+
console.error("Error running LeadCMS pull:", error.message);
|
|
78
|
+
process.exit(1);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=pull-all.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull-all.js","sourceRoot":"","sources":["../../src/scripts/pull-all.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Pull only comments from LeadCMS (no content, no media)
|
|
4
|
+
*/
|
|
5
|
+
import "dotenv/config";
|
|
6
|
+
/**
|
|
7
|
+
* Main function
|
|
8
|
+
*/
|
|
9
|
+
declare function main(): Promise<void>;
|
|
10
|
+
export { main as pullComments };
|
|
11
|
+
//# sourceMappingURL=pull-comments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull-comments.d.ts","sourceRoot":"","sources":["../../src/scripts/pull-comments.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,eAAe,CAAC;AAMvB;;GAEG;AACH,iBAAe,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA4BnC;AAUD,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Pull only comments from LeadCMS (no content, no media)
|
|
4
|
+
*/
|
|
5
|
+
import "dotenv/config";
|
|
6
|
+
import axios from "axios";
|
|
7
|
+
import { leadCMSUrl } from "./leadcms-helpers.js";
|
|
8
|
+
import { setCMSConfig, isCommentsSupported } from "../lib/cms-config-types.js";
|
|
9
|
+
import { fetchLeadCMSComments } from "./fetch-leadcms-comments.js";
|
|
10
|
+
/**
|
|
11
|
+
* Main function
|
|
12
|
+
*/
|
|
13
|
+
async function main() {
|
|
14
|
+
console.log(`\nš¬ LeadCMS Pull Comments\n`);
|
|
15
|
+
// Check if comments are supported
|
|
16
|
+
try {
|
|
17
|
+
console.log(`š Checking CMS configuration...`);
|
|
18
|
+
const configUrl = new URL('/api/config', leadCMSUrl).toString();
|
|
19
|
+
const response = await axios.get(configUrl, { timeout: 10000 });
|
|
20
|
+
if (response.data) {
|
|
21
|
+
setCMSConfig(response.data);
|
|
22
|
+
if (!isCommentsSupported()) {
|
|
23
|
+
console.log(`āļø Comments entity not supported by this LeadCMS instance`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
console.log(`ā
Comments entity supported\n`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.warn(`ā ļø Could not fetch CMS config: ${error.message}`);
|
|
31
|
+
console.warn(`ā ļø Assuming comments are supported (backward compatibility)\n`);
|
|
32
|
+
}
|
|
33
|
+
// Fetch comments
|
|
34
|
+
await fetchLeadCMSComments();
|
|
35
|
+
console.log(`\n⨠Comments pull completed!\n`);
|
|
36
|
+
}
|
|
37
|
+
// If this script is run directly, execute the main function
|
|
38
|
+
if (typeof import.meta !== 'undefined' && process.argv[1] && import.meta.url === `file://${process.argv[1]}`) {
|
|
39
|
+
main().catch((error) => {
|
|
40
|
+
console.error("Error running LeadCMS comments pull:", error.message);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
export { main as pullComments };
|
|
45
|
+
//# sourceMappingURL=pull-comments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull-comments.js","sourceRoot":"","sources":["../../src/scripts/pull-comments.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAE5C,kCAAkC;IAClC,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhE,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAE5B,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;gBAC1E,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IACjF,CAAC;IAED,iBAAiB;IACjB,MAAM,oBAAoB,EAAE,CAAC;IAE7B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;AAChD,CAAC;AAED,4DAA4D;AAC5D,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC7G,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Pull only content from LeadCMS (no media, no comments)
|
|
4
|
+
*/
|
|
5
|
+
import "dotenv/config";
|
|
6
|
+
/**
|
|
7
|
+
* Main function
|
|
8
|
+
*/
|
|
9
|
+
declare function main(): Promise<void>;
|
|
10
|
+
export { main as pullContent };
|
|
11
|
+
//# sourceMappingURL=pull-content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull-content.d.ts","sourceRoot":"","sources":["../../src/scripts/pull-content.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,eAAe,CAAC;AAMvB;;GAEG;AACH,iBAAe,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA4BnC;AAUD,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Pull only content from LeadCMS (no media, no comments)
|
|
4
|
+
*/
|
|
5
|
+
import "dotenv/config";
|
|
6
|
+
import axios from "axios";
|
|
7
|
+
import { leadCMSUrl } from "./leadcms-helpers.js";
|
|
8
|
+
import { setCMSConfig, isContentSupported } from "../lib/cms-config-types.js";
|
|
9
|
+
import { fetchLeadCMSContent } from "./fetch-leadcms-content.js";
|
|
10
|
+
/**
|
|
11
|
+
* Main function
|
|
12
|
+
*/
|
|
13
|
+
async function main() {
|
|
14
|
+
console.log(`\nš LeadCMS Pull Content\n`);
|
|
15
|
+
// Check if content is supported
|
|
16
|
+
try {
|
|
17
|
+
console.log(`š Checking CMS configuration...`);
|
|
18
|
+
const configUrl = new URL('/api/config', leadCMSUrl).toString();
|
|
19
|
+
const response = await axios.get(configUrl, { timeout: 10000 });
|
|
20
|
+
if (response.data) {
|
|
21
|
+
setCMSConfig(response.data);
|
|
22
|
+
if (!isContentSupported()) {
|
|
23
|
+
console.log(`āļø Content entity not supported by this LeadCMS instance`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
console.log(`ā
Content entity supported\n`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.warn(`ā ļø Could not fetch CMS config: ${error.message}`);
|
|
31
|
+
console.warn(`ā ļø Assuming content is supported (backward compatibility)\n`);
|
|
32
|
+
}
|
|
33
|
+
// Fetch content and media
|
|
34
|
+
await fetchLeadCMSContent();
|
|
35
|
+
console.log(`\n⨠Content pull completed!\n`);
|
|
36
|
+
}
|
|
37
|
+
// If this script is run directly, execute the main function
|
|
38
|
+
if (typeof import.meta !== 'undefined' && process.argv[1] && import.meta.url === `file://${process.argv[1]}`) {
|
|
39
|
+
main().catch((error) => {
|
|
40
|
+
console.error("Error running LeadCMS content pull:", error.message);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
export { main as pullContent };
|
|
45
|
+
//# sourceMappingURL=pull-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull-content.js","sourceRoot":"","sources":["../../src/scripts/pull-content.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,gCAAgC;IAChC,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhE,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAE5B,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;gBACzE,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC/E,CAAC;IAED,0BAA0B;IAC1B,MAAM,mBAAmB,EAAE,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAC/C,CAAC;AAED,4DAA4D;AAC5D,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC7G,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Pull only media from LeadCMS (no content, no comments)
|
|
4
|
+
*/
|
|
5
|
+
import "dotenv/config";
|
|
6
|
+
/**
|
|
7
|
+
* Main function - currently media is fetched as part of content sync
|
|
8
|
+
* This is a placeholder for future dedicated media sync
|
|
9
|
+
*/
|
|
10
|
+
declare function main(): Promise<void>;
|
|
11
|
+
export { main as pullMedia };
|
|
12
|
+
//# sourceMappingURL=pull-media.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull-media.d.ts","sourceRoot":"","sources":["../../src/scripts/pull-media.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,eAAe,CAAC;AAKvB;;;GAGG;AACH,iBAAe,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA6BnC;AAUD,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Pull only media from LeadCMS (no content, no comments)
|
|
4
|
+
*/
|
|
5
|
+
import "dotenv/config";
|
|
6
|
+
import axios from "axios";
|
|
7
|
+
import { leadCMSUrl } from "./leadcms-helpers.js";
|
|
8
|
+
import { setCMSConfig, isMediaSupported } from "../lib/cms-config-types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Main function - currently media is fetched as part of content sync
|
|
11
|
+
* This is a placeholder for future dedicated media sync
|
|
12
|
+
*/
|
|
13
|
+
async function main() {
|
|
14
|
+
console.log(`\nš¼ļø LeadCMS Pull Media\n`);
|
|
15
|
+
// Check if media is supported
|
|
16
|
+
try {
|
|
17
|
+
console.log(`š Checking CMS configuration...`);
|
|
18
|
+
const configUrl = new URL('/api/config', leadCMSUrl).toString();
|
|
19
|
+
const response = await axios.get(configUrl, { timeout: 10000 });
|
|
20
|
+
if (response.data) {
|
|
21
|
+
setCMSConfig(response.data);
|
|
22
|
+
if (!isMediaSupported()) {
|
|
23
|
+
console.log(`āļø Media entity not supported by this LeadCMS instance`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
console.log(`ā
Media entity supported\n`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.warn(`ā ļø Could not fetch CMS config: ${error.message}`);
|
|
31
|
+
console.warn(`ā ļø Assuming media is supported (backward compatibility)\n`);
|
|
32
|
+
}
|
|
33
|
+
// Import and run content fetch (which includes media)
|
|
34
|
+
const { fetchLeadCMSContent } = await import('./fetch-leadcms-content.js');
|
|
35
|
+
await fetchLeadCMSContent();
|
|
36
|
+
console.log(`\n⨠Media pull completed!\n`);
|
|
37
|
+
}
|
|
38
|
+
// If this script is run directly, execute the main function
|
|
39
|
+
if (typeof import.meta !== 'undefined' && process.argv[1] && import.meta.url === `file://${process.argv[1]}`) {
|
|
40
|
+
main().catch((error) => {
|
|
41
|
+
console.error("Error running LeadCMS media pull:", error.message);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
export { main as pullMedia };
|
|
46
|
+
//# sourceMappingURL=pull-media.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull-media.js","sourceRoot":"","sources":["../../src/scripts/pull-media.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE5E;;;GAGG;AACH,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,8BAA8B;IAC9B,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhE,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAE5B,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;gBACvE,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAC7E,CAAC;IAED,sDAAsD;IACtD,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC3E,MAAM,mBAAmB,EAAE,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AAC7C,CAAC;AAED,4DAA4D;AAC5D,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC7G,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push-leadcms-content.d.ts","sourceRoot":"","sources":["../../src/scripts/push-leadcms-content.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAMvB,OAAO,EAGL,WAAW,IAAI,eAAe,EAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAsB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAWzE,UAAU,gBAAiB,SAAQ,eAAe;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,iBAAkB,SAAQ,WAAW;IAC7C,OAAO,EAAE,KAAK,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,iBAAiB;IACzB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,UAAU,WAAW;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAqKD;;;;GAIG;AACH,iBAAe,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkB7I;AAkjBD;;GAEG;AACH,iBAAe,QAAQ,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"push-leadcms-content.d.ts","sourceRoot":"","sources":["../../src/scripts/push-leadcms-content.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAMvB,OAAO,EAGL,WAAW,IAAI,eAAe,EAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAsB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAWzE,UAAU,gBAAiB,SAAQ,eAAe;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,iBAAkB,SAAQ,WAAW;IAC7C,OAAO,EAAE,KAAK,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,iBAAiB;IACzB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,UAAU,WAAW;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAqKD;;;;GAIG;AACH,iBAAe,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkB7I;AAkjBD;;GAEG;AACH,iBAAe,QAAQ,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiJhE;AA4LD,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,CAAC;AAG1C,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AA8BhF,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -691,6 +691,18 @@ async function pushMain(options = {}) {
|
|
|
691
691
|
const actionDescription = statusOnly ? 'status check' : 'push';
|
|
692
692
|
const targetDescription = targetId ? `ID ${targetId}` : targetSlug ? `slug "${targetSlug}"` : 'all content';
|
|
693
693
|
console.log(`[PUSH] Starting ${actionDescription} for ${targetDescription}...`);
|
|
694
|
+
// Check for API key if not in status-only mode
|
|
695
|
+
if (!statusOnly && !dryRun) {
|
|
696
|
+
const config = await import('../lib/config.js').then(m => m.getConfig());
|
|
697
|
+
if (!config.apiKey) {
|
|
698
|
+
console.log('\nā Cannot push changes: No API key configured (anonymous mode)');
|
|
699
|
+
console.log('\nš” To push changes, you need to authenticate:');
|
|
700
|
+
console.log(' ⢠Set LEADCMS_API_KEY in your .env file');
|
|
701
|
+
console.log(' ⢠Or run: leadcms login');
|
|
702
|
+
console.log('\nā¹ļø Tip: Use "leadcms status" to check changes without authentication');
|
|
703
|
+
return;
|
|
704
|
+
}
|
|
705
|
+
}
|
|
694
706
|
// Read local content
|
|
695
707
|
const localContent = await readLocalContent();
|
|
696
708
|
if (localContent.length === 0) {
|
|
@@ -782,8 +794,17 @@ async function pushMain(options = {}) {
|
|
|
782
794
|
return;
|
|
783
795
|
}
|
|
784
796
|
// Execute the sync
|
|
785
|
-
await executePush(finalOperations, { force });
|
|
786
|
-
|
|
797
|
+
const results = await executePush(finalOperations, { force });
|
|
798
|
+
// Display final message based on results
|
|
799
|
+
if (results.failed === 0) {
|
|
800
|
+
colorConsole.success('\nš Content push completed successfully!');
|
|
801
|
+
}
|
|
802
|
+
else if (results.successful > 0) {
|
|
803
|
+
colorConsole.warn(`\nā ļø Content push completed with errors: ${results.successful} successful, ${results.failed} failed`);
|
|
804
|
+
}
|
|
805
|
+
else {
|
|
806
|
+
colorConsole.error('\nā Content push failed - no changes were synced');
|
|
807
|
+
}
|
|
787
808
|
}
|
|
788
809
|
catch (error) {
|
|
789
810
|
const operation = statusOnly ? 'Status check' : 'Push';
|
|
@@ -810,7 +831,7 @@ async function executePush(operations, options = {}) {
|
|
|
810
831
|
}
|
|
811
832
|
}
|
|
812
833
|
// Use individual operations
|
|
813
|
-
await executeIndividualOperations(operations, { force });
|
|
834
|
+
return await executeIndividualOperations(operations, { force });
|
|
814
835
|
}
|
|
815
836
|
/**
|
|
816
837
|
* Execute operations individually (one by one)
|
|
@@ -837,7 +858,7 @@ async function executeIndividualOperations(operations, options = {}) {
|
|
|
837
858
|
}
|
|
838
859
|
catch (error) {
|
|
839
860
|
failed++;
|
|
840
|
-
colorConsole.error(`ā Failed to create ${
|
|
861
|
+
colorConsole.error(`ā Failed to create ${op.local.type}/${op.local.slug}: ${error.message}`);
|
|
841
862
|
}
|
|
842
863
|
}
|
|
843
864
|
}
|
|
@@ -865,7 +886,7 @@ async function executeIndividualOperations(operations, options = {}) {
|
|
|
865
886
|
}
|
|
866
887
|
catch (error) {
|
|
867
888
|
failed++;
|
|
868
|
-
|
|
889
|
+
colorConsole.error(`ā Failed to update ${op.local.type}/${op.local.slug}: ${error.message}`);
|
|
869
890
|
}
|
|
870
891
|
}
|
|
871
892
|
}
|
|
@@ -879,21 +900,21 @@ async function executeIndividualOperations(operations, options = {}) {
|
|
|
879
900
|
if (result) {
|
|
880
901
|
await updateLocalMetadata(op.local, result);
|
|
881
902
|
successful++;
|
|
882
|
-
|
|
903
|
+
colorConsole.success(`ā
Renamed: ${op.oldSlug} -> ${op.local.slug}`);
|
|
883
904
|
}
|
|
884
905
|
else {
|
|
885
906
|
failed++;
|
|
886
|
-
|
|
907
|
+
colorConsole.error(`ā Failed to rename: ${op.oldSlug} -> ${op.local.slug}`);
|
|
887
908
|
}
|
|
888
909
|
}
|
|
889
910
|
else {
|
|
890
911
|
failed++;
|
|
891
|
-
|
|
912
|
+
colorConsole.error(`ā Failed to rename ${op.oldSlug}: No remote ID`);
|
|
892
913
|
}
|
|
893
914
|
}
|
|
894
915
|
catch (error) {
|
|
895
916
|
failed++;
|
|
896
|
-
|
|
917
|
+
colorConsole.error(`ā Failed to rename ${op.oldSlug}: ${error.message}`);
|
|
897
918
|
}
|
|
898
919
|
}
|
|
899
920
|
}
|
|
@@ -907,21 +928,21 @@ async function executeIndividualOperations(operations, options = {}) {
|
|
|
907
928
|
if (result) {
|
|
908
929
|
await updateLocalMetadata(op.local, result);
|
|
909
930
|
successful++;
|
|
910
|
-
|
|
931
|
+
colorConsole.success(`ā
Type changed: ${op.local.slug} (${op.oldType} -> ${op.newType})`);
|
|
911
932
|
}
|
|
912
933
|
else {
|
|
913
934
|
failed++;
|
|
914
|
-
|
|
935
|
+
colorConsole.error(`ā Failed to change type: ${op.local.slug} (${op.oldType} -> ${op.newType})`);
|
|
915
936
|
}
|
|
916
937
|
}
|
|
917
938
|
else {
|
|
918
939
|
failed++;
|
|
919
|
-
|
|
940
|
+
colorConsole.error(`ā Failed to change type for ${op.local.slug}: No remote ID`);
|
|
920
941
|
}
|
|
921
942
|
}
|
|
922
943
|
catch (error) {
|
|
923
944
|
failed++;
|
|
924
|
-
|
|
945
|
+
colorConsole.error(`ā Failed to change type for ${op.local.slug}: ${error.message}`);
|
|
925
946
|
}
|
|
926
947
|
}
|
|
927
948
|
}
|
|
@@ -939,6 +960,7 @@ async function executeIndividualOperations(operations, options = {}) {
|
|
|
939
960
|
console.log('š” You may want to manually run the pull command to sync latest changes');
|
|
940
961
|
}
|
|
941
962
|
}
|
|
963
|
+
return { successful, failed };
|
|
942
964
|
}
|
|
943
965
|
/**
|
|
944
966
|
* Format local content for API submission
|