@taggr/cli 1.0.3 → 1.0.5
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 +100 -2
- package/dist/commands/check.d.ts +7 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +162 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/ci.d.ts +9 -0
- package/dist/commands/ci.d.ts.map +1 -0
- package/dist/commands/ci.js +63 -0
- package/dist/commands/ci.js.map +1 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +6 -3
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +17 -4
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +32 -7
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +66 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/watch.d.ts +6 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +138 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +20 -4
- package/dist/commands/whoami.js.map +1 -1
- package/dist/index.js +38 -5
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/api.d.ts +5 -0
- package/dist/utils/api.d.ts.map +1 -1
- package/dist/utils/api.js +82 -6
- package/dist/utils/api.js.map +1 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +15 -5
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/generator.d.ts +3 -3
- package/dist/utils/generator.d.ts.map +1 -1
- package/dist/utils/generator.js +103 -18
- package/dist/utils/generator.js.map +1 -1
- package/dist/utils/metadata.d.ts +25 -0
- package/dist/utils/metadata.d.ts.map +1 -0
- package/dist/utils/metadata.js +157 -0
- package/dist/utils/metadata.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -43,6 +43,11 @@ npm install -g @taggr/cli
|
|
|
43
43
|
| `taggr list` | List all your labels |
|
|
44
44
|
| `taggr pull <name>` | Pull a specific label |
|
|
45
45
|
| `taggr pull --all` | Pull all labels |
|
|
46
|
+
| `taggr sync` | Force sync all labels (alias for pull --all) |
|
|
47
|
+
| `taggr check` | Check if labels are up-to-date |
|
|
48
|
+
| `taggr check --strict` | Fail build if labels are outdated (for CI/CD) |
|
|
49
|
+
| `taggr watch` | Watch for label changes and auto-sync |
|
|
50
|
+
| `taggr status` | Show sync status and label versions |
|
|
46
51
|
|
|
47
52
|
## Options
|
|
48
53
|
|
|
@@ -51,7 +56,7 @@ npm install -g @taggr/cli
|
|
|
51
56
|
taggr login <token> [options]
|
|
52
57
|
|
|
53
58
|
Options:
|
|
54
|
-
-u, --url <url> API URL (default: https://taggr
|
|
59
|
+
-u, --url <url> API URL (default: https://taggr.onrender.com/api)
|
|
55
60
|
```
|
|
56
61
|
|
|
57
62
|
### Pull
|
|
@@ -62,6 +67,35 @@ Options:
|
|
|
62
67
|
-a, --all Pull all labels
|
|
63
68
|
```
|
|
64
69
|
|
|
70
|
+
### Check
|
|
71
|
+
```bash
|
|
72
|
+
taggr check [options]
|
|
73
|
+
|
|
74
|
+
Options:
|
|
75
|
+
--strict Fail if labels are outdated (for CI/CD)
|
|
76
|
+
--fix Show fix instructions
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Watch
|
|
80
|
+
```bash
|
|
81
|
+
taggr watch [options]
|
|
82
|
+
|
|
83
|
+
Options:
|
|
84
|
+
-i, --interval <seconds> Poll interval in seconds (default: 30)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Status
|
|
88
|
+
```bash
|
|
89
|
+
taggr status
|
|
90
|
+
|
|
91
|
+
Shows:
|
|
92
|
+
- Last sync time
|
|
93
|
+
- API URL
|
|
94
|
+
- Label count
|
|
95
|
+
- Individual label versions
|
|
96
|
+
- File status
|
|
97
|
+
```
|
|
98
|
+
|
|
65
99
|
## Generated Files
|
|
66
100
|
|
|
67
101
|
When you run `taggr pull`, files are created in a `./taggr` directory:
|
|
@@ -69,9 +103,12 @@ When you run `taggr pull`, files are created in a `./taggr` directory:
|
|
|
69
103
|
```
|
|
70
104
|
./taggr/
|
|
71
105
|
├── labels.json # All your labels
|
|
72
|
-
|
|
106
|
+
├── labels.d.ts # TypeScript definitions for autocomplete
|
|
107
|
+
└── .taggr.json # Metadata file (version tracking, sync status)
|
|
73
108
|
```
|
|
74
109
|
|
|
110
|
+
> **Note:** The `.taggr.json` file is automatically managed by the CLI. It tracks which version of each label you're using and when labels were last synced. This enables features like version checking and integrity verification.
|
|
111
|
+
|
|
75
112
|
### labels.json
|
|
76
113
|
```json
|
|
77
114
|
{
|
|
@@ -103,10 +140,71 @@ console.log(labels.anotherLabel);
|
|
|
103
140
|
### TypeScript/JavaScript Support
|
|
104
141
|
The `labels.d.ts` file provides autocomplete in VS Code and other editors for both TypeScript and JavaScript projects.
|
|
105
142
|
|
|
143
|
+
## Advanced Features
|
|
144
|
+
|
|
145
|
+
### Version Tracking
|
|
146
|
+
|
|
147
|
+
The CLI automatically tracks which version of each label you're using. This ensures your team stays in sync and prevents outdated labels in production.
|
|
148
|
+
|
|
149
|
+
When you run `taggr pull`, the CLI:
|
|
150
|
+
- Saves version information for each label
|
|
151
|
+
- Tracks when labels were last synced
|
|
152
|
+
- Stores checksums for integrity verification
|
|
153
|
+
|
|
154
|
+
### Build-Time Validation
|
|
155
|
+
|
|
156
|
+
Use `taggr check --strict` in your CI/CD pipeline to fail builds if labels are outdated. This prevents deploying stale labels to production.
|
|
157
|
+
|
|
158
|
+
**Example CI/CD Integration:**
|
|
159
|
+
```yaml
|
|
160
|
+
# .github/workflows/taggr-check.yml
|
|
161
|
+
- name: Check labels are up-to-date
|
|
162
|
+
run: |
|
|
163
|
+
taggr login $TAGGR_API_KEY
|
|
164
|
+
taggr check --strict
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Auto-Sync Mode
|
|
168
|
+
|
|
169
|
+
Run `taggr watch` to automatically sync labels when they change in the cloud. Perfect for development!
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
taggr watch
|
|
173
|
+
# Or with custom interval
|
|
174
|
+
taggr watch --interval 60
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
The watch mode will:
|
|
178
|
+
- Poll the API for changes every N seconds
|
|
179
|
+
- Automatically pull updated labels
|
|
180
|
+
- Show notifications when labels change
|
|
181
|
+
|
|
182
|
+
### Integrity Protection
|
|
183
|
+
|
|
184
|
+
The CLI detects manual edits to `labels.json` and warns you before overwriting. This prevents accidental loss of local changes.
|
|
185
|
+
|
|
186
|
+
### Check Sync Status
|
|
187
|
+
|
|
188
|
+
Use `taggr status` to see:
|
|
189
|
+
- When labels were last synced
|
|
190
|
+
- Which version of each label you're using
|
|
191
|
+
- Whether files exist and are up-to-date
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
taggr status
|
|
195
|
+
```
|
|
196
|
+
|
|
106
197
|
## Configuration
|
|
107
198
|
|
|
108
199
|
The CLI stores your token in `~/.taggr/config.json`. This file is created when you run `taggr login`.
|
|
109
200
|
|
|
201
|
+
## Tips
|
|
202
|
+
|
|
203
|
+
- Add `./taggr` to your `.gitignore` if you don't want to commit generated files
|
|
204
|
+
- The `.taggr.json` metadata file is automatically managed - don't edit it manually
|
|
205
|
+
- Use `taggr check --strict` in CI/CD to ensure labels are always up-to-date
|
|
206
|
+
- Run `taggr watch` during development for automatic label syncing
|
|
207
|
+
|
|
110
208
|
## License
|
|
111
209
|
|
|
112
210
|
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAQD,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAqKvE"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { requireAuth } from '../utils/config.js';
|
|
4
|
+
import { initApi, getLabelVersions } from '../utils/api.js';
|
|
5
|
+
import { getMetadata } from '../utils/metadata.js';
|
|
6
|
+
export async function checkCommand(options) {
|
|
7
|
+
// In CI mode (when CI environment variable is set), be silent
|
|
8
|
+
const isCI = process.env.CI === 'true' || process.env.CI === '1';
|
|
9
|
+
const spinner = isCI ? null : ora('Checking label versions...').start();
|
|
10
|
+
try {
|
|
11
|
+
if (!isCI && spinner) {
|
|
12
|
+
spinner.text = 'Checking label versions...';
|
|
13
|
+
}
|
|
14
|
+
// Check if metadata exists
|
|
15
|
+
const metadata = await getMetadata();
|
|
16
|
+
if (!metadata) {
|
|
17
|
+
if (spinner) {
|
|
18
|
+
spinner.fail(chalk.red('No sync metadata found'));
|
|
19
|
+
console.log();
|
|
20
|
+
console.log(chalk.dim('Labels have not been synced yet. Run "taggr pull --all" first.'));
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
console.error('No sync metadata found. Run "taggr pull --all" first.');
|
|
24
|
+
}
|
|
25
|
+
if (options.strict) {
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
// Initialize API
|
|
31
|
+
const config = await requireAuth();
|
|
32
|
+
initApi(config);
|
|
33
|
+
// Get current versions from API
|
|
34
|
+
if (spinner) {
|
|
35
|
+
spinner.text = 'Fetching current label versions...';
|
|
36
|
+
}
|
|
37
|
+
const remoteVersions = await getLabelVersions();
|
|
38
|
+
// Compare local vs remote versions
|
|
39
|
+
const outdated = [];
|
|
40
|
+
const missing = [];
|
|
41
|
+
const extra = [];
|
|
42
|
+
// Check each label in metadata
|
|
43
|
+
for (const [labelName, labelMeta] of Object.entries(metadata.labels)) {
|
|
44
|
+
const remoteVersion = remoteVersions[labelName];
|
|
45
|
+
if (!remoteVersion) {
|
|
46
|
+
// Label exists locally but not remotely (might have been deleted)
|
|
47
|
+
extra.push(labelName);
|
|
48
|
+
}
|
|
49
|
+
else if (labelMeta.version !== remoteVersion) {
|
|
50
|
+
outdated.push({
|
|
51
|
+
name: labelName,
|
|
52
|
+
localVersion: labelMeta.version,
|
|
53
|
+
remoteVersion,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Check for new labels
|
|
58
|
+
for (const labelName of Object.keys(remoteVersions)) {
|
|
59
|
+
if (!metadata.labels[labelName]) {
|
|
60
|
+
missing.push(labelName);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (spinner) {
|
|
64
|
+
spinner.stop();
|
|
65
|
+
}
|
|
66
|
+
// Display results
|
|
67
|
+
if (outdated.length === 0 && missing.length === 0 && extra.length === 0) {
|
|
68
|
+
if (!isCI) {
|
|
69
|
+
console.log();
|
|
70
|
+
console.log(chalk.green('✓ All labels are up-to-date!'));
|
|
71
|
+
console.log();
|
|
72
|
+
}
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
// Show outdated labels
|
|
76
|
+
if (outdated.length > 0) {
|
|
77
|
+
if (isCI) {
|
|
78
|
+
console.error(`Outdated labels: ${outdated.map(l => `${l.name} (${l.localVersion} → ${l.remoteVersion})`).join(', ')}`);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
console.log();
|
|
82
|
+
console.log(chalk.yellow(`⚠ Found ${outdated.length} outdated label(s):`));
|
|
83
|
+
console.log();
|
|
84
|
+
for (const label of outdated) {
|
|
85
|
+
console.log(` ${chalk.white(label.name)}: ` +
|
|
86
|
+
`${chalk.red(label.localVersion)} → ${chalk.green(label.remoteVersion)}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Show missing labels
|
|
91
|
+
if (missing.length > 0) {
|
|
92
|
+
if (isCI) {
|
|
93
|
+
console.error(`Missing labels: ${missing.join(', ')}`);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
console.log();
|
|
97
|
+
console.log(chalk.yellow(`⚠ Found ${missing.length} new label(s) not in local files:`));
|
|
98
|
+
console.log();
|
|
99
|
+
for (const labelName of missing) {
|
|
100
|
+
console.log(` ${chalk.white(labelName)}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Show extra labels (only in non-CI mode)
|
|
105
|
+
if (extra.length > 0 && !isCI) {
|
|
106
|
+
console.log();
|
|
107
|
+
console.log(chalk.dim(`ℹ ${extra.length} label(s) exist locally but not in cloud:`));
|
|
108
|
+
console.log();
|
|
109
|
+
for (const labelName of extra) {
|
|
110
|
+
console.log(chalk.dim(` ${labelName}`));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (!isCI) {
|
|
114
|
+
console.log();
|
|
115
|
+
}
|
|
116
|
+
// Handle --fix option
|
|
117
|
+
if (options.fix) {
|
|
118
|
+
if (!isCI) {
|
|
119
|
+
console.log(chalk.dim('Run "taggr pull --all" to update your labels.'));
|
|
120
|
+
console.log();
|
|
121
|
+
}
|
|
122
|
+
if (options.strict) {
|
|
123
|
+
process.exit(1);
|
|
124
|
+
}
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
// Handle --strict option
|
|
128
|
+
if (options.strict) {
|
|
129
|
+
if (!isCI) {
|
|
130
|
+
console.log(chalk.red('Labels are outdated. Build failed.'));
|
|
131
|
+
console.log();
|
|
132
|
+
console.log(chalk.dim('To fix:'));
|
|
133
|
+
console.log(chalk.dim(' taggr pull --all'));
|
|
134
|
+
console.log();
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
console.error('Labels are outdated. Run "taggr pull --all" to update.');
|
|
138
|
+
}
|
|
139
|
+
process.exit(1);
|
|
140
|
+
}
|
|
141
|
+
// Non-strict mode - just warn
|
|
142
|
+
if (!isCI) {
|
|
143
|
+
console.log(chalk.dim('Run "taggr pull --all" to update your labels.'));
|
|
144
|
+
console.log(chalk.dim('Use --strict flag to fail builds when labels are outdated.'));
|
|
145
|
+
console.log();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
if (spinner) {
|
|
150
|
+
spinner.fail(chalk.red('Check failed'));
|
|
151
|
+
console.error(chalk.red(`\nError: ${error.message}`));
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
console.error(`Error: ${error.message}`);
|
|
155
|
+
}
|
|
156
|
+
if (options.strict) {
|
|
157
|
+
process.exit(1);
|
|
158
|
+
}
|
|
159
|
+
process.exit(1);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../src/commands/ci.ts"],"names":[],"mappings":"AAKA,UAAU,SAAS;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DjE"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { requireAuth } from '../utils/config.js';
|
|
2
|
+
import { initApi, getLabelVersions } from '../utils/api.js';
|
|
3
|
+
import { getMetadata } from '../utils/metadata.js';
|
|
4
|
+
/**
|
|
5
|
+
* CI-friendly check command (silent, exit codes only)
|
|
6
|
+
*/
|
|
7
|
+
export async function ciCommand(options) {
|
|
8
|
+
try {
|
|
9
|
+
// Check if metadata exists
|
|
10
|
+
const metadata = await getMetadata();
|
|
11
|
+
if (!metadata) {
|
|
12
|
+
console.error('No sync metadata found. Run "taggr pull --all" first.');
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
// Initialize API
|
|
16
|
+
const config = await requireAuth();
|
|
17
|
+
initApi(config);
|
|
18
|
+
// Get current versions from API
|
|
19
|
+
const remoteVersions = await getLabelVersions();
|
|
20
|
+
// Compare local vs remote versions
|
|
21
|
+
const outdated = [];
|
|
22
|
+
const missing = [];
|
|
23
|
+
// Check each label in metadata
|
|
24
|
+
for (const [labelName, labelMeta] of Object.entries(metadata.labels)) {
|
|
25
|
+
const remoteVersion = remoteVersions[labelName];
|
|
26
|
+
if (!remoteVersion) {
|
|
27
|
+
// Label exists locally but not remotely
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
else if (labelMeta.version !== remoteVersion) {
|
|
31
|
+
outdated.push({
|
|
32
|
+
name: labelName,
|
|
33
|
+
localVersion: labelMeta.version,
|
|
34
|
+
remoteVersion,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Check for new labels
|
|
39
|
+
for (const labelName of Object.keys(remoteVersions)) {
|
|
40
|
+
if (!metadata.labels[labelName]) {
|
|
41
|
+
missing.push(labelName);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// Exit with error if outdated or missing
|
|
45
|
+
if (outdated.length > 0 || missing.length > 0) {
|
|
46
|
+
if (outdated.length > 0) {
|
|
47
|
+
console.error(`Outdated labels: ${outdated.map(l => l.name).join(', ')}`);
|
|
48
|
+
}
|
|
49
|
+
if (missing.length > 0) {
|
|
50
|
+
console.error(`Missing labels: ${missing.join(', ')}`);
|
|
51
|
+
}
|
|
52
|
+
console.error('Run "taggr pull --all" to update labels.');
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
// All good
|
|
56
|
+
process.exit(0);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error(`Error: ${error.message}`);
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=ci.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/commands/ci.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMnD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAkB;IAChD,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,iBAAiB;QACjB,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEhB,gCAAgC;QAChC,MAAM,cAAc,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAEhD,mCAAmC;QACnC,MAAM,QAAQ,GAAyE,EAAE,CAAC;QAC1F,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,+BAA+B;QAC/B,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACrE,MAAM,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,wCAAwC;gBACxC,SAAS;YACX,CAAC;iBAAM,IAAI,SAAS,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;gBAC/C,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,SAAS,CAAC,OAAO;oBAC/B,aAAa;iBACd,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,oBAAoB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,KAAK,CAAC,mBAAmB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,WAAW;QACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAoDjD"}
|
package/dist/commands/list.js
CHANGED
|
@@ -25,9 +25,12 @@ export async function listCommand() {
|
|
|
25
25
|
const status = label.isPublished
|
|
26
26
|
? chalk.green('●')
|
|
27
27
|
: chalk.yellow('○');
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
const labelName = label.name || 'Unnamed';
|
|
29
|
+
const labelVersion = label.version || '0.0.0';
|
|
30
|
+
console.log(` ${status} ${chalk.white(labelName)} ${chalk.dim(`v${labelVersion}`)}`);
|
|
31
|
+
if (label.description && typeof label.description === 'string') {
|
|
32
|
+
const desc = label.description.substring(0, 60);
|
|
33
|
+
console.log(chalk.dim(` ${desc}${label.description.length > 60 ? '...' : ''}`));
|
|
31
34
|
}
|
|
32
35
|
}
|
|
33
36
|
console.log();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEhB,MAAM,cAAc,GAAG,MAAM,SAAS,EAAE,CAAC;QAEzC,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC1F,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC;QAEzC,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW;gBAC9B,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;gBAClB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAEtB,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAQA,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAQA,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiD3F"}
|
package/dist/commands/login.js
CHANGED
|
@@ -3,8 +3,15 @@ import ora from 'ora';
|
|
|
3
3
|
import { saveConfig } from '../utils/config.js';
|
|
4
4
|
import { initApi, whoami } from '../utils/api.js';
|
|
5
5
|
// Default to production API URL, fallback to localhost for development
|
|
6
|
-
const DEFAULT_API_URL = process.env.TAGGR_API_URL || 'https://taggr
|
|
6
|
+
const DEFAULT_API_URL = process.env.TAGGR_API_URL || 'https://taggr.onrender.com/api';
|
|
7
7
|
export async function loginCommand(apiKey, options) {
|
|
8
|
+
// Validate API key is provided
|
|
9
|
+
if (!apiKey || typeof apiKey !== 'string' || apiKey.trim().length === 0) {
|
|
10
|
+
console.error(chalk.red('Error: API key is required'));
|
|
11
|
+
console.log();
|
|
12
|
+
console.log(chalk.dim('Usage: taggr login <API_KEY> [--url <API_URL>]'));
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
8
15
|
const spinner = ora('Verifying API key...').start();
|
|
9
16
|
try {
|
|
10
17
|
const apiUrl = options.url || DEFAULT_API_URL;
|
|
@@ -16,13 +23,19 @@ export async function loginCommand(apiKey, options) {
|
|
|
16
23
|
throw new Error('Invalid response from server: user data not found');
|
|
17
24
|
}
|
|
18
25
|
const { user } = whoamiResponse;
|
|
26
|
+
// Validate user object has required properties
|
|
27
|
+
if (!user.uid || !user.email) {
|
|
28
|
+
throw new Error('Invalid user data: missing required fields (uid, email)');
|
|
29
|
+
}
|
|
19
30
|
// Save config
|
|
20
31
|
await saveConfig({ apiKey, apiUrl });
|
|
21
32
|
spinner.succeed(chalk.green('Successfully logged in!'));
|
|
22
33
|
console.log();
|
|
23
|
-
console.log(chalk.dim(' User: ') + chalk.white(user.displayName || user.email));
|
|
24
|
-
console.log(chalk.dim(' Email: ') + chalk.white(user.email));
|
|
25
|
-
|
|
34
|
+
console.log(chalk.dim(' User: ') + chalk.white(user.displayName || user.email || 'Not set'));
|
|
35
|
+
console.log(chalk.dim(' Email: ') + chalk.white(user.email || 'Not set'));
|
|
36
|
+
// Safely access stats
|
|
37
|
+
const totalLabels = user.stats?.totalLabels ?? 0;
|
|
38
|
+
console.log(chalk.dim(' Labels: ') + chalk.white(totalLabels.toString()));
|
|
26
39
|
console.log();
|
|
27
40
|
console.log(chalk.dim('You can now use "taggr pull" to fetch your labels.'));
|
|
28
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAa,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAElD,uEAAuE;AACvE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAQA,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8F/F"}
|
package/dist/commands/pull.js
CHANGED
|
@@ -3,6 +3,7 @@ import ora from 'ora';
|
|
|
3
3
|
import { requireAuth } from '../utils/config.js';
|
|
4
4
|
import { initApi, getLabels, getLabelByName } from '../utils/api.js';
|
|
5
5
|
import { writeLabelFile, writeAllLabels, updateIndexFile } from '../utils/generator.js';
|
|
6
|
+
import { detectManualEdits } from '../utils/metadata.js';
|
|
6
7
|
export async function pullCommand(name, options) {
|
|
7
8
|
const spinner = ora('Connecting to Taggr...').start();
|
|
8
9
|
try {
|
|
@@ -21,8 +22,22 @@ export async function pullCommand(name, options) {
|
|
|
21
22
|
console.log(chalk.dim('Create labels at https://taggr.dev'));
|
|
22
23
|
return;
|
|
23
24
|
}
|
|
25
|
+
// Check for manual edits
|
|
26
|
+
spinner.text = 'Checking for manual edits...';
|
|
27
|
+
const editCheck = await detectManualEdits(labels);
|
|
28
|
+
if (editCheck.isEdited) {
|
|
29
|
+
spinner.warn(chalk.yellow('Manual edits detected'));
|
|
30
|
+
console.log();
|
|
31
|
+
console.log(chalk.yellow(`⚠ Warning: ${editCheck.reason || 'Labels may have been manually edited'}`));
|
|
32
|
+
console.log();
|
|
33
|
+
console.log(chalk.dim('Pulling will overwrite your manual changes.'));
|
|
34
|
+
console.log(chalk.dim('If you want to keep your changes, consider:'));
|
|
35
|
+
console.log(chalk.dim(' 1. Committing your changes to version control first'));
|
|
36
|
+
console.log(chalk.dim(' 2. Creating labels in the Taggr dashboard instead'));
|
|
37
|
+
console.log();
|
|
38
|
+
}
|
|
24
39
|
spinner.text = `Writing ${count} label(s)...`;
|
|
25
|
-
const files = await writeAllLabels(labels);
|
|
40
|
+
const files = await writeAllLabels(labels, config.apiUrl);
|
|
26
41
|
spinner.succeed(chalk.green(`Pulled ${count} label(s) successfully!`));
|
|
27
42
|
console.log();
|
|
28
43
|
console.log(chalk.dim('Files created:'));
|
|
@@ -41,15 +56,16 @@ export async function pullCommand(name, options) {
|
|
|
41
56
|
}
|
|
42
57
|
const { label } = labelResponse;
|
|
43
58
|
spinner.text = 'Writing file...';
|
|
44
|
-
const filePath = await writeLabelFile(label);
|
|
59
|
+
const filePath = await writeLabelFile(label, config.apiUrl);
|
|
45
60
|
// Update files to include this label
|
|
46
61
|
const allLabelsResponse = await getLabels();
|
|
47
62
|
if (!allLabelsResponse || !allLabelsResponse.labels) {
|
|
48
63
|
throw new Error('Invalid response from server: labels data not found');
|
|
49
64
|
}
|
|
50
65
|
const { labels: allLabels } = allLabelsResponse;
|
|
51
|
-
await updateIndexFile(allLabels);
|
|
52
|
-
|
|
66
|
+
await updateIndexFile(allLabels, config.apiUrl);
|
|
67
|
+
const labelName = label.name || 'label';
|
|
68
|
+
spinner.succeed(chalk.green(`Pulled "${labelName}" successfully!`));
|
|
53
69
|
console.log();
|
|
54
70
|
console.log(chalk.dim('File updated:'));
|
|
55
71
|
console.log(chalk.dim(` ${filePath}`));
|
|
@@ -76,7 +92,8 @@ function printUsageInstructions(labels) {
|
|
|
76
92
|
console.log();
|
|
77
93
|
if (labels.length === 1) {
|
|
78
94
|
const label = labels[0];
|
|
79
|
-
const
|
|
95
|
+
const labelName = label.name || 'label';
|
|
96
|
+
const varName = toCamelCase(labelName);
|
|
80
97
|
console.log(chalk.dim(' // Import labels'));
|
|
81
98
|
console.log(chalk.white(` import labels from './taggr/labels.json';`));
|
|
82
99
|
console.log();
|
|
@@ -89,11 +106,19 @@ function printUsageInstructions(labels) {
|
|
|
89
106
|
console.log();
|
|
90
107
|
console.log(chalk.dim(' // Use the values'));
|
|
91
108
|
const firstLabel = labels[0];
|
|
92
|
-
|
|
109
|
+
const labelName = firstLabel?.name || 'label';
|
|
110
|
+
console.log(chalk.white(` console.log(labels.${toCamelCase(labelName)});`));
|
|
93
111
|
}
|
|
94
112
|
console.log();
|
|
95
113
|
}
|
|
96
114
|
function toCamelCase(str) {
|
|
97
|
-
|
|
115
|
+
if (!str || typeof str !== 'string') {
|
|
116
|
+
return 'label';
|
|
117
|
+
}
|
|
118
|
+
// Remove any invalid characters and convert to camelCase
|
|
119
|
+
return str
|
|
120
|
+
.replace(/[^a-zA-Z0-9-]/g, '') // Remove invalid characters
|
|
121
|
+
.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase())
|
|
122
|
+
.replace(/^[A-Z]/, (match) => match.toLowerCase()); // Ensure first letter is lowercase
|
|
98
123
|
}
|
|
99
124
|
//# sourceMappingURL=pull.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAMA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA4EnD"}
|