@localheroai/cli 0.0.10 → 0.0.12
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 +11 -0
- package/dist/api/clone.js +67 -0
- package/dist/api/clone.js.map +1 -0
- package/dist/api/translations.js +4 -2
- package/dist/api/translations.js.map +1 -1
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/clone.js +20 -0
- package/dist/commands/clone.js.map +1 -0
- package/dist/commands/login.js +3 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/translate.js +23 -12
- package/dist/commands/translate.js.map +1 -1
- package/dist/utils/clone-service.js +187 -0
- package/dist/utils/clone-service.js.map +1 -0
- package/dist/utils/github.js +20 -4
- package/dist/utils/github.js.map +1 -1
- package/dist/utils/sync-service.js +1 -1
- package/dist/utils/sync-service.js.map +1 -1
- package/dist/utils/translation-processor.js +20 -7
- package/dist/utils/translation-processor.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -82,6 +82,17 @@ npx @localheroai/cli push
|
|
|
82
82
|
|
|
83
83
|
Push updates from your local translation files to LocalHero.ai. This command will upload any new or modified translations from your local files to the service.
|
|
84
84
|
|
|
85
|
+
### Clone
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
npx @localheroai/cli clone
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Download all translation files from LocalHero.ai to your local project directory. This command is useful when your translation files aren't checked into version control. For example when:
|
|
92
|
+
|
|
93
|
+
- Setting up a new workspace
|
|
94
|
+
- Fetching latest translation files during deploy
|
|
95
|
+
|
|
85
96
|
## Environment Variables ⚙️
|
|
86
97
|
|
|
87
98
|
Typically you don't need to set these. The cli will use `LOCALHERO_API_KEY` if it's set, otherwise it will check the file `.localhero_key` for a API key.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { getApiKey } from '../utils/auth.js';
|
|
2
|
+
import { apiRequest } from './client.js';
|
|
3
|
+
import { promises as fs } from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
/**
|
|
6
|
+
* Parse the raw API response into a structured format
|
|
7
|
+
* @param rawResponse The raw API response
|
|
8
|
+
* @returns Parsed response with files and retry information
|
|
9
|
+
*/
|
|
10
|
+
export function parseCloneResponse(rawResponse) {
|
|
11
|
+
const files = {};
|
|
12
|
+
let retryAfter;
|
|
13
|
+
for (const [key, value] of Object.entries(rawResponse)) {
|
|
14
|
+
if (key === 'retry_after' && typeof value === 'number') {
|
|
15
|
+
retryAfter = value;
|
|
16
|
+
}
|
|
17
|
+
else if (typeof value === 'object' && value !== null) {
|
|
18
|
+
files[key] = value;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return { files, retryAfter };
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Request clone generation for a project
|
|
25
|
+
* @param projectId The ID of the project
|
|
26
|
+
* @param params Clone request parameters
|
|
27
|
+
* @returns The parsed clone response with file statuses
|
|
28
|
+
*/
|
|
29
|
+
export async function requestClone(projectId) {
|
|
30
|
+
const apiKey = await getApiKey();
|
|
31
|
+
const rawResponse = await apiRequest(`/api/v1/projects/${projectId}/clone`, { apiKey });
|
|
32
|
+
return parseCloneResponse(rawResponse);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Download a file from a URL to a local path
|
|
36
|
+
* @param url The URL to download from
|
|
37
|
+
* @param filePath The local file path to save to
|
|
38
|
+
* @param deps Optional dependencies for testing
|
|
39
|
+
* @returns Promise that resolves when download is complete
|
|
40
|
+
*/
|
|
41
|
+
export async function downloadFile(url, filePath, deps = {}) {
|
|
42
|
+
const { fs: fsModule = fs, path: pathModule = path, fetch: fetchFn = fetch } = deps;
|
|
43
|
+
const apiKey = await getApiKey();
|
|
44
|
+
if (!url) {
|
|
45
|
+
throw new Error('URL is required for file download');
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
const response = await fetchFn(url, { headers: { 'Authorization': `Bearer ${apiKey}` } });
|
|
49
|
+
if (!response.ok) {
|
|
50
|
+
throw new Error(`Failed to download file: ${response.status} ${response.statusText}`);
|
|
51
|
+
}
|
|
52
|
+
const content = await response.text();
|
|
53
|
+
const dir = pathModule.dirname(filePath);
|
|
54
|
+
await fsModule.mkdir(dir, { recursive: true });
|
|
55
|
+
await fsModule.writeFile(filePath, content, 'utf8');
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
if (error.code === 'EACCES') {
|
|
59
|
+
throw new Error(`Permission denied writing to ${filePath}. Check file permissions.`);
|
|
60
|
+
}
|
|
61
|
+
if (error.code === 'ENOSPC') {
|
|
62
|
+
throw new Error(`No space left on device when writing to ${filePath}`);
|
|
63
|
+
}
|
|
64
|
+
throw new Error(`Failed to download file to ${filePath}: ${error.message}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=clone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../../src/api/clone.ts"],"names":[],"mappings":"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"}
|
package/dist/api/translations.js
CHANGED
|
@@ -19,7 +19,8 @@ export async function createTranslationJob(params) {
|
|
|
19
19
|
format: file.format,
|
|
20
20
|
target_paths: params.targetPaths
|
|
21
21
|
})),
|
|
22
|
-
...(branch && { branch })
|
|
22
|
+
...(branch && { branch }),
|
|
23
|
+
...(params.jobGroupId && { job_group_id: params.jobGroupId })
|
|
23
24
|
},
|
|
24
25
|
apiKey
|
|
25
26
|
});
|
|
@@ -28,7 +29,8 @@ export async function createTranslationJob(params) {
|
|
|
28
29
|
}
|
|
29
30
|
return {
|
|
30
31
|
jobs: response.jobs,
|
|
31
|
-
totalJobs: response.jobs.length
|
|
32
|
+
totalJobs: response.jobs.length,
|
|
33
|
+
...(response.job_group && { job_group: response.job_group })
|
|
32
34
|
};
|
|
33
35
|
}
|
|
34
36
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translations.js","sourceRoot":"","sources":["../../src/api/translations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"translations.js","sourceRoot":"","sources":["../../src/api/translations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAoCnD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAkC;IAC3E,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAExC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,oBAAoB,MAAM,CAAC,SAAS,mBAAmB,EAAE;QACzF,MAAM,EAAE,MAAM;QACd,IAAI,EAAE;YACJ,gBAAgB,EAAE,MAAM,CAAC,aAAa;YACtC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,YAAY,EAAE,MAAM,CAAC,WAAW;aACjC,CAAC,CAAC;YACH,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;YACzB,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;SAC9D;QACD,MAAM;KACP,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM;QAC/B,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;KAC7D,CAAC;AACJ,CAAC;AAgBD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,mBAAmB,GAAG,KAAK;IAE3B,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,4BAA4B,KAAK,GAAG,mBAAmB,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC/G,OAAO,UAAU,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAC1C,CAAC;AAOD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAa;IACjD,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,OAAO,UAAU,CAAC,4BAA4B,KAAK,eAAe,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAClF,CAAC;AA2BD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAiB,EACjB,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,EAAoB;IAErC,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IAEjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;QACtC,KAAK;QACL,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;KACtB,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC,oBAAoB,SAAS,YAAY,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACxF,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -9,6 +9,7 @@ import { pull } from './commands/pull.js';
|
|
|
9
9
|
import { push } from './commands/push.js';
|
|
10
10
|
import { init } from './commands/init.js';
|
|
11
11
|
import { translate } from './commands/translate.js';
|
|
12
|
+
import { clone } from './commands/clone.js';
|
|
12
13
|
import { configService } from './utils/config.js';
|
|
13
14
|
const __filename = fileURLToPath(import.meta.url);
|
|
14
15
|
const __dirname = dirname(__filename);
|
|
@@ -81,5 +82,11 @@ program
|
|
|
81
82
|
const config = await configService.getValidProjectConfig();
|
|
82
83
|
return push(config, options);
|
|
83
84
|
}));
|
|
85
|
+
program
|
|
86
|
+
.command('clone')
|
|
87
|
+
.description('Clone all translations from LocalHero.ai to your local files')
|
|
88
|
+
.option('-v, --verbose', 'Show detailed progress information')
|
|
89
|
+
.option('-f, --force', 'Force, override existing files')
|
|
90
|
+
.action(wrapCommandAction((options) => clone(options)));
|
|
84
91
|
program.parse();
|
|
85
92
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAsB,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,SAAS,UAAU;IACjB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAC7D,CAAC;IACF,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAQD,SAAS,cAAc,CAAC,KAAe;IACrC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAExE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;QAE/C,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,iBAAiB,CAA6C,MAAS;IAC9E,OAAO,UAAU,GAAG,IAAmB;QACrC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAkB,CAAC;IACjF,CAAC,CAAC;AACJ,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,gGAAgG,CAAC;KAC7G,OAAO,CAAC,UAAU,EAAE,CAAC;KACrB,MAAM,CAAC,SAAS,EAAE,0CAA0C,CAAC;KAC7D,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,sGAAsG,CAAC,CAAC;IACpH,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,EAAE,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;AAC9E,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAE5C,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAE3C,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,eAAe,EAAE,oCAAoC,CAAC;KAC7D,MAAM,CAAC,cAAc,EAAE,iDAAiD,CAAC;KACzE,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAA2B,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAElF,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,eAAe,EAAE,oCAAoC,CAAC;KAC7D,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAA8B,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAEhF,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,eAAe,EAAE,oCAAoC,CAAC;KAC7D,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAA6C,EAAE,EAAE;IAChF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,qBAAqB,EAAE,CAAC;IAC3D,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC,CAAC;AAEN,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,8DAA8D,CAAC;KAC3E,MAAM,CAAC,eAAe,EAAE,oCAAoC,CAAC;KAC7D,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAA+C,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAElG,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { cloneService as defaultCloneService } from '../utils/clone-service.js';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
export async function clone(options = {}, deps = { cloneService: defaultCloneService }) {
|
|
4
|
+
const { verbose = false, force = false } = options;
|
|
5
|
+
const { cloneService } = deps;
|
|
6
|
+
if (verbose) {
|
|
7
|
+
console.log(chalk.blue('Starting clone...'));
|
|
8
|
+
}
|
|
9
|
+
const result = await cloneService.cloneProject(verbose, force);
|
|
10
|
+
if (!verbose) {
|
|
11
|
+
if (result.failedFiles.length > 0) {
|
|
12
|
+
console.log(chalk.yellow(`⚠️ ${result.failedFiles.length} files failed to download`));
|
|
13
|
+
}
|
|
14
|
+
if (result.downloadedFiles === result.totalFiles) {
|
|
15
|
+
console.log(chalk.green(`✓ Clone completed - ${result.downloadedFiles} files downloaded`));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=clone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../../src/commands/clone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,KAAK,MAAM,OAAO,CAAC;AAuB1B,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,UAAwB,EAAE,EAC1B,OAA0B,EAAE,YAAY,EAAE,mBAAmB,EAAE;IAE/D,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IACnD,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAE9B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,2BAA2B,CAAC,CAAC,CAAC;QACzF,CAAC;QAED,IAAI,MAAM,CAAC,eAAe,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,MAAM,CAAC,eAAe,mBAAmB,CAAC,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/commands/login.js
CHANGED
|
@@ -52,7 +52,9 @@ export async function login(deps = {}) {
|
|
|
52
52
|
}
|
|
53
53
|
else if (!isCalledFromInit) {
|
|
54
54
|
console.log('\nYou\'re ready to start translating!');
|
|
55
|
-
console.log('
|
|
55
|
+
console.log('\nTry running: ');
|
|
56
|
+
console.log(chalk.white(' npx @localheroai/cli clone - to download existing translations'));
|
|
57
|
+
console.log(chalk.white(' npx @localheroai/cli translate - to start translating'));
|
|
56
58
|
}
|
|
57
59
|
}
|
|
58
60
|
//# sourceMappingURL=login.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
+
import { nanoid } from 'nanoid';
|
|
2
3
|
import { configService } from '../utils/config.js';
|
|
3
4
|
import { findTranslationFiles } from '../utils/files.js';
|
|
4
5
|
import { createTranslationJob, checkJobStatus } from '../api/translations.js';
|
|
5
6
|
import { updateTranslationFile } from '../utils/translation-updater/index.js';
|
|
6
7
|
import { checkAuth } from '../utils/auth.js';
|
|
7
8
|
import { findMissingTranslations, batchKeysWithMissing, findMissingTranslationsByLocale } from '../utils/translation-utils.js';
|
|
8
|
-
import { syncService } from '../utils/sync-service.js';
|
|
9
9
|
import { autoCommitChanges } from '../utils/github.js';
|
|
10
10
|
import { processTranslationBatches } from '../utils/translation-processor.js';
|
|
11
11
|
import { ApiResponseError } from '../types/index.js';
|
|
@@ -22,16 +22,16 @@ const defaultDeps = {
|
|
|
22
22
|
batchKeysWithMissing,
|
|
23
23
|
findMissingTranslationsByLocale
|
|
24
24
|
},
|
|
25
|
-
syncService,
|
|
26
25
|
gitUtils: { autoCommitChanges }
|
|
27
26
|
};
|
|
28
27
|
export async function translate(options = {}, deps = defaultDeps) {
|
|
29
|
-
const { console, configUtils, authUtils, fileUtils, translationUtils,
|
|
28
|
+
const { console, configUtils, authUtils, fileUtils, translationUtils, gitUtils } = deps;
|
|
30
29
|
const { verbose } = options;
|
|
31
30
|
const isAuthenticated = await authUtils.checkAuth();
|
|
32
31
|
if (!isAuthenticated) {
|
|
33
32
|
console.error(chalk.red('\n✖ Your API key is invalid. Please run `npx @localheroai/cli login` to authenticate.\n'));
|
|
34
33
|
process.exit(1);
|
|
34
|
+
return;
|
|
35
35
|
}
|
|
36
36
|
const config = await configUtils.getProjectConfig();
|
|
37
37
|
if (!config) {
|
|
@@ -44,10 +44,6 @@ export async function translate(options = {}, deps = defaultDeps) {
|
|
|
44
44
|
process.exit(1);
|
|
45
45
|
return;
|
|
46
46
|
}
|
|
47
|
-
const { hasUpdates, updates } = await syncService.checkForUpdates(verbose);
|
|
48
|
-
if (hasUpdates && updates) {
|
|
49
|
-
await syncService.applyUpdates(updates, verbose);
|
|
50
|
-
}
|
|
51
47
|
if (verbose) {
|
|
52
48
|
console.log(chalk.blue('\nℹ Using configuration:'));
|
|
53
49
|
console.log(chalk.gray(` Project ID: ${config.projectId}`));
|
|
@@ -60,6 +56,7 @@ export async function translate(options = {}, deps = defaultDeps) {
|
|
|
60
56
|
if (!allFiles || allFiles.length === 0) {
|
|
61
57
|
console.error(chalk.red('\n✖ No translation files found in the specified paths.\n'));
|
|
62
58
|
process.exit(1);
|
|
59
|
+
return;
|
|
63
60
|
}
|
|
64
61
|
if (verbose) {
|
|
65
62
|
console.log(chalk.blue(`\nℹ Found ${allFiles.length} translation files`));
|
|
@@ -72,6 +69,7 @@ export async function translate(options = {}, deps = defaultDeps) {
|
|
|
72
69
|
console.error(chalk.yellow(' 3. There was an error parsing one or more files (check for syntax errors in YAML or JSON)\n'));
|
|
73
70
|
console.error(chalk.yellow('Try running with the --verbose flag for more detailed information.\n'));
|
|
74
71
|
process.exit(1);
|
|
72
|
+
return;
|
|
75
73
|
}
|
|
76
74
|
if (verbose) {
|
|
77
75
|
console.log(chalk.blue(`ℹ Found ${sourceFiles.length} source files for locale ${config.sourceLocale}`));
|
|
@@ -104,9 +102,12 @@ export async function translate(options = {}, deps = defaultDeps) {
|
|
|
104
102
|
console.error(chalk.red(` ${error.message}`));
|
|
105
103
|
}
|
|
106
104
|
process.exit(1);
|
|
105
|
+
return;
|
|
107
106
|
}
|
|
108
107
|
try {
|
|
109
|
-
|
|
108
|
+
// Generate a id to group the jobs with
|
|
109
|
+
const jobGroupId = nanoid();
|
|
110
|
+
const translationResult = await processTranslationBatches(batches, missingByLocale, config, !!verbose, { console, translationUtils }, jobGroupId);
|
|
110
111
|
await configUtils.updateLastSyncedAt();
|
|
111
112
|
console.log(chalk.green('✓ Translations complete!'));
|
|
112
113
|
if (translationResult.uniqueKeysTranslated.size > 0) {
|
|
@@ -114,16 +115,25 @@ export async function translate(options = {}, deps = defaultDeps) {
|
|
|
114
115
|
}
|
|
115
116
|
if (translationResult.uniqueKeysTranslated.size > 0) {
|
|
116
117
|
try {
|
|
117
|
-
gitUtils.autoCommitChanges(config.translationFiles.paths.join(' ')
|
|
118
|
+
gitUtils.autoCommitChanges(config.translationFiles.paths.join(' '), {
|
|
119
|
+
keysTranslated: translationResult.uniqueKeysTranslated.size,
|
|
120
|
+
languages: translationResult.languages,
|
|
121
|
+
viewUrl: translationResult.jobGroupShortUrl || translationResult.resultsBaseUrl || undefined
|
|
122
|
+
});
|
|
118
123
|
}
|
|
119
124
|
catch (error) {
|
|
120
125
|
const err = error;
|
|
121
126
|
console.warn(chalk.yellow(`\nℹ Could not auto-commit changes: ${err.message}`));
|
|
122
127
|
}
|
|
123
128
|
}
|
|
124
|
-
if (translationResult.
|
|
125
|
-
|
|
126
|
-
|
|
129
|
+
if (translationResult.uniqueKeysTranslated.size > 0) {
|
|
130
|
+
if (translationResult.jobGroupShortUrl) {
|
|
131
|
+
console.log(`» View results at: ${translationResult.jobGroupShortUrl}`);
|
|
132
|
+
}
|
|
133
|
+
else if (translationResult.resultsBaseUrl && translationResult.allJobIds.length > 0) {
|
|
134
|
+
const jobIdsParam = translationResult.allJobIds.join(',');
|
|
135
|
+
console.log(`» View results at: ${translationResult.resultsBaseUrl}?job_ids=${jobIdsParam}`);
|
|
136
|
+
}
|
|
127
137
|
}
|
|
128
138
|
}
|
|
129
139
|
catch (error) {
|
|
@@ -151,6 +161,7 @@ export async function translate(options = {}, deps = defaultDeps) {
|
|
|
151
161
|
}
|
|
152
162
|
}
|
|
153
163
|
process.exit(1);
|
|
164
|
+
return;
|
|
154
165
|
}
|
|
155
166
|
}
|
|
156
167
|
//# sourceMappingURL=translate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/commands/translate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAsB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,+BAA+B,EAGhC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/commands/translate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import fs from 'fs/promises';
|
|
3
|
+
import { configService } from './config.js';
|
|
4
|
+
import { requestClone, downloadFile } from '../api/clone.js';
|
|
5
|
+
// Default polling configuration
|
|
6
|
+
const DEFAULT_POLL_INTERVAL = 5000; // 5 seconds
|
|
7
|
+
const MAX_POLL_ATTEMPTS = 60; // 5 minutes total
|
|
8
|
+
const RETRY_DELAY_MS = 1000; // 1 second
|
|
9
|
+
/**
|
|
10
|
+
* Sleep for a specified number of milliseconds
|
|
11
|
+
*/
|
|
12
|
+
function sleep(ms) {
|
|
13
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Download a file with retry
|
|
17
|
+
*/
|
|
18
|
+
async function downloadFileWithRetry(filePath, fileStatus, maxRetries = 3, verbose = false) {
|
|
19
|
+
if (!fileStatus.url) {
|
|
20
|
+
if (verbose) {
|
|
21
|
+
console.log(chalk.yellow(`⚠️ No URL available for ${filePath}`));
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
26
|
+
try {
|
|
27
|
+
await downloadFile(fileStatus.url, filePath);
|
|
28
|
+
if (verbose) {
|
|
29
|
+
console.log(chalk.green(`✓ Downloaded ${filePath} (${fileStatus.language})`));
|
|
30
|
+
}
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (attempt === maxRetries) {
|
|
35
|
+
console.error(chalk.red(`❌ Failed to download ${filePath} after ${maxRetries} attempts: ${error.message}`));
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
if (verbose) {
|
|
39
|
+
console.log(chalk.yellow(`⚠️ Download attempt ${attempt} failed for ${filePath}, retrying...`));
|
|
40
|
+
}
|
|
41
|
+
await sleep(RETRY_DELAY_MS * attempt);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
export const cloneService = {
|
|
47
|
+
/**
|
|
48
|
+
* Clone all translations for a project
|
|
49
|
+
* @param verbose Whether to show verbose output
|
|
50
|
+
* @param force Whether to overwrite existing files
|
|
51
|
+
* @returns Result with download statistics
|
|
52
|
+
*/
|
|
53
|
+
async cloneProject(verbose = false, force = false) {
|
|
54
|
+
const config = await configService.getValidProjectConfig();
|
|
55
|
+
if (!config.projectId) {
|
|
56
|
+
throw new Error('Project not initialized. Please run `localhero init` first.');
|
|
57
|
+
}
|
|
58
|
+
if (verbose) {
|
|
59
|
+
console.log(chalk.blue(`Requesting clone for project ${config.projectId}...`));
|
|
60
|
+
}
|
|
61
|
+
// Request clone from API
|
|
62
|
+
const response = await requestClone(config.projectId);
|
|
63
|
+
if (verbose) {
|
|
64
|
+
const fileCount = Object.keys(response.files).length;
|
|
65
|
+
console.log(chalk.blue(`Found ${fileCount} files to clone`));
|
|
66
|
+
}
|
|
67
|
+
// Poll for completion if needed
|
|
68
|
+
const completedResponse = await this.pollForCompletion(response, verbose);
|
|
69
|
+
// Download all completed files
|
|
70
|
+
return await this.downloadFiles(completedResponse, verbose, force);
|
|
71
|
+
},
|
|
72
|
+
/**
|
|
73
|
+
* Poll the API until all files are ready for download
|
|
74
|
+
* @param response Initial clone response
|
|
75
|
+
* @param verbose Whether to show verbose output
|
|
76
|
+
* @returns Updated response with completed files
|
|
77
|
+
*/
|
|
78
|
+
async pollForCompletion(response, verbose = false) {
|
|
79
|
+
let currentResponse = response;
|
|
80
|
+
let pollAttempts = 0;
|
|
81
|
+
while (pollAttempts < MAX_POLL_ATTEMPTS) {
|
|
82
|
+
const pendingFiles = Object.entries(currentResponse.files).filter(([, fileStatus]) => fileStatus.status === 'generating');
|
|
83
|
+
if (pendingFiles.length === 0) {
|
|
84
|
+
// All files are ready
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
if (verbose) {
|
|
88
|
+
console.log(chalk.blue(`⏳ ${pendingFiles.length} files still generating...`));
|
|
89
|
+
for (const [filePath, fileStatus] of pendingFiles) {
|
|
90
|
+
console.log(chalk.gray(` ${filePath} (${fileStatus.language}) - ${fileStatus.status}`));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const retryAfter = currentResponse.retryAfter || DEFAULT_POLL_INTERVAL / 1000;
|
|
94
|
+
if (verbose) {
|
|
95
|
+
console.log(chalk.gray(` Retry in ${retryAfter} seconds...`));
|
|
96
|
+
}
|
|
97
|
+
await sleep(retryAfter * 1000);
|
|
98
|
+
try {
|
|
99
|
+
const config = await configService.getValidProjectConfig();
|
|
100
|
+
currentResponse = await requestClone(config.projectId);
|
|
101
|
+
pollAttempts++;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
console.error(chalk.yellow(`⚠️ Failed to check status: ${error.message}`));
|
|
105
|
+
pollAttempts++;
|
|
106
|
+
await sleep(RETRY_DELAY_MS);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (pollAttempts >= MAX_POLL_ATTEMPTS) {
|
|
110
|
+
console.warn(chalk.yellow('⚠️ Polling timeout reached. Try again.'));
|
|
111
|
+
}
|
|
112
|
+
return currentResponse;
|
|
113
|
+
},
|
|
114
|
+
/**
|
|
115
|
+
* Download all completed files from the response
|
|
116
|
+
* @param response Clone response with file URLs
|
|
117
|
+
* @param verbose Whether to show verbose output
|
|
118
|
+
* @param force Whether to overwrite existing files
|
|
119
|
+
* @returns Result with download statistics
|
|
120
|
+
*/
|
|
121
|
+
async downloadFiles(response, verbose = false, force = false) {
|
|
122
|
+
const files = Object.entries(response.files);
|
|
123
|
+
const totalFiles = files.length;
|
|
124
|
+
let downloadedFiles = 0;
|
|
125
|
+
const failedFiles = [];
|
|
126
|
+
if (verbose) {
|
|
127
|
+
console.log(chalk.blue(`Starting download of ${totalFiles} files...`));
|
|
128
|
+
}
|
|
129
|
+
const downloadPromises = files.map(async ([filePath, fileStatus]) => {
|
|
130
|
+
if (fileStatus.status === 'completed') {
|
|
131
|
+
const fileExists = await fs.access(filePath).then(() => true).catch(() => false);
|
|
132
|
+
if (fileExists && !force) {
|
|
133
|
+
console.log(chalk.gray(`File already exists, skipping: ${filePath} (${fileStatus.language})`));
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (fileStatus.url) {
|
|
137
|
+
const success = await downloadFileWithRetry(filePath, fileStatus, 3, verbose);
|
|
138
|
+
if (success) {
|
|
139
|
+
downloadedFiles++;
|
|
140
|
+
if (fileExists && force && verbose) {
|
|
141
|
+
console.log(chalk.blue(` Overwritten existing file: ${filePath} (${fileStatus.language})`));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
failedFiles.push(filePath);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
if (verbose) {
|
|
150
|
+
console.log(chalk.yellow(`⚠️ No URL available for completed file: ${filePath} (${fileStatus.language})`));
|
|
151
|
+
}
|
|
152
|
+
failedFiles.push(filePath);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else if (fileStatus.status === 'failed') {
|
|
156
|
+
if (verbose) {
|
|
157
|
+
console.log(chalk.red(`❌ File generation failed: ${filePath} (${fileStatus.language})`));
|
|
158
|
+
}
|
|
159
|
+
failedFiles.push(filePath);
|
|
160
|
+
}
|
|
161
|
+
else if (fileStatus.status === 'generating') {
|
|
162
|
+
if (verbose) {
|
|
163
|
+
console.log(chalk.yellow(`⏳ File still generating: ${filePath} (${fileStatus.language})`));
|
|
164
|
+
}
|
|
165
|
+
failedFiles.push(filePath);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
await Promise.all(downloadPromises);
|
|
169
|
+
if (downloadedFiles > 0 && verbose) {
|
|
170
|
+
console.log(chalk.green(`✓ Downloaded ${downloadedFiles} files`));
|
|
171
|
+
}
|
|
172
|
+
if (failedFiles.length > 0) {
|
|
173
|
+
console.log(chalk.yellow(`⚠️ ${failedFiles.length} files failed to download`));
|
|
174
|
+
if (verbose) {
|
|
175
|
+
for (const filePath of failedFiles) {
|
|
176
|
+
console.log(chalk.gray(` - ${filePath}`));
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return {
|
|
181
|
+
totalFiles,
|
|
182
|
+
downloadedFiles,
|
|
183
|
+
failedFiles
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
//# sourceMappingURL=clone-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone-service.js","sourceRoot":"","sources":["../../src/utils/clone-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAwC,MAAM,iBAAiB,CAAC;AAgBnG,gCAAgC;AAChC,MAAM,qBAAqB,GAAG,IAAI,CAAC,CAAC,YAAY;AAChD,MAAM,iBAAiB,GAAG,EAAE,CAAC,CAAC,kBAAkB;AAChD,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,WAAW;AAExC;;GAEG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAClC,QAAgB,EAChB,UAA2B,EAC3B,UAAU,GAAG,CAAC,EACd,OAAO,GAAG,KAAK;IAEf,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QACpB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,QAAQ,KAAK,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YAChF,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,QAAQ,UAAU,UAAU,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC5G,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,OAAO,eAAe,QAAQ,eAAe,CAAC,CAAC,CAAC;YACnG,CAAC;YAED,MAAM,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK;QAC/C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAE3D,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC;QACjF,CAAC;QAED,yBAAyB;QACzB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEtD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,SAAS,iBAAiB,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,gCAAgC;QAChC,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE1E,+BAA+B;QAC/B,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,iBAAiB,CAAC,QAA6B,EAAE,OAAO,GAAG,KAAK;QACpE,IAAI,eAAe,GAAG,QAAQ,CAAC;QAC/B,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,OAAO,YAAY,GAAG,iBAAiB,EAAE,CAAC;YACxC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAC/D,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,YAAY,CACvD,CAAC;YAEF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,sBAAsB;gBACtB,MAAM;YACR,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,MAAM,4BAA4B,CAAC,CAAC,CAAC;gBAC9E,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,YAAY,EAAE,CAAC;oBAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,KAAK,UAAU,CAAC,QAAQ,OAAO,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC5F,CAAC;YACH,CAAC;YAED,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,IAAI,qBAAqB,GAAG,IAAI,CAAC;YAC9E,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,UAAU,aAAa,CAAC,CAAC,CAAC;YAClE,CAAC;YAED,MAAM,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;YAE/B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,qBAAqB,EAAE,CAAC;gBAC3D,eAAe,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACvD,YAAY,EAAE,CAAC;YACjB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,+BAA+B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC5E,YAAY,EAAE,CAAC;gBACf,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,IAAI,YAAY,IAAI,iBAAiB,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CAAC,QAA6B,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK;QAC/E,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;QAChC,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,UAAU,WAAW,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE;YAClE,IAAI,UAAU,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACtC,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;gBACjF,IAAI,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,QAAQ,KAAK,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;oBAC/F,OAAO;gBACT,CAAC;gBAED,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;oBAC9E,IAAI,OAAO,EAAE,CAAC;wBACZ,eAAe,EAAE,CAAC;wBAClB,IAAI,UAAU,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;4BACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,QAAQ,KAAK,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;wBAC/F,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,OAAO,EAAE,CAAC;wBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4CAA4C,QAAQ,KAAK,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;oBAC7G,CAAC;oBACD,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;iBAAM,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC1C,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,QAAQ,KAAK,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBAC3F,CAAC;gBACD,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC;iBAAM,IAAI,UAAU,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBAC9C,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,QAAQ,KAAK,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBAC7F,CAAC;gBACD,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEpC,IAAI,eAAe,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,eAAe,QAAQ,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,MAAM,2BAA2B,CAAC,CAAC,CAAC;YAChF,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC;oBACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,UAAU;YACV,eAAe;YACf,WAAW;SACZ,CAAC;IACJ,CAAC;CACF,CAAC"}
|
package/dist/utils/github.js
CHANGED
|
@@ -96,8 +96,9 @@ jobs:
|
|
|
96
96
|
/**
|
|
97
97
|
* Automatically commit and push changes when running in GitHub Actions
|
|
98
98
|
* @param filesPath Path pattern for files to commit
|
|
99
|
+
* @param translationSummary Optional summary of translation results
|
|
99
100
|
*/
|
|
100
|
-
autoCommitChanges(filesPath) {
|
|
101
|
+
autoCommitChanges(filesPath, translationSummary) {
|
|
101
102
|
const { exec, env } = this.deps;
|
|
102
103
|
if (!this.isGitHubAction())
|
|
103
104
|
return;
|
|
@@ -115,7 +116,21 @@ jobs:
|
|
|
115
116
|
console.log('No changes to commit.');
|
|
116
117
|
return;
|
|
117
118
|
}
|
|
118
|
-
|
|
119
|
+
let commitMessage = 'Update translations';
|
|
120
|
+
if (translationSummary && translationSummary.keysTranslated > 0) {
|
|
121
|
+
const { keysTranslated, languages, viewUrl } = translationSummary;
|
|
122
|
+
const languageList = languages.join(', ');
|
|
123
|
+
if (keysTranslated > 1) {
|
|
124
|
+
commitMessage += `\n\nTranslated ${keysTranslated} keys in ${languageList}`;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
commitMessage += `\n\nTranslated ${keysTranslated} key in ${languageList}`;
|
|
128
|
+
}
|
|
129
|
+
if (viewUrl) {
|
|
130
|
+
commitMessage += `\nView results at ${viewUrl}`;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exec(`git commit -m "${commitMessage}"`, { stdio: 'inherit' });
|
|
119
134
|
const token = env.GITHUB_TOKEN;
|
|
120
135
|
if (!token) {
|
|
121
136
|
throw new Error('GITHUB_TOKEN is not set');
|
|
@@ -153,8 +168,9 @@ export function workflowExists(basePath) {
|
|
|
153
168
|
/**
|
|
154
169
|
* Automatically commit and push changes when running in GitHub Actions
|
|
155
170
|
* @param filesPath Path pattern for files to commit
|
|
171
|
+
* @param translationSummary Optional summary of translation results
|
|
156
172
|
*/
|
|
157
|
-
export function autoCommitChanges(filesPath) {
|
|
158
|
-
return githubService.autoCommitChanges(filesPath);
|
|
173
|
+
export function autoCommitChanges(filesPath, translationSummary) {
|
|
174
|
+
return githubService.autoCommitChanges(filesPath, translationSummary);
|
|
159
175
|
}
|
|
160
176
|
//# sourceMappingURL=github.js.map
|
package/dist/utils/github.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/utils/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,IAAI,MAAM,MAAM,CAAC;AAaxB,MAAM,mBAAmB,GAAuB;IAC9C,IAAI,EAAE,CAAC,GAAW,EAAE,OAAyB,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACxE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE;IACzB,IAAI;IACJ,GAAG,EAAE,OAAO,CAAC,GAAG;CACjB,CAAC;AAEF,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AAEnD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,EAAE,GAAG,mBAAmB,EAAE;IAEhC;;OAEG;IACH,eAAe,CAAC,aAA0C,EAAE;QAC1D,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,mBAAmB,EAAE,GAAG,UAAU,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjF,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACH,+BAA+B,CAAC,QAAgB;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC9E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,sBAAsB,CAAC,QAAgB,EAAE,gBAA0B;QACvE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC;QAEpE,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG;;;;;QAKlB,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC7B,8DAA8D;YAC9D,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,2DAA2D;YAC3D,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC7E,OAAO,MAAM,aAAa,GAAG,CAAC;QAChC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;6CAwBwB,CAAC;QAE1C,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAChD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/utils/github.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { getUpdates } from '../api/translations.js';
|
|
|
4
4
|
import { updateTranslationFile, deleteKeysFromTranslationFile } from './translation-updater/index.js';
|
|
5
5
|
import { findTranslationFiles } from './files.js';
|
|
6
6
|
import path from 'path';
|
|
7
|
-
const MAX_PAGES =
|
|
7
|
+
const MAX_PAGES = 100;
|
|
8
8
|
export const syncService = {
|
|
9
9
|
/**
|
|
10
10
|
* Check for updates since the last sync
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-service.js","sourceRoot":"","sources":["../../src/utils/sync-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAoB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AACtG,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"sync-service.js","sourceRoot":"","sources":["../../src/utils/sync-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAoB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AACtG,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,SAAS,GAAG,GAAG,CAAC;AAwDtB,MAAM,CAAC,MAAM,WAAW,GAAgB;IACtC;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAC,OAAO,GAAG,KAAK;QACnC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAE3D,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAE/D,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,QAAQ,GAAiB,EAAE,CAAC;QAChC,IAAI,WAAW,GAAiB,EAAE,CAAC;QACnC,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,YAAY,GAAG,IAAI,CAAC;QAExB,OAAO,YAAY,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;YAChD,MAAM,MAAM,GAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAiC,CAAC;YAE5F,IAAI,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;gBAC3C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;gBAC3C,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAClE,CAAC;YAED,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACxB,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC;gBAC1D,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC;gBAC1C,WAAW,EAAE,CAAC;gBAEd,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;oBAC5B,IAAI,WAAW,GAAG,SAAS,EAAE,CAAC;wBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,SAAS,iBAAiB,WAAW,QAAQ,CAAC,CAAC,CAAC;oBAChG,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,WAAW,OAAO,WAAW,EAAE,CAAC,CAAC,CAAC;oBAC9E,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAC5C,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QAC/B,CAAC;QAED,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,KAAK,EAAE,QAAQ;oBACf,YAAY,EAAE,WAAW;iBAC1B;aACF;SACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,OAAgB,EAAE,OAAO,GAAG,KAAK;QAClD,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,+BAA+B;QAC/B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE;YAChD,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;YACrB,WAAW,EAAE,KAAK;YAClB,gBAAgB,EAAE,IAAI;YACtB,OAAO;SACR,CAA2B,CAAC;QAE7B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAEvC,uCAAuC;QACvC,MAAM,iBAAiB,GAA2B,EAAE,CAAC;QACrD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC9C,iBAAiB,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC;QAC/C,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YAC/C,qCAAqC;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAElD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAClC,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,oBAAoB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAChF,CAAC;gBAED,MAAM,YAAY,GAA2B,EAAE,CAAC;gBAChD,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC5C,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;oBAClD,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;wBACjH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,GAAG,MAAM,YAAY,EAAE,CAAC,CAAC,CAAC;oBACnE,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;oBAChF,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;gBACnD,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACrF,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;QACvD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,WAAW,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,MAAM,gBAAgB,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE;gBAC1D,YAAY,EAAE,KAAK;gBACnB,cAAc,EAAE,KAAK;gBACrB,WAAW,EAAE,KAAK;gBAClB,OAAO;aACR,CAAsB,CAAC;YAExB,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,gBAAgB,CAAC,MAAM,8CAA8C,CAAC,CAAC,CAAC;YAC1G,CAAC;YACD,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtD,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;gBACpC,IAAI,CAAC;oBACH,IAAI,OAAO,EAAE,CAAC;wBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACxF,CAAC;oBAED,MAAM,eAAe,GAAG,MAAM,6BAA6B,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAElG,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC/B,YAAY,IAAI,eAAe,CAAC,MAAM,CAAC;wBAEvC,IAAI,OAAO,EAAE,CAAC;4BACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,eAAe,CAAC,MAAM,cAAc,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;4BACvF,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;gCAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;4BACvC,CAAC;wBACH,CAAC;oBACH,CAAC;yBAAM,IAAI,OAAO,EAAE,CAAC;wBACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBACjE,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,kCAAkC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC/F,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,aAAa,CAAC,kBAAkB,EAAE,CAAC;QAEzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;IACxC,CAAC;CACF,CAAC"}
|
|
@@ -8,18 +8,22 @@ export const MAX_JOB_STATUS_CHECK_ATTEMPTS = 25;
|
|
|
8
8
|
* @param config - Project configuration
|
|
9
9
|
* @returns The job request object
|
|
10
10
|
*/
|
|
11
|
-
function createJobRequest(batch, missingByLocale, config) {
|
|
11
|
+
function createJobRequest(batch, missingByLocale, config, jobGroupId) {
|
|
12
12
|
const targetPaths = {};
|
|
13
13
|
batch.localeEntries.forEach(localeSourceKey => {
|
|
14
14
|
const entry = missingByLocale[localeSourceKey];
|
|
15
15
|
targetPaths[entry.locale] = entry.targetPath;
|
|
16
16
|
});
|
|
17
|
-
|
|
17
|
+
const request = {
|
|
18
18
|
projectId: config.projectId,
|
|
19
19
|
sourceFiles: [batch.sourceFile],
|
|
20
20
|
targetLocales: batch.locales,
|
|
21
21
|
targetPaths
|
|
22
22
|
};
|
|
23
|
+
if (jobGroupId) {
|
|
24
|
+
request.jobGroupId = jobGroupId;
|
|
25
|
+
}
|
|
26
|
+
return request;
|
|
23
27
|
}
|
|
24
28
|
/**
|
|
25
29
|
* Creates a mapping of job IDs to source files and locales
|
|
@@ -117,6 +121,7 @@ async function applyTranslations(jobStatus, jobSourceMapping, missingByLocale, t
|
|
|
117
121
|
result.updatedKeys.forEach(key => uniqueKeysTranslated.add(key));
|
|
118
122
|
if (!processedEntries.has(`locale:${languageCode}`)) {
|
|
119
123
|
stats.totalLanguages++;
|
|
124
|
+
stats.languages.add(languageCode);
|
|
120
125
|
processedEntries.add(`locale:${languageCode}`);
|
|
121
126
|
}
|
|
122
127
|
processedEntries.add(localeSourceKey);
|
|
@@ -135,14 +140,18 @@ async function applyTranslations(jobStatus, jobSourceMapping, missingByLocale, t
|
|
|
135
140
|
* @param allJobIds - Array of all job IDs
|
|
136
141
|
* @param stats - Statistics object to update
|
|
137
142
|
*/
|
|
138
|
-
async function processBatch(batch, missingByLocale, config, verbose, deps, processedEntries, uniqueKeysTranslated, allJobIds, stats) {
|
|
143
|
+
async function processBatch(batch, missingByLocale, config, verbose, deps, processedEntries, uniqueKeysTranslated, allJobIds, stats, jobGroupId) {
|
|
139
144
|
const { console, translationUtils } = deps;
|
|
140
145
|
const sourceFilePath = batch.sourceFilePath;
|
|
141
|
-
const jobRequest = createJobRequest(batch, missingByLocale, config);
|
|
146
|
+
const jobRequest = createJobRequest(batch, missingByLocale, config, jobGroupId);
|
|
142
147
|
const response = await translationUtils.createTranslationJob(jobRequest);
|
|
143
148
|
const { jobs } = response;
|
|
144
149
|
const batchJobIds = jobs.map(job => job.id);
|
|
145
150
|
allJobIds.push(...batchJobIds);
|
|
151
|
+
// Capture job group short URL if present in the response
|
|
152
|
+
if (response.job_group?.short_url && !stats.jobGroupShortUrl) {
|
|
153
|
+
stats.jobGroupShortUrl = response.job_group.short_url;
|
|
154
|
+
}
|
|
146
155
|
const jobSourceMapping = createJobSourceMapping(jobs, sourceFilePath);
|
|
147
156
|
const jobTries = {};
|
|
148
157
|
const pendingJobs = new Set(batchJobIds);
|
|
@@ -187,21 +196,25 @@ async function processBatch(batch, missingByLocale, config, verbose, deps, proce
|
|
|
187
196
|
* @param deps - Dependencies (console, translationUtils)
|
|
188
197
|
* @returns Result containing statistics about the translation process
|
|
189
198
|
*/
|
|
190
|
-
export async function processTranslationBatches(batches, missingByLocale, config, verbose, deps) {
|
|
199
|
+
export async function processTranslationBatches(batches, missingByLocale, config, verbose, deps, jobGroupId) {
|
|
191
200
|
const stats = {
|
|
192
201
|
totalLanguages: 0,
|
|
193
|
-
|
|
202
|
+
languages: new Set(),
|
|
203
|
+
resultsBaseUrl: null,
|
|
204
|
+
jobGroupShortUrl: null
|
|
194
205
|
};
|
|
195
206
|
const processedEntries = new Set();
|
|
196
207
|
const allJobIds = [];
|
|
197
208
|
const uniqueKeysTranslated = new Set();
|
|
198
209
|
for (const batch of batches) {
|
|
199
|
-
await processBatch(batch, missingByLocale, config, verbose, deps, processedEntries, uniqueKeysTranslated, allJobIds, stats);
|
|
210
|
+
await processBatch(batch, missingByLocale, config, verbose, deps, processedEntries, uniqueKeysTranslated, allJobIds, stats, jobGroupId);
|
|
200
211
|
}
|
|
201
212
|
return {
|
|
202
213
|
totalLanguages: stats.totalLanguages,
|
|
214
|
+
languages: Array.from(stats.languages),
|
|
203
215
|
allJobIds,
|
|
204
216
|
resultsBaseUrl: stats.resultsBaseUrl,
|
|
217
|
+
jobGroupShortUrl: stats.jobGroupShortUrl,
|
|
205
218
|
uniqueKeysTranslated
|
|
206
219
|
};
|
|
207
220
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translation-processor.js","sourceRoot":"","sources":["../../src/utils/translation-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"translation-processor.js","sourceRoot":"","sources":["../../src/utils/translation-processor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@localheroai/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"description": "CLI tool for managing translations with LocalHero.ai",
|
|
5
5
|
"homepage": "https://localhero.ai",
|
|
6
6
|
"repository": {
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"commander": "^12.0.0",
|
|
38
38
|
"glob": "^10.3.10",
|
|
39
39
|
"inquirer": "^12.0.1",
|
|
40
|
+
"nanoid": "^5.1.5",
|
|
40
41
|
"yaml": "^2.3.4"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|