decoupled-cli 2.0.0
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 +416 -0
- package/bin/decoupled-cli +3 -0
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +386 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +84 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/content.d.ts +3 -0
- package/dist/commands/content.d.ts.map +1 -0
- package/dist/commands/content.js +199 -0
- package/dist/commands/content.js.map +1 -0
- package/dist/commands/download.d.ts +4 -0
- package/dist/commands/download.d.ts.map +1 -0
- package/dist/commands/download.js +127 -0
- package/dist/commands/download.js.map +1 -0
- package/dist/commands/health.d.ts +3 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +28 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/org.d.ts +3 -0
- package/dist/commands/org.d.ts.map +1 -0
- package/dist/commands/org.js +73 -0
- package/dist/commands/org.js.map +1 -0
- package/dist/commands/spaces.d.ts +3 -0
- package/dist/commands/spaces.d.ts.map +1 -0
- package/dist/commands/spaces.js +613 -0
- package/dist/commands/spaces.js.map +1 -0
- package/dist/commands/tokens.d.ts +3 -0
- package/dist/commands/tokens.d.ts.map +1 -0
- package/dist/commands/tokens.js +90 -0
- package/dist/commands/tokens.js.map +1 -0
- package/dist/commands/usage.d.ts +3 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +104 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +40 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +162 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/config.d.ts +63 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +317 -0
- package/dist/lib/config.js.map +1 -0
- package/examples/.cursorrules +189 -0
- package/examples/CLAUDE.md +1080 -0
- package/examples/GEMINI.md +1056 -0
- package/examples/content-import-sample.json +114 -0
- package/package.json +55 -0
|
@@ -0,0 +1,613 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.spacesCommand = void 0;
|
|
40
|
+
const commander_1 = require("commander");
|
|
41
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
42
|
+
const cli_table3_1 = __importDefault(require("cli-table3"));
|
|
43
|
+
const api_1 = require("../lib/api");
|
|
44
|
+
const config_1 = require("../lib/config");
|
|
45
|
+
// Helper function to check OAuth restrictions
|
|
46
|
+
function requiresPlatformAuth(commandName) {
|
|
47
|
+
if (config_1.configManager.isCurrentProfileOAuth()) {
|
|
48
|
+
console.error(chalk_1.default.red(`❌ Command '${commandName}' requires personal access token authentication`));
|
|
49
|
+
console.log(chalk_1.default.yellow('This command works with the DrupalCloud platform, not your Drupal site.'));
|
|
50
|
+
console.log(chalk_1.default.gray('To use platform commands, authenticate with: npx dcloud auth login'));
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.spacesCommand = new commander_1.Command('spaces')
|
|
55
|
+
.description('Manage DrupalCloud spaces (requires PAT authentication)');
|
|
56
|
+
exports.spacesCommand
|
|
57
|
+
.command('list')
|
|
58
|
+
.description('List all spaces')
|
|
59
|
+
.option('--archived', 'include archived spaces')
|
|
60
|
+
.option('--status <status>', 'filter by status')
|
|
61
|
+
.option('--json', 'output as JSON')
|
|
62
|
+
.action(async (options) => {
|
|
63
|
+
requiresPlatformAuth('spaces list');
|
|
64
|
+
try {
|
|
65
|
+
const client = await (0, api_1.createApiClient)();
|
|
66
|
+
const spaces = await client.getSpaces(options.archived);
|
|
67
|
+
if (options.json) {
|
|
68
|
+
console.log(JSON.stringify(spaces, null, 2));
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
console.log(chalk_1.default.bold('\n📦 Spaces'));
|
|
72
|
+
console.log('──────────');
|
|
73
|
+
if (spaces.spaces && spaces.spaces.length > 0) {
|
|
74
|
+
const table = new cli_table3_1.default({
|
|
75
|
+
head: [
|
|
76
|
+
chalk_1.default.cyan('ID'),
|
|
77
|
+
chalk_1.default.cyan('Name'),
|
|
78
|
+
chalk_1.default.cyan('Type'),
|
|
79
|
+
chalk_1.default.cyan('Template'),
|
|
80
|
+
chalk_1.default.cyan('Status'),
|
|
81
|
+
chalk_1.default.cyan('URL'),
|
|
82
|
+
chalk_1.default.cyan('Created')
|
|
83
|
+
],
|
|
84
|
+
style: {
|
|
85
|
+
head: [],
|
|
86
|
+
border: []
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
spaces.spaces.forEach((space) => {
|
|
90
|
+
const statusColor = space.drupalSiteStatus === 'active' ? chalk_1.default.green : chalk_1.default.yellow;
|
|
91
|
+
const createdDate = new Date(space.createdAt).toLocaleDateString();
|
|
92
|
+
// Map internal template names to user-friendly labels
|
|
93
|
+
const templateLabel = space.template === 'dcloud' ? 'Drupal Cloud' : space.template;
|
|
94
|
+
table.push([
|
|
95
|
+
space.id.toString(),
|
|
96
|
+
space.name,
|
|
97
|
+
space.type,
|
|
98
|
+
templateLabel,
|
|
99
|
+
statusColor(space.drupalSiteStatus),
|
|
100
|
+
space.drupalSiteUrl ? space.drupalSiteUrl : 'N/A',
|
|
101
|
+
createdDate
|
|
102
|
+
]);
|
|
103
|
+
});
|
|
104
|
+
console.log(table.toString());
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
console.log(chalk_1.default.gray('No spaces found.'));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
console.error(chalk_1.default.red('❌ Failed to list spaces:'), error instanceof Error ? error.message : String(error));
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
// TODO: Add other space commands (create, get, update, delete, clone, etc.)
|
|
117
|
+
exports.spacesCommand
|
|
118
|
+
.command('create <name>')
|
|
119
|
+
.description('Create a new space')
|
|
120
|
+
.option('--type <type>', 'space type (starter, pro, premium)', 'starter')
|
|
121
|
+
.option('--template <template>', 'space template (drupal, drupalx, next-drupal, drupalx-decoupled, dcloud)', 'dcloud')
|
|
122
|
+
.option('--description <description>', 'space description')
|
|
123
|
+
.action(async (name, options) => {
|
|
124
|
+
try {
|
|
125
|
+
const client = await (0, api_1.createApiClient)();
|
|
126
|
+
console.log(chalk_1.default.blue('🚀 Creating new space...'));
|
|
127
|
+
console.log(`Name: ${chalk_1.default.cyan(name)}`);
|
|
128
|
+
console.log(`Type: ${chalk_1.default.cyan(options.type)}`);
|
|
129
|
+
console.log(`Template: ${chalk_1.default.cyan(options.template)}`);
|
|
130
|
+
if (options.description) {
|
|
131
|
+
console.log(`Description: ${chalk_1.default.cyan(options.description)}`);
|
|
132
|
+
}
|
|
133
|
+
const spaceData = {
|
|
134
|
+
name: name,
|
|
135
|
+
type: options.type,
|
|
136
|
+
template: options.template,
|
|
137
|
+
...(options.description && { description: options.description })
|
|
138
|
+
};
|
|
139
|
+
const result = await client.createSpace(spaceData);
|
|
140
|
+
console.log(chalk_1.default.green('✅ Space created successfully!'));
|
|
141
|
+
console.log(`Space ID: ${chalk_1.default.cyan(result.space.id)}`);
|
|
142
|
+
console.log(`Machine Name: ${chalk_1.default.cyan(result.space.machineName)}`);
|
|
143
|
+
if (result.space.drupalSiteUrl) {
|
|
144
|
+
console.log(`URL: ${chalk_1.default.cyan(result.space.drupalSiteUrl)}`);
|
|
145
|
+
}
|
|
146
|
+
console.log(chalk_1.default.yellow('⏳ Space is being set up. Use "dcloud spaces status <id>" to check progress.'));
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
console.error(chalk_1.default.red('❌ Failed to create space:'), error instanceof Error ? error.message : String(error));
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
exports.spacesCommand
|
|
154
|
+
.command('get <id>')
|
|
155
|
+
.description('Get details of a specific space')
|
|
156
|
+
.option('--json', 'output as JSON')
|
|
157
|
+
.action(async (id, options) => {
|
|
158
|
+
try {
|
|
159
|
+
const client = await (0, api_1.createApiClient)();
|
|
160
|
+
const space = await client.getSpace(parseInt(id));
|
|
161
|
+
if (options.json) {
|
|
162
|
+
console.log(JSON.stringify(space, null, 2));
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
console.log(chalk_1.default.bold(`\n📦 Space Details (ID: ${id})`));
|
|
166
|
+
console.log('──────────────────────');
|
|
167
|
+
console.log(`Name: ${chalk_1.default.cyan(space.space.name)}`);
|
|
168
|
+
console.log(`Type: ${chalk_1.default.cyan(space.space.type)}`);
|
|
169
|
+
console.log(`Template: ${chalk_1.default.cyan(space.space.template === 'dcloud' ? 'Drupal Cloud' : space.space.template)}`);
|
|
170
|
+
console.log(`Machine Name: ${chalk_1.default.cyan(space.space.machineName)}`);
|
|
171
|
+
console.log(`Status: ${space.space.drupalSiteStatus === 'active' ? chalk_1.default.green(space.space.drupalSiteStatus) : chalk_1.default.yellow(space.space.drupalSiteStatus)}`);
|
|
172
|
+
if (space.space.drupalSiteUrl) {
|
|
173
|
+
console.log(`URL: ${chalk_1.default.cyan(space.space.drupalSiteUrl)}`);
|
|
174
|
+
}
|
|
175
|
+
console.log(`Created: ${chalk_1.default.gray(new Date(space.space.createdAt).toLocaleString())}`);
|
|
176
|
+
console.log(`Archived: ${space.space.archived ? chalk_1.default.red('Yes') : chalk_1.default.green('No')}`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
console.error(chalk_1.default.red('❌ Failed to get space:'), error instanceof Error ? error.message : String(error));
|
|
181
|
+
process.exit(1);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
exports.spacesCommand
|
|
185
|
+
.command('status <id>')
|
|
186
|
+
.description('Check the status of a space')
|
|
187
|
+
.action(async (id) => {
|
|
188
|
+
try {
|
|
189
|
+
const client = await (0, api_1.createApiClient)();
|
|
190
|
+
const status = await client.getSpaceStatus(parseInt(id));
|
|
191
|
+
console.log(chalk_1.default.bold(`\n📊 Space Status (ID: ${id})`));
|
|
192
|
+
console.log('─────────────────────');
|
|
193
|
+
console.log(`Ready: ${status.space?.ready ? chalk_1.default.green('Yes') : chalk_1.default.yellow('No')}`);
|
|
194
|
+
console.log(`Status: ${chalk_1.default.cyan(status.space?.drupalSiteStatus || 'Unknown')}`);
|
|
195
|
+
if (status.message) {
|
|
196
|
+
console.log(`Message: ${chalk_1.default.cyan(status.message)}`);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
console.error(chalk_1.default.red('❌ Failed to get status:'), error instanceof Error ? error.message : String(error));
|
|
201
|
+
process.exit(1);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
exports.spacesCommand
|
|
205
|
+
.command('delete <id>')
|
|
206
|
+
.description('Delete a space')
|
|
207
|
+
.option('--force', 'skip confirmation prompt')
|
|
208
|
+
.action(async (id, options) => {
|
|
209
|
+
try {
|
|
210
|
+
if (!options.force) {
|
|
211
|
+
const { default: inquirer } = await Promise.resolve().then(() => __importStar(require('inquirer')));
|
|
212
|
+
const answers = await inquirer.prompt([
|
|
213
|
+
{
|
|
214
|
+
type: 'confirm',
|
|
215
|
+
name: 'confirm',
|
|
216
|
+
message: `Are you sure you want to delete space ${id}? This action cannot be undone.`,
|
|
217
|
+
default: false
|
|
218
|
+
}
|
|
219
|
+
]);
|
|
220
|
+
if (!answers.confirm) {
|
|
221
|
+
console.log(chalk_1.default.yellow('Operation cancelled.'));
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const client = await (0, api_1.createApiClient)();
|
|
226
|
+
await client.deleteSpace(parseInt(id));
|
|
227
|
+
console.log(chalk_1.default.green(`✅ Space ${id} deleted successfully.`));
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
console.error(chalk_1.default.red('❌ Failed to delete space:'), error instanceof Error ? error.message : String(error));
|
|
231
|
+
process.exit(1);
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
exports.spacesCommand
|
|
235
|
+
.command('content-import [id]')
|
|
236
|
+
.description('Import content models and data to a space')
|
|
237
|
+
.option('-f, --file <file>', 'JSON file to import (required)')
|
|
238
|
+
.option('--preview', 'preview changes without applying them')
|
|
239
|
+
.option('--example', 'display example JSON format and exit')
|
|
240
|
+
.option('--json', 'output as JSON')
|
|
241
|
+
.action(async (id, options) => {
|
|
242
|
+
let importData;
|
|
243
|
+
try {
|
|
244
|
+
// Handle --example flag first
|
|
245
|
+
if (options.example) {
|
|
246
|
+
const exampleJson = {
|
|
247
|
+
"model": [
|
|
248
|
+
{
|
|
249
|
+
"bundle": "event",
|
|
250
|
+
"description": "Content type for managing events, conferences, and gatherings",
|
|
251
|
+
"label": "Event",
|
|
252
|
+
"body": true,
|
|
253
|
+
"fields": [
|
|
254
|
+
{
|
|
255
|
+
"id": "event_date",
|
|
256
|
+
"label": "Event Date",
|
|
257
|
+
"type": "datetime"
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"id": "location",
|
|
261
|
+
"label": "Location",
|
|
262
|
+
"type": "string"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"id": "featured_image",
|
|
266
|
+
"label": "Featured Image",
|
|
267
|
+
"type": "image"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"id": "event_details",
|
|
271
|
+
"label": "Event Details",
|
|
272
|
+
"type": "paragraph(event_detail)[]"
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"id": "tags",
|
|
276
|
+
"label": "Tags",
|
|
277
|
+
"type": "term(tags)[]"
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"id": "featured",
|
|
281
|
+
"label": "Featured",
|
|
282
|
+
"type": "bool"
|
|
283
|
+
}
|
|
284
|
+
]
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"entity": "paragraph",
|
|
288
|
+
"bundle": "event_detail",
|
|
289
|
+
"description": "Reusable content blocks for event information and details",
|
|
290
|
+
"label": "Event Detail",
|
|
291
|
+
"fields": [
|
|
292
|
+
{
|
|
293
|
+
"id": "detail_title",
|
|
294
|
+
"label": "Detail Title",
|
|
295
|
+
"type": "string!"
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"id": "detail_content",
|
|
299
|
+
"label": "Detail Content",
|
|
300
|
+
"type": "text"
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"id": "detail_image",
|
|
304
|
+
"label": "Detail Image",
|
|
305
|
+
"type": "image"
|
|
306
|
+
}
|
|
307
|
+
]
|
|
308
|
+
}
|
|
309
|
+
],
|
|
310
|
+
"content": [
|
|
311
|
+
{
|
|
312
|
+
"id": "detail1",
|
|
313
|
+
"type": "paragraph.event_detail",
|
|
314
|
+
"values": {
|
|
315
|
+
"detail_title": "Schedule",
|
|
316
|
+
"detail_content": "The event will run from 9:00 AM to 5:00 PM with lunch break at noon.",
|
|
317
|
+
"detail_image": {
|
|
318
|
+
"uri": "/modules/custom/dcloud_import/resources/placeholder.png",
|
|
319
|
+
"alt": "Event schedule timeline showing sessions and breaks",
|
|
320
|
+
"title": "Conference Schedule"
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"id": "detail2",
|
|
326
|
+
"type": "paragraph.event_detail",
|
|
327
|
+
"values": {
|
|
328
|
+
"detail_title": "Speakers",
|
|
329
|
+
"detail_content": "Join us for presentations by industry experts and thought leaders."
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"id": "event1",
|
|
334
|
+
"type": "node.event",
|
|
335
|
+
"path": "/events/web-dev-conference-2024",
|
|
336
|
+
"values": {
|
|
337
|
+
"title": "Web Development Conference 2024",
|
|
338
|
+
"body": "<p>Join us for a full day of learning about modern web development...</p>",
|
|
339
|
+
"event_date": "2024-03-15T09:00:00",
|
|
340
|
+
"location": "Convention Center Downtown",
|
|
341
|
+
"featured_image": {
|
|
342
|
+
"uri": "/modules/custom/dcloud_import/resources/placeholder.png",
|
|
343
|
+
"alt": "Web Development Conference 2024 promotional image",
|
|
344
|
+
"title": "Conference Hero Image"
|
|
345
|
+
},
|
|
346
|
+
"tags": [
|
|
347
|
+
"web-development",
|
|
348
|
+
"conference",
|
|
349
|
+
"technology"
|
|
350
|
+
],
|
|
351
|
+
"featured": true,
|
|
352
|
+
"event_details": [
|
|
353
|
+
"@detail1",
|
|
354
|
+
"@detail2"
|
|
355
|
+
]
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
]
|
|
359
|
+
};
|
|
360
|
+
console.log(chalk_1.default.blue('📄 Content Import Example JSON Format:'));
|
|
361
|
+
console.log('');
|
|
362
|
+
console.log(JSON.stringify(exampleJson, null, 2));
|
|
363
|
+
console.log('');
|
|
364
|
+
console.log(chalk_1.default.gray('💡 Save this as a .json file and use: dcloud spaces content-import <id> --file example.json'));
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
if (!options.file) {
|
|
368
|
+
console.error(chalk_1.default.red('❌ Error: --file parameter is required'));
|
|
369
|
+
console.log(chalk_1.default.gray('\nUsage: dcloud spaces content-import <id> --file <file.json>'));
|
|
370
|
+
console.log(chalk_1.default.gray(' dcloud spaces content-import <id> --file <file.json> --preview'));
|
|
371
|
+
console.log(chalk_1.default.gray(' dcloud spaces content-import --example'));
|
|
372
|
+
process.exit(1);
|
|
373
|
+
}
|
|
374
|
+
// Use default space if no ID provided
|
|
375
|
+
let spaceId;
|
|
376
|
+
if (!id) {
|
|
377
|
+
const defaultSpaceId = config_1.configManager.getDefaultSpace();
|
|
378
|
+
if (!defaultSpaceId) {
|
|
379
|
+
console.error(chalk_1.default.red('❌ Error: space ID is required'));
|
|
380
|
+
console.log(chalk_1.default.gray('\nUsage: dcloud spaces content-import <id> --file <file.json>'));
|
|
381
|
+
console.log(chalk_1.default.gray(' dcloud spaces content-import <id> --file <file.json> --preview'));
|
|
382
|
+
console.log(chalk_1.default.gray(' dcloud spaces content-import --example'));
|
|
383
|
+
console.log(chalk_1.default.gray('\n💡 Or set a default space: dcloud spaces use <id>'));
|
|
384
|
+
process.exit(1);
|
|
385
|
+
}
|
|
386
|
+
spaceId = defaultSpaceId;
|
|
387
|
+
console.log(chalk_1.default.blue(`🎯 Using default space: ${spaceId}`));
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
spaceId = parseInt(id);
|
|
391
|
+
if (isNaN(spaceId)) {
|
|
392
|
+
console.error(chalk_1.default.red('❌ Error: Invalid space ID. Must be a number.'));
|
|
393
|
+
process.exit(1);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs')));
|
|
397
|
+
const path = await Promise.resolve().then(() => __importStar(require('path')));
|
|
398
|
+
// Resolve file path
|
|
399
|
+
const filePath = path.resolve(options.file);
|
|
400
|
+
// Check if file exists
|
|
401
|
+
if (!fs.existsSync(filePath)) {
|
|
402
|
+
console.error(chalk_1.default.red(`❌ File not found: ${filePath}`));
|
|
403
|
+
process.exit(1);
|
|
404
|
+
}
|
|
405
|
+
console.log(chalk_1.default.blue(`🚀 Importing content to space ${spaceId}...`));
|
|
406
|
+
console.log(chalk_1.default.gray(`📁 File: ${filePath}`));
|
|
407
|
+
if (options.preview) {
|
|
408
|
+
console.log(chalk_1.default.yellow('🔍 Preview mode: No changes will be applied'));
|
|
409
|
+
}
|
|
410
|
+
// Read and parse JSON file
|
|
411
|
+
try {
|
|
412
|
+
const fileContent = fs.readFileSync(filePath, 'utf8');
|
|
413
|
+
importData = JSON.parse(fileContent);
|
|
414
|
+
}
|
|
415
|
+
catch (parseError) {
|
|
416
|
+
console.error(chalk_1.default.red('❌ Error parsing JSON file:'), parseError instanceof Error ? parseError.message : String(parseError));
|
|
417
|
+
process.exit(1);
|
|
418
|
+
}
|
|
419
|
+
// Validate basic structure
|
|
420
|
+
if (!importData.model || !Array.isArray(importData.model)) {
|
|
421
|
+
console.error(chalk_1.default.red('❌ Error: JSON must contain a "model" array'));
|
|
422
|
+
process.exit(1);
|
|
423
|
+
}
|
|
424
|
+
const client = await (0, api_1.createApiClient)();
|
|
425
|
+
const spaceResponse = await client.getSpace(spaceId);
|
|
426
|
+
if (!spaceResponse.space || spaceResponse.space.drupalSiteStatus !== 'active') {
|
|
427
|
+
console.error(chalk_1.default.red('❌ Error: Space is not active or not found'));
|
|
428
|
+
process.exit(1);
|
|
429
|
+
}
|
|
430
|
+
const siteUrl = spaceResponse.space.drupalSiteUrl;
|
|
431
|
+
console.log(chalk_1.default.gray(`🌐 Importing to: ${siteUrl}`));
|
|
432
|
+
// Make import request through platform API (proxy to Drupal site)
|
|
433
|
+
// Note: Direct Drupal site authentication requires OAuth tokens specific to each site
|
|
434
|
+
// For now, we'll proxy through our platform API which handles the authentication
|
|
435
|
+
console.log(chalk_1.default.blue('📤 Uploading import data...'));
|
|
436
|
+
const response = await client.importContent(spaceId, importData, options.preview || false);
|
|
437
|
+
if (options.json) {
|
|
438
|
+
console.log(JSON.stringify(response, null, 2));
|
|
439
|
+
}
|
|
440
|
+
else {
|
|
441
|
+
console.log('');
|
|
442
|
+
if (response.success) {
|
|
443
|
+
console.log(chalk_1.default.green(`✅ Import ${options.preview ? 'preview' : 'completed'} successfully!`));
|
|
444
|
+
if (response.operations) {
|
|
445
|
+
console.log(chalk_1.default.cyan(`📊 Operations: ${response.operations}`));
|
|
446
|
+
}
|
|
447
|
+
if (response.messages?.summary?.length) {
|
|
448
|
+
console.log(chalk_1.default.blue('\n📝 Summary:'));
|
|
449
|
+
response.messages.summary.forEach((msg) => {
|
|
450
|
+
console.log(chalk_1.default.gray(` • ${msg}`));
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
if (response.messages?.warnings?.length) {
|
|
454
|
+
console.log(chalk_1.default.yellow('\n⚠️ Warnings:'));
|
|
455
|
+
response.messages.warnings.forEach((msg) => {
|
|
456
|
+
console.log(chalk_1.default.yellow(` • ${msg}`));
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
if (!options.preview) {
|
|
460
|
+
console.log(chalk_1.default.green(`\n🎉 Content has been imported to ${spaceResponse.space.name}`));
|
|
461
|
+
console.log(chalk_1.default.gray(` Visit: ${siteUrl}/admin/content`));
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
console.log(chalk_1.default.yellow(`\n💡 Run without --preview to apply these changes`));
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
else {
|
|
468
|
+
// Handle platform response with informational notes
|
|
469
|
+
if (response.note) {
|
|
470
|
+
console.log(chalk_1.default.blue('📋 Platform Response:'));
|
|
471
|
+
console.log(chalk_1.default.gray(` ${response.note}`));
|
|
472
|
+
console.log(chalk_1.default.blue(`\n📋 Your import data for ${response.spaceName}:`));
|
|
473
|
+
console.log(chalk_1.default.gray(` • Content types: ${importData.model.length}`));
|
|
474
|
+
console.log(chalk_1.default.gray(` • Content items: ${importData.content?.length || 0}`));
|
|
475
|
+
console.log(chalk_1.default.gray(` • Target: ${response.siteUrl}`));
|
|
476
|
+
console.log(chalk_1.default.gray(` • Preview mode: ${response.preview ? 'Yes' : 'No'}`));
|
|
477
|
+
console.log(chalk_1.default.cyan('\n💡 Alternative: Use direct Drupal content import:'));
|
|
478
|
+
console.log(chalk_1.default.gray(` npx dcloud-cli content import --file ${options.file}`));
|
|
479
|
+
}
|
|
480
|
+
else {
|
|
481
|
+
console.error(chalk_1.default.red('❌ Import failed:'), response.error);
|
|
482
|
+
process.exit(1);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
catch (error) {
|
|
488
|
+
if (error.response?.status === 401) {
|
|
489
|
+
console.error(chalk_1.default.red('❌ Authentication failed. Please check your token or run "dcloud auth login"'));
|
|
490
|
+
}
|
|
491
|
+
else if (error.response?.status === 403) {
|
|
492
|
+
console.error(chalk_1.default.red('❌ Permission denied. Your token needs "import dcloud config" permission'));
|
|
493
|
+
}
|
|
494
|
+
else if (error.response?.status === 404) {
|
|
495
|
+
console.error(chalk_1.default.red('❌ Import API not found. This space may not support content import'));
|
|
496
|
+
}
|
|
497
|
+
else if (error.response?.status === 501) {
|
|
498
|
+
// Handle 501 status when platform endpoint is not available
|
|
499
|
+
const data = error.response?.data;
|
|
500
|
+
if (data?.note) {
|
|
501
|
+
console.log(chalk_1.default.blue('📋 Platform Response:'));
|
|
502
|
+
console.log(chalk_1.default.gray(` ${data.note}`));
|
|
503
|
+
console.log(chalk_1.default.blue(`\n📋 Your import data for ${data.spaceName}:`));
|
|
504
|
+
console.log(chalk_1.default.gray(` • Content types: ${importData.model.length}`));
|
|
505
|
+
console.log(chalk_1.default.gray(` • Content items: ${importData.content?.length || 0}`));
|
|
506
|
+
console.log(chalk_1.default.gray(` • Target: ${data.siteUrl}`));
|
|
507
|
+
console.log(chalk_1.default.gray(` • Preview mode: ${data.preview ? 'Yes' : 'No'}`));
|
|
508
|
+
console.log(chalk_1.default.cyan('\n💡 Alternative: Use direct Drupal content import:'));
|
|
509
|
+
console.log(chalk_1.default.gray(` npx dcloud-cli content import --file ${options.file}`));
|
|
510
|
+
}
|
|
511
|
+
else {
|
|
512
|
+
console.error(chalk_1.default.red('❌ Platform content import not available'));
|
|
513
|
+
console.log(chalk_1.default.cyan('💡 Use direct Drupal content import instead:'));
|
|
514
|
+
console.log(chalk_1.default.gray(` npx dcloud-cli content import --file ${options.file}`));
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
else if (error.response?.data?.error) {
|
|
518
|
+
console.error(chalk_1.default.red('❌ Import failed:'), error.response.data.error);
|
|
519
|
+
}
|
|
520
|
+
else {
|
|
521
|
+
console.error(chalk_1.default.red('❌ Failed to import content:'), error.message);
|
|
522
|
+
}
|
|
523
|
+
process.exit(1);
|
|
524
|
+
}
|
|
525
|
+
});
|
|
526
|
+
// Command to set default space
|
|
527
|
+
exports.spacesCommand
|
|
528
|
+
.command('use <id>')
|
|
529
|
+
.description('Set the default space for commands')
|
|
530
|
+
.action(async (id) => {
|
|
531
|
+
try {
|
|
532
|
+
const spaceId = parseInt(id);
|
|
533
|
+
if (isNaN(spaceId)) {
|
|
534
|
+
console.error(chalk_1.default.red('❌ Invalid space ID. Must be a number.'));
|
|
535
|
+
process.exit(1);
|
|
536
|
+
}
|
|
537
|
+
// Verify the space exists by trying to fetch it
|
|
538
|
+
const client = await (0, api_1.createApiClient)();
|
|
539
|
+
try {
|
|
540
|
+
const spaceResponse = await client.getSpace(spaceId);
|
|
541
|
+
const space = spaceResponse.space;
|
|
542
|
+
config_1.configManager.setDefaultSpace(spaceId);
|
|
543
|
+
console.log(chalk_1.default.green(`✅ Default space set to: ${space.name} (ID: ${spaceId})`));
|
|
544
|
+
console.log(chalk_1.default.gray('💡 You can now run commands without specifying space ID'));
|
|
545
|
+
console.log(chalk_1.default.gray(' Example: dcloud spaces content-import --file data.json'));
|
|
546
|
+
}
|
|
547
|
+
catch (spaceError) {
|
|
548
|
+
if (spaceError.response?.status === 404) {
|
|
549
|
+
console.error(chalk_1.default.red(`❌ Space ${spaceId} not found`));
|
|
550
|
+
}
|
|
551
|
+
else {
|
|
552
|
+
console.error(chalk_1.default.red('❌ Failed to verify space:'), spaceError.message);
|
|
553
|
+
}
|
|
554
|
+
process.exit(1);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
catch (error) {
|
|
558
|
+
console.error(chalk_1.default.red('❌ Failed to set default space:'), error instanceof Error ? error.message : String(error));
|
|
559
|
+
process.exit(1);
|
|
560
|
+
}
|
|
561
|
+
});
|
|
562
|
+
// Command to show current default space
|
|
563
|
+
exports.spacesCommand
|
|
564
|
+
.command('current')
|
|
565
|
+
.description('Show the current default space')
|
|
566
|
+
.action(async () => {
|
|
567
|
+
try {
|
|
568
|
+
const defaultSpaceId = config_1.configManager.getDefaultSpace();
|
|
569
|
+
if (!defaultSpaceId) {
|
|
570
|
+
console.log(chalk_1.default.yellow('⚠️ No default space set'));
|
|
571
|
+
console.log(chalk_1.default.gray('💡 Set one with: dcloud spaces use <id>'));
|
|
572
|
+
return;
|
|
573
|
+
}
|
|
574
|
+
// Get space details
|
|
575
|
+
try {
|
|
576
|
+
const client = await (0, api_1.createApiClient)();
|
|
577
|
+
const spaceResponse = await client.getSpace(defaultSpaceId);
|
|
578
|
+
const space = spaceResponse.space;
|
|
579
|
+
console.log(chalk_1.default.green(`🎯 Current default space:`));
|
|
580
|
+
console.log(chalk_1.default.blue(` ${space.name} (ID: ${defaultSpaceId})`));
|
|
581
|
+
console.log(chalk_1.default.gray(` ${space.drupalSiteUrl || 'No URL available'}`));
|
|
582
|
+
}
|
|
583
|
+
catch (error) {
|
|
584
|
+
console.log(chalk_1.default.yellow(`⚠️ Default space set to ID ${defaultSpaceId}, but space not accessible`));
|
|
585
|
+
console.log(chalk_1.default.gray('💡 You may need to clear and reset: dcloud spaces clear'));
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
catch (error) {
|
|
589
|
+
console.error(chalk_1.default.red('❌ Failed to get default space:'), error instanceof Error ? error.message : String(error));
|
|
590
|
+
process.exit(1);
|
|
591
|
+
}
|
|
592
|
+
});
|
|
593
|
+
// Command to clear default space
|
|
594
|
+
exports.spacesCommand
|
|
595
|
+
.command('clear')
|
|
596
|
+
.description('Clear the default space setting')
|
|
597
|
+
.action(() => {
|
|
598
|
+
try {
|
|
599
|
+
const currentDefault = config_1.configManager.getDefaultSpace();
|
|
600
|
+
if (!currentDefault) {
|
|
601
|
+
console.log(chalk_1.default.yellow('⚠️ No default space set'));
|
|
602
|
+
return;
|
|
603
|
+
}
|
|
604
|
+
config_1.configManager.clearDefaultSpace();
|
|
605
|
+
console.log(chalk_1.default.green('✅ Default space cleared'));
|
|
606
|
+
console.log(chalk_1.default.gray('💡 You will need to specify space ID in commands again'));
|
|
607
|
+
}
|
|
608
|
+
catch (error) {
|
|
609
|
+
console.error(chalk_1.default.red('❌ Failed to clear default space:'), error instanceof Error ? error.message : String(error));
|
|
610
|
+
process.exit(1);
|
|
611
|
+
}
|
|
612
|
+
});
|
|
613
|
+
//# sourceMappingURL=spaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spaces.js","sourceRoot":"","sources":["../../src/commands/spaces.ts"],"names":[],"mappings":"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"}
|