@flexsiteio/cli 1.0.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.
Files changed (50) hide show
  1. package/.github/workflows/publish.yml +28 -0
  2. package/.nvmrc +1 -0
  3. package/README.md +166 -0
  4. package/db_727aa8c7-dev_xYhn06gTRFNmPbW3uOVKlQ.sql.gz +0 -0
  5. package/db_faef57dd-dev_3wnRGEk6KwkI_wgvygWf4g.sql.gz +0 -0
  6. package/dist/bin/flexsite.d.ts +7 -0
  7. package/dist/bin/flexsite.d.ts.map +1 -0
  8. package/dist/bin/flexsite.js +31 -0
  9. package/dist/bin/flexsite.js.map +1 -0
  10. package/dist/commands/auth.d.ts +6 -0
  11. package/dist/commands/auth.d.ts.map +1 -0
  12. package/dist/commands/auth.js +325 -0
  13. package/dist/commands/auth.js.map +1 -0
  14. package/dist/commands/config.d.ts +6 -0
  15. package/dist/commands/config.d.ts.map +1 -0
  16. package/dist/commands/config.js +56 -0
  17. package/dist/commands/config.js.map +1 -0
  18. package/dist/commands/db.d.ts +6 -0
  19. package/dist/commands/db.d.ts.map +1 -0
  20. package/dist/commands/db.js +274 -0
  21. package/dist/commands/db.js.map +1 -0
  22. package/dist/commands/files.d.ts +6 -0
  23. package/dist/commands/files.d.ts.map +1 -0
  24. package/dist/commands/files.js +272 -0
  25. package/dist/commands/files.js.map +1 -0
  26. package/dist/commands/sync.d.ts +7 -0
  27. package/dist/commands/sync.d.ts.map +1 -0
  28. package/dist/commands/sync.js +202 -0
  29. package/dist/commands/sync.js.map +1 -0
  30. package/dist/index.d.ts +11 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +27 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/lib/api.d.ts +47 -0
  35. package/dist/lib/api.d.ts.map +1 -0
  36. package/dist/lib/api.js +203 -0
  37. package/dist/lib/api.js.map +1 -0
  38. package/dist/lib/config.d.ts +54 -0
  39. package/dist/lib/config.d.ts.map +1 -0
  40. package/dist/lib/config.js +150 -0
  41. package/dist/lib/config.js.map +1 -0
  42. package/dist/lib/detector.d.ts +26 -0
  43. package/dist/lib/detector.d.ts.map +1 -0
  44. package/dist/lib/detector.js +305 -0
  45. package/dist/lib/detector.js.map +1 -0
  46. package/dist/types.d.ts +58 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +6 -0
  49. package/dist/types.js.map +1 -0
  50. package/package.json +50 -0
@@ -0,0 +1,28 @@
1
+ name: Publish to npm
2
+
3
+ on:
4
+ release:
5
+ types: [created]
6
+
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+
13
+ - name: Setup Node.js
14
+ uses: actions/setup-node@v4
15
+ with:
16
+ node-version: '20'
17
+ registry-url: 'https://registry.npmjs.org'
18
+
19
+ - name: Install dependencies
20
+ run: npm ci
21
+
22
+ - name: Build
23
+ run: npm run build
24
+
25
+ - name: Publish to npm
26
+ run: npm publish --access public
27
+ env:
28
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
package/.nvmrc ADDED
@@ -0,0 +1 @@
1
+ 22
package/README.md ADDED
@@ -0,0 +1,166 @@
1
+ # FlexSite CLI
2
+
3
+ Command-line tool for managing FlexSite projects. Download and import database and files backups to your local Lando or DDEV environment.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g @flexsiteio/cli
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ 1. **Get an access token** from your FlexSite dashboard under Profile > Access Tokens
14
+
15
+ 2. **Login with your token:**
16
+ ```bash
17
+ flexsite auth login
18
+ ```
19
+
20
+ 3. **Sync your local environment:**
21
+ ```bash
22
+ flexsite sync
23
+ ```
24
+
25
+ ## Commands
26
+
27
+ ### Authentication
28
+
29
+ ```bash
30
+ # Login with a personal access token
31
+ flexsite auth login
32
+
33
+ # Login with token directly (non-interactive)
34
+ flexsite auth login --token fst_xxx_...
35
+
36
+ # Check authentication status
37
+ flexsite auth status
38
+
39
+ # Logout
40
+ flexsite auth logout
41
+ ```
42
+
43
+ ### Database Operations
44
+
45
+ ```bash
46
+ # Download and import latest database backup
47
+ flexsite db pull
48
+
49
+ # Download to specific environment
50
+ flexsite db pull --env <environmentId>
51
+
52
+ # List available backups
53
+ flexsite db list
54
+
55
+ # Download without importing
56
+ flexsite db pull --no-import
57
+ ```
58
+
59
+ ### Files Operations
60
+
61
+ ```bash
62
+ # Download and extract latest files backup
63
+ flexsite files pull
64
+
65
+ # Download to specific environment
66
+ flexsite files pull --env <environmentId>
67
+
68
+ # List available backups
69
+ flexsite files list
70
+
71
+ # Download without extracting
72
+ flexsite files pull --no-import
73
+ ```
74
+
75
+ ### Sync (Database + Files)
76
+
77
+ ```bash
78
+ # Sync both database and files
79
+ flexsite sync
80
+
81
+ # Sync only database
82
+ flexsite sync --db-only
83
+
84
+ # Sync only files
85
+ flexsite sync --files-only
86
+ ```
87
+
88
+ ### Configuration
89
+
90
+ ```bash
91
+ # Show current configuration
92
+ flexsite config show
93
+
94
+ # Set default organization
95
+ flexsite config set org <orgId>
96
+
97
+ # Set default project
98
+ flexsite config set project <projectId>
99
+
100
+ # Set default environment
101
+ flexsite config set env <envId>
102
+
103
+ # Show config file path
104
+ flexsite config path
105
+ ```
106
+
107
+ ## Local Environment Support
108
+
109
+ The CLI automatically detects Lando and DDEV environments and uses the appropriate commands for importing databases and files.
110
+
111
+ ### Lando
112
+
113
+ When a `.lando.yml` file is present or the `LANDO` environment variable is set to `ON`, the CLI will use:
114
+ - `lando db-import` for database imports
115
+ - Standard `tar` extraction for files, with permission fixes via `lando ssh`
116
+
117
+ ### DDEV
118
+
119
+ When a `.ddev/config.yaml` file is present or the `IS_DDEV_PROJECT` environment variable is set to `true`, the CLI will use:
120
+ - `ddev import-db` for database imports
121
+ - Standard `tar` extraction for files, with permission fixes via `ddev exec`
122
+
123
+ ## Configuration File
124
+
125
+ The CLI stores configuration in `~/.flexsite/config.json`:
126
+
127
+ ```json
128
+ {
129
+ "version": 1,
130
+ "tokens": {
131
+ "d112c061": {
132
+ "token": "fst_d112c061_...",
133
+ "userId": "110bc5d0-...",
134
+ "organizationId": "d112c061-...",
135
+ "organizationName": "My Company"
136
+ }
137
+ },
138
+ "defaults": {
139
+ "organizationId": "d112c061-...",
140
+ "projectId": "727aa8c7-...",
141
+ "environmentId": "f9b72cdd-..."
142
+ }
143
+ }
144
+ ```
145
+
146
+ ## Environment Variables
147
+
148
+ - `FLEXSITE_API_URL` - Override the API base URL (default: `https://cli-api.flexsite.io/v1`)
149
+
150
+ ## Token Scopes
151
+
152
+ When creating a personal access token, you can limit its permissions:
153
+
154
+ | Scope | Description |
155
+ |-------|-------------|
156
+ | `backup:read` | Download database backups |
157
+ | `backup:create` | Create new database backups |
158
+ | `files:read` | Download files backups |
159
+ | `files:create` | Create new files backups |
160
+ | `drush:execute` | Execute Drush commands remotely |
161
+ | `projects:read` | List projects |
162
+ | `environments:read` | List environments |
163
+
164
+ ## License
165
+
166
+ MIT
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * FlexSite CLI
4
+ * Command-line tool for managing FlexSite projects.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=flexsite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flexsite.d.ts","sourceRoot":"","sources":["../../src/bin/flexsite.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * FlexSite CLI
5
+ * Command-line tool for managing FlexSite projects.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ const commander_1 = require("commander");
9
+ const auth_js_1 = require("../commands/auth.js");
10
+ const db_js_1 = require("../commands/db.js");
11
+ const files_js_1 = require("../commands/files.js");
12
+ const sync_js_1 = require("../commands/sync.js");
13
+ const config_js_1 = require("../commands/config.js");
14
+ const program = new commander_1.Command();
15
+ program
16
+ .name('flexsite')
17
+ .description('FlexSite CLI - Manage your FlexSite projects from the command line')
18
+ .version('1.0.0');
19
+ // Register commands
20
+ program.addCommand(auth_js_1.authCommand);
21
+ program.addCommand(db_js_1.dbCommand);
22
+ program.addCommand(files_js_1.filesCommand);
23
+ program.addCommand(sync_js_1.syncCommand);
24
+ program.addCommand(config_js_1.configCommand);
25
+ // Parse arguments
26
+ program.parse(process.argv);
27
+ // Show help if no command provided
28
+ if (!process.argv.slice(2).length) {
29
+ program.outputHelp();
30
+ }
31
+ //# sourceMappingURL=flexsite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flexsite.js","sourceRoot":"","sources":["../../src/bin/flexsite.ts"],"names":[],"mappings":";;AAEA;;;GAGG;;AAEH,yCAAoC;AACpC,iDAAkD;AAClD,6CAA8C;AAC9C,mDAAoD;AACpD,iDAAkD;AAClD,qDAAsD;AAEtD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,oEAAoE,CAAC;KACjF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,qBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,iBAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,uBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,qBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,yBAAa,CAAC,CAAC;AAElC,kBAAkB;AAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,mCAAmC;AACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Authentication commands for FlexSite CLI.
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare const authCommand: Command;
6
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,eAAO,MAAM,WAAW,SACe,CAAC"}
@@ -0,0 +1,325 @@
1
+ "use strict";
2
+ /**
3
+ * Authentication commands for FlexSite CLI.
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.authCommand = void 0;
10
+ const commander_1 = require("commander");
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const inquirer_1 = __importDefault(require("inquirer"));
13
+ const ora_1 = __importDefault(require("ora"));
14
+ const config_js_1 = require("../lib/config.js");
15
+ const api_js_1 = require("../lib/api.js");
16
+ exports.authCommand = new commander_1.Command('auth')
17
+ .description('Manage authentication');
18
+ /**
19
+ * Login with a personal access token
20
+ */
21
+ exports.authCommand
22
+ .command('login')
23
+ .description('Authenticate with a personal access token')
24
+ .option('-t, --token <token>', 'Personal access token')
25
+ .action(async (options) => {
26
+ try {
27
+ let token = options.token;
28
+ // Prompt for token if not provided
29
+ if (!token) {
30
+ console.log(chalk_1.default.cyan('\nTo get a personal access token:'));
31
+ console.log('1. Go to https://flexsite.io/dashboard/profile/tokens');
32
+ console.log('2. Click "Create Token"');
33
+ console.log('3. Copy the generated token\n');
34
+ const answers = await inquirer_1.default.prompt([
35
+ {
36
+ type: 'password',
37
+ name: 'token',
38
+ message: 'Enter your personal access token:',
39
+ mask: '*',
40
+ validate: (input) => {
41
+ if (!input)
42
+ return 'Token is required';
43
+ if (!input.startsWith('fst_'))
44
+ return 'Invalid token format (should start with fst_)';
45
+ return true;
46
+ }
47
+ }
48
+ ]);
49
+ token = answers.token;
50
+ }
51
+ // Validate token format
52
+ if (!token.startsWith('fst_')) {
53
+ console.error(chalk_1.default.red('Invalid token format. Token should start with "fst_"'));
54
+ process.exit(1);
55
+ }
56
+ // Verify the token with the API
57
+ const spinner = (0, ora_1.default)('Verifying token...').start();
58
+ try {
59
+ const authInfo = await (0, api_js_1.verifyAuth)(token);
60
+ spinner.succeed('Token verified successfully!');
61
+ // Extract organization prefix from token
62
+ const orgPrefix = token.split('_')[1];
63
+ // Save the token
64
+ const orgName = authInfo.organizationName || 'Unknown Organization';
65
+ (0, config_js_1.saveToken)(orgPrefix, {
66
+ token,
67
+ userId: authInfo.userId,
68
+ organizationId: authInfo.organizationId,
69
+ organizationName: orgName
70
+ });
71
+ console.log(chalk_1.default.green('\n✓ Authentication successful!'));
72
+ console.log(` Organization: ${orgName} (${authInfo.organizationId.substring(0, 8)}...)`);
73
+ console.log(` Scopes: ${authInfo.scopes.join(', ')}`);
74
+ console.log(`\nConfiguration saved to: ${(0, config_js_1.getConfigPath)()}`);
75
+ }
76
+ catch (error) {
77
+ spinner.fail('Token verification failed');
78
+ throw error;
79
+ }
80
+ }
81
+ catch (error) {
82
+ if (error instanceof Error) {
83
+ console.error(chalk_1.default.red(`\nError: ${error.message}`));
84
+ }
85
+ process.exit(1);
86
+ }
87
+ });
88
+ /**
89
+ * Show current authentication status
90
+ */
91
+ exports.authCommand
92
+ .command('status')
93
+ .alias('token')
94
+ .description('Show current authentication status')
95
+ .action(async () => {
96
+ try {
97
+ const tokens = (0, config_js_1.getAllTokens)();
98
+ const defaults = (0, config_js_1.getDefaults)();
99
+ if (Object.keys(tokens).length === 0) {
100
+ console.log(chalk_1.default.yellow('Not authenticated. Run "flexsite auth login" to authenticate.'));
101
+ return;
102
+ }
103
+ console.log(chalk_1.default.cyan('\nAuthenticated accounts:\n'));
104
+ const invalidTokens = [];
105
+ for (const [prefix, config] of Object.entries(tokens)) {
106
+ const isDefault = defaults.organizationId === config.organizationId;
107
+ const spinner = (0, ora_1.default)(`Checking ${prefix}...`).start();
108
+ try {
109
+ const authInfo = await (0, api_js_1.verifyAuth)(config.token);
110
+ spinner.stop();
111
+ const orgName = authInfo.organizationName || config.organizationName || 'Unknown';
112
+ const defaultBadge = isDefault ? chalk_1.default.cyan(' [default]') : '';
113
+ console.log(chalk_1.default.green(`✓ ${prefix}`) + defaultBadge);
114
+ console.log(` Organization: ${orgName}`);
115
+ console.log(` User ID: ${authInfo.userId}`);
116
+ console.log(` Scopes: ${authInfo.scopes.join(', ')}`);
117
+ console.log();
118
+ }
119
+ catch (error) {
120
+ spinner.stop();
121
+ invalidTokens.push(prefix);
122
+ const defaultBadge = isDefault ? chalk_1.default.cyan(' [default]') : '';
123
+ console.log(chalk_1.default.red(`✗ ${prefix} (invalid or revoked)`) + defaultBadge);
124
+ console.log(` Organization: ${config.organizationName || config.organizationId}`);
125
+ console.log();
126
+ }
127
+ }
128
+ console.log(`Configuration file: ${(0, config_js_1.getConfigPath)()}`);
129
+ // Offer to remove invalid tokens
130
+ if (invalidTokens.length > 0) {
131
+ console.log();
132
+ const { removeInvalid } = await inquirer_1.default.prompt([
133
+ {
134
+ type: 'confirm',
135
+ name: 'removeInvalid',
136
+ message: `Remove ${invalidTokens.length} invalid/revoked token(s)?`,
137
+ default: true
138
+ }
139
+ ]);
140
+ if (removeInvalid) {
141
+ for (const prefix of invalidTokens) {
142
+ const config = tokens[prefix];
143
+ (0, config_js_1.removeToken)(prefix);
144
+ // Clear default org if we're removing its token
145
+ if (defaults.organizationId === config.organizationId) {
146
+ const remainingTokens = (0, config_js_1.getAllTokens)();
147
+ const firstRemaining = Object.values(remainingTokens)[0];
148
+ if (firstRemaining) {
149
+ (0, config_js_1.setDefaultOrganization)(firstRemaining.organizationId);
150
+ console.log(chalk_1.default.cyan(` Default organization changed to: ${firstRemaining.organizationName || firstRemaining.organizationId}`));
151
+ }
152
+ }
153
+ }
154
+ console.log(chalk_1.default.green(`Removed ${invalidTokens.length} invalid token(s).`));
155
+ }
156
+ }
157
+ }
158
+ catch (error) {
159
+ if (error instanceof Error) {
160
+ console.error(chalk_1.default.red(`Error: ${error.message}`));
161
+ }
162
+ process.exit(1);
163
+ }
164
+ });
165
+ /**
166
+ * Logout / remove authentication
167
+ */
168
+ exports.authCommand
169
+ .command('logout')
170
+ .description('Remove stored authentication tokens')
171
+ .option('-a, --all', 'Remove all tokens')
172
+ .option('-o, --org <orgId>', 'Remove token for specific organization')
173
+ .action(async (options) => {
174
+ try {
175
+ const tokens = (0, config_js_1.getAllTokens)();
176
+ const defaults = (0, config_js_1.getDefaults)();
177
+ if (Object.keys(tokens).length === 0) {
178
+ console.log(chalk_1.default.yellow('No tokens to remove.'));
179
+ return;
180
+ }
181
+ const removeAndUpdateDefault = (prefix) => {
182
+ const config = tokens[prefix];
183
+ (0, config_js_1.removeToken)(prefix);
184
+ // If we removed the default org's token, update default
185
+ if (config && defaults.organizationId === config.organizationId) {
186
+ const remainingTokens = (0, config_js_1.getAllTokens)();
187
+ const firstRemaining = Object.values(remainingTokens)[0];
188
+ if (firstRemaining) {
189
+ (0, config_js_1.setDefaultOrganization)(firstRemaining.organizationId);
190
+ console.log(chalk_1.default.cyan(` Default organization changed to: ${firstRemaining.organizationName || firstRemaining.organizationId}`));
191
+ }
192
+ }
193
+ };
194
+ if (options.all) {
195
+ const { confirm } = await inquirer_1.default.prompt([
196
+ {
197
+ type: 'confirm',
198
+ name: 'confirm',
199
+ message: 'Remove all stored tokens?',
200
+ default: false
201
+ }
202
+ ]);
203
+ if (confirm) {
204
+ for (const prefix of Object.keys(tokens)) {
205
+ (0, config_js_1.removeToken)(prefix);
206
+ }
207
+ console.log(chalk_1.default.green('All tokens removed.'));
208
+ }
209
+ }
210
+ else if (options.org) {
211
+ if ((0, config_js_1.removeToken)(options.org)) {
212
+ console.log(chalk_1.default.green(`Token for ${options.org} removed.`));
213
+ }
214
+ else {
215
+ console.log(chalk_1.default.yellow(`No token found for ${options.org}`));
216
+ }
217
+ }
218
+ else {
219
+ // Interactive selection with organization names
220
+ const choices = Object.entries(tokens).map(([prefix, config]) => {
221
+ const isDefault = defaults.organizationId === config.organizationId;
222
+ const displayName = config.organizationName || config.organizationId;
223
+ const defaultBadge = isDefault ? ' [default]' : '';
224
+ return {
225
+ name: `${prefix}: ${displayName}${defaultBadge}`,
226
+ value: prefix
227
+ };
228
+ });
229
+ const { selected } = await inquirer_1.default.prompt([
230
+ {
231
+ type: 'list',
232
+ name: 'selected',
233
+ message: 'Select token to remove:',
234
+ choices: [...choices, { name: 'Cancel', value: null }]
235
+ }
236
+ ]);
237
+ if (selected) {
238
+ removeAndUpdateDefault(selected);
239
+ console.log(chalk_1.default.green(`Token removed.`));
240
+ }
241
+ }
242
+ }
243
+ catch (error) {
244
+ if (error instanceof Error) {
245
+ console.error(chalk_1.default.red(`Error: ${error.message}`));
246
+ }
247
+ process.exit(1);
248
+ }
249
+ });
250
+ /**
251
+ * Switch default organization
252
+ */
253
+ exports.authCommand
254
+ .command('use')
255
+ .description('Switch default organization')
256
+ .argument('[org]', 'Organization prefix or ID')
257
+ .action(async (org) => {
258
+ try {
259
+ const tokens = (0, config_js_1.getAllTokens)();
260
+ const defaults = (0, config_js_1.getDefaults)();
261
+ if (Object.keys(tokens).length === 0) {
262
+ console.log(chalk_1.default.yellow('No tokens available. Run "flexsite auth login" to authenticate.'));
263
+ return;
264
+ }
265
+ if (Object.keys(tokens).length === 1) {
266
+ const onlyToken = Object.values(tokens)[0];
267
+ console.log(chalk_1.default.yellow(`Only one organization available: ${onlyToken.organizationName || onlyToken.organizationId}`));
268
+ return;
269
+ }
270
+ let selectedPrefix = null;
271
+ if (org) {
272
+ // Find by prefix or full ID
273
+ const orgPrefix = org.substring(0, 8);
274
+ if (tokens[orgPrefix]) {
275
+ selectedPrefix = orgPrefix;
276
+ }
277
+ else {
278
+ // Search by full ID
279
+ for (const [prefix, config] of Object.entries(tokens)) {
280
+ if (config.organizationId === org) {
281
+ selectedPrefix = prefix;
282
+ break;
283
+ }
284
+ }
285
+ }
286
+ if (!selectedPrefix) {
287
+ console.log(chalk_1.default.yellow(`No token found for organization: ${org}`));
288
+ return;
289
+ }
290
+ }
291
+ else {
292
+ // Interactive selection
293
+ const choices = Object.entries(tokens).map(([prefix, config]) => {
294
+ const isDefault = defaults.organizationId === config.organizationId;
295
+ const displayName = config.organizationName || config.organizationId;
296
+ const defaultBadge = isDefault ? chalk_1.default.cyan(' (current)') : '';
297
+ return {
298
+ name: `${displayName}${defaultBadge}`,
299
+ value: prefix
300
+ };
301
+ });
302
+ const { selected } = await inquirer_1.default.prompt([
303
+ {
304
+ type: 'list',
305
+ name: 'selected',
306
+ message: 'Select organization to use:',
307
+ choices
308
+ }
309
+ ]);
310
+ selectedPrefix = selected;
311
+ }
312
+ if (selectedPrefix) {
313
+ const config = tokens[selectedPrefix];
314
+ (0, config_js_1.setDefaultOrganization)(config.organizationId);
315
+ console.log(chalk_1.default.green(`✓ Now using: ${config.organizationName || config.organizationId}`));
316
+ }
317
+ }
318
+ catch (error) {
319
+ if (error instanceof Error) {
320
+ console.error(chalk_1.default.red(`Error: ${error.message}`));
321
+ }
322
+ process.exit(1);
323
+ }
324
+ });
325
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Configuration commands for FlexSite CLI.
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare const configCommand: Command;
6
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,aAAa,SACgB,CAAC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ /**
3
+ * Configuration commands for FlexSite CLI.
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.configCommand = void 0;
10
+ const commander_1 = require("commander");
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const config_js_1 = require("../lib/config.js");
13
+ exports.configCommand = new commander_1.Command('config')
14
+ .description('Manage CLI configuration');
15
+ /**
16
+ * Show current configuration
17
+ */
18
+ exports.configCommand
19
+ .command('show')
20
+ .description('Display current configuration')
21
+ .action(() => {
22
+ const config = (0, config_js_1.getConfig)();
23
+ const defaults = (0, config_js_1.getDefaults)();
24
+ console.log(chalk_1.default.cyan('\nFlexSite CLI Configuration\n'));
25
+ console.log(`Config file: ${(0, config_js_1.getConfigPath)()}\n`);
26
+ const tokenCount = Object.keys(config.tokens).length;
27
+ console.log(chalk_1.default.gray(`Stored tokens: ${tokenCount}`));
28
+ for (const [prefix, token] of Object.entries(config.tokens)) {
29
+ const isDefault = defaults.organizationId === token.organizationId;
30
+ const defaultBadge = isDefault ? chalk_1.default.cyan(' [default]') : '';
31
+ console.log(` ${prefix}: ${token.organizationName || token.organizationId}${defaultBadge}`);
32
+ }
33
+ if (tokenCount === 0) {
34
+ console.log(chalk_1.default.yellow(' No tokens stored. Run "flexsite auth login" to authenticate.'));
35
+ }
36
+ });
37
+ /**
38
+ * Clear configuration
39
+ */
40
+ exports.configCommand
41
+ .command('clear')
42
+ .description('Clear all configuration (including tokens)')
43
+ .action(() => {
44
+ (0, config_js_1.clearConfig)();
45
+ console.log(chalk_1.default.green('Configuration cleared.'));
46
+ });
47
+ /**
48
+ * Show config path
49
+ */
50
+ exports.configCommand
51
+ .command('path')
52
+ .description('Show the configuration file path')
53
+ .action(() => {
54
+ console.log((0, config_js_1.getConfigPath)());
55
+ });
56
+ //# sourceMappingURL=config.js.map