@localheroai/cli 0.0.78 → 0.0.79-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/sync.js +6 -2
- package/dist/api/sync.js.map +1 -1
- package/dist/commands/ci.js +15 -3
- package/dist/commands/ci.js.map +1 -1
- package/package.json +3 -3
- package/dist/api/auth.d.ts +0 -2
- package/dist/api/client.d.ts +0 -3
- package/dist/api/imports.d.ts +0 -5
- package/dist/api/projects.d.ts +0 -2
- package/dist/api/translation-jobs.js +0 -28
- package/dist/api/translation-jobs.js.map +0 -1
- package/dist/api/translations.d.ts +0 -15
- package/dist/cli.d.ts +0 -2
- package/dist/commands/_sync.js +0 -22
- package/dist/commands/_sync.js.map +0 -1
- package/dist/commands/_translate.js +0 -3
- package/dist/commands/_translate.js.map +0 -1
- package/dist/commands/github-action.js +0 -111
- package/dist/commands/github-action.js.map +0 -1
- package/dist/commands/init.d.ts +0 -1
- package/dist/commands/login.d.ts +0 -16
- package/dist/commands/sync.d.ts +0 -20
- package/dist/commands/sync.js +0 -22
- package/dist/commands/sync.js.map +0 -1
- package/dist/commands/translate.d.ts +0 -14
- package/dist/document-formats/markdown.js +0 -519
- package/dist/document-formats/markdown.js.map +0 -1
- package/dist/document-formats/types.js +0 -11
- package/dist/document-formats/types.js.map +0 -1
- package/dist/index.d.ts +0 -5
- package/dist/types/index.d.ts +0 -75
- package/dist/types/translate/index.js +0 -2
- package/dist/types/translate/index.js.map +0 -1
- package/dist/utils/auth.d.ts +0 -2
- package/dist/utils/chunked-json-processor.js +0 -52
- package/dist/utils/chunked-json-processor.js.map +0 -1
- package/dist/utils/common.js +0 -9
- package/dist/utils/common.js.map +0 -1
- package/dist/utils/config.d.ts +0 -23
- package/dist/utils/errors.js +0 -37
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/files.d.ts +0 -32
- package/dist/utils/git-diff.js +0 -251
- package/dist/utils/git-diff.js.map +0 -1
- package/dist/utils/git.d.ts +0 -21
- package/dist/utils/github.d.ts +0 -241
- package/dist/utils/import-service.d.ts +0 -4
- package/dist/utils/po-utils-fallback.js +0 -254
- package/dist/utils/po-utils-fallback.js.map +0 -1
- package/dist/utils/prompt-service.d.ts +0 -44
- package/dist/utils/streaming-json-processor.js +0 -125
- package/dist/utils/streaming-json-processor.js.map +0 -1
- package/dist/utils/sync-service.d.ts +0 -58
- package/dist/utils/translation-updater/common.d.ts +0 -6
- package/dist/utils/translation-updater/index.d.ts +0 -5
- package/dist/utils/translation-updater/json-handler.d.ts +0 -5
- package/dist/utils/translation-updater/yaml-handler.d.ts +0 -5
- package/dist/utils/translation-utils.d.ts +0 -30
- package/dist/utils/updater.js +0 -38
- package/dist/utils/updater.js.map +0 -1
package/dist/api/sync.js
CHANGED
|
@@ -3,16 +3,20 @@ import { apiRequest } from './client.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* Get sync translations from the Sync API
|
|
5
5
|
* @param syncId The sync ID from localhero.json
|
|
6
|
-
* @param options Optional pagination parameters
|
|
6
|
+
* @param options Optional pagination parameters, and the caller's projectId so the
|
|
7
|
+
* response says whether the sync belongs to it (project_matches)
|
|
7
8
|
* @returns The sync response with translations
|
|
8
9
|
*/
|
|
9
10
|
export async function getSyncTranslations(syncId, options = {}) {
|
|
10
11
|
const apiKey = await getApiKey();
|
|
11
|
-
const { page = 1, perPage = 500 } = options;
|
|
12
|
+
const { page = 1, perPage = 500, projectId } = options;
|
|
12
13
|
const queryParams = new URLSearchParams({
|
|
13
14
|
page: page.toString(),
|
|
14
15
|
per_page: perPage.toString()
|
|
15
16
|
});
|
|
17
|
+
if (projectId) {
|
|
18
|
+
queryParams.set('project_id', projectId);
|
|
19
|
+
}
|
|
16
20
|
return apiRequest(`/api/v1/translation_syncs/${syncId}?${queryParams}`, { apiKey });
|
|
17
21
|
}
|
|
18
22
|
/**
|
package/dist/api/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/api/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/api/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAuDzC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAc,EACd,UAAmE,EAAE;IAErE,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,OAAO,GAAG,GAAG,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAEvD,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;QACtC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;QACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;KAC7B,CAAC,CAAC;IACH,IAAI,SAAS,EAAE,CAAC;QACd,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,UAAU,CAAC,6BAA6B,MAAM,IAAI,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACtF,CAAC;AAOD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAc,EACd,OAAe;IAEf,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IAEjC,OAAO,UAAU,CAAC,6BAA6B,MAAM,kBAAkB,EAAE;QACvE,MAAM;QACN,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,EAAE,OAAO,EAAE;KAClB,CAAC,CAAC;AACL,CAAC"}
|
package/dist/commands/ci.js
CHANGED
|
@@ -63,10 +63,18 @@ async function runTranslateMode(options, deps, config) {
|
|
|
63
63
|
};
|
|
64
64
|
await translateCommand(translateOptions);
|
|
65
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* In a monorepo every app's job receives the same sync dispatch. Only the app
|
|
68
|
+
* whose project owns the sync applies it; the others have nothing to do.
|
|
69
|
+
*/
|
|
70
|
+
function reportSyncForAnotherProject(deps, owner, projectId) {
|
|
71
|
+
const message = `Nothing to apply here. This sync is for project ${owner}; this directory is project ${projectId}.`;
|
|
72
|
+
deps.console.log(deps.githubUtils.isGitHubAction() ? `::notice::${message}` : chalk.blue(message));
|
|
73
|
+
}
|
|
66
74
|
/**
|
|
67
75
|
* Run sync mode - fetch done translations from Sync API and update files
|
|
68
76
|
*/
|
|
69
|
-
async function runSyncMode(syncId, deps, options) {
|
|
77
|
+
async function runSyncMode(syncId, projectId, deps, options) {
|
|
70
78
|
const { console, configUtils, githubUtils, syncApi, updateTranslationFile } = deps;
|
|
71
79
|
const verbose = options?.verbose || false;
|
|
72
80
|
console.log(chalk.blue('🔄 Syncing translations from Localhero...\n'));
|
|
@@ -78,10 +86,14 @@ async function runSyncMode(syncId, deps, options) {
|
|
|
78
86
|
let modifiedKeysCount;
|
|
79
87
|
try {
|
|
80
88
|
while (currentPage <= totalPages) {
|
|
81
|
-
const response = await syncApi.getSyncTranslations(syncId, { page: currentPage });
|
|
89
|
+
const response = await syncApi.getSyncTranslations(syncId, { page: currentPage, projectId });
|
|
82
90
|
if (!response || !response.sync || !response.pagination) {
|
|
83
91
|
throw new Error(`Invalid response from Sync API for page ${currentPage}`);
|
|
84
92
|
}
|
|
93
|
+
if (response.sync.project_matches === false) {
|
|
94
|
+
reportSyncForAnotherProject(deps, response.sync.project_id, projectId);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
85
97
|
if (currentPage === 1) {
|
|
86
98
|
syncUrl = response.sync.sync_url;
|
|
87
99
|
branchName = response.sync.branch_name;
|
|
@@ -186,7 +198,7 @@ export async function ci(options = {}, deps = defaultDeps) {
|
|
|
186
198
|
console.log(chalk.blue('📥 Sync mode detected'));
|
|
187
199
|
}
|
|
188
200
|
try {
|
|
189
|
-
await runSyncMode(syncTriggerId, deps, { verbose: options.verbose, syncUpdateVersion, skipCommit: options.skipCommit });
|
|
201
|
+
await runSyncMode(syncTriggerId, config.projectId, deps, { verbose: options.verbose, syncUpdateVersion, skipCommit: options.skipCommit });
|
|
190
202
|
}
|
|
191
203
|
catch (error) {
|
|
192
204
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
package/dist/commands/ci.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/commands/ci.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/commands/ci.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.79-rc.0",
|
|
4
4
|
"description": "CLI tool for managing translations with LocalHero.ai",
|
|
5
5
|
"homepage": "https://localhero.ai",
|
|
6
6
|
"repository": {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"chalk": "^5.6.2",
|
|
36
36
|
"commander": "^12.1.0",
|
|
37
|
-
"gettext-parser": "^
|
|
37
|
+
"gettext-parser": "^9.1.1",
|
|
38
38
|
"glob": "^13.0.6",
|
|
39
39
|
"inquirer": "^12.9.6",
|
|
40
40
|
"nanoid": "^5.1.16",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"typescript": "^5.9.2"
|
|
60
60
|
},
|
|
61
61
|
"engines": {
|
|
62
|
-
"node": ">=
|
|
62
|
+
"node": ">=20.0.0"
|
|
63
63
|
},
|
|
64
64
|
"files": [
|
|
65
65
|
"dist",
|
package/dist/api/auth.d.ts
DELETED
package/dist/api/client.d.ts
DELETED
package/dist/api/imports.d.ts
DELETED
package/dist/api/projects.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { apiRequest } from './client.js';
|
|
2
|
-
/**
|
|
3
|
-
* Create translation jobs
|
|
4
|
-
* @param params Translation job parameters
|
|
5
|
-
* @returns The created translation jobs
|
|
6
|
-
*/
|
|
7
|
-
export async function createTranslationJob(params) {
|
|
8
|
-
return await apiRequest(`/api/v1/projects/${params.projectId}/translation_jobs`, {
|
|
9
|
-
method: 'POST',
|
|
10
|
-
body: JSON.stringify({
|
|
11
|
-
target_languages: params.target_languages,
|
|
12
|
-
files: params.files,
|
|
13
|
-
branch: params.branch
|
|
14
|
-
})
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Get translation job status
|
|
19
|
-
* @param projectId Project ID
|
|
20
|
-
* @param jobId Job ID
|
|
21
|
-
* @returns Translation job details
|
|
22
|
-
*/
|
|
23
|
-
export async function getTranslationJob(projectId, jobId) {
|
|
24
|
-
return await apiRequest(`/api/v1/projects/${projectId}/translation_jobs/${jobId}`, {
|
|
25
|
-
method: 'GET'
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=translation-jobs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"translation-jobs.js","sourceRoot":"","sources":["../../src/api/translation-jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAqDzC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAkC;IAC3E,OAAO,MAAM,UAAU,CAAC,oBAAoB,MAAM,CAAC,SAAS,mBAAmB,EAAE;QAC/E,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAiB,EAAE,KAAa;IACtE,OAAO,MAAM,UAAU,CAAC,oBAAoB,SAAS,qBAAqB,KAAK,EAAE,EAAE;QACjF,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export function createTranslationJob({ sourceFiles, targetLocales, projectId, targetPaths }: {
|
|
2
|
-
sourceFiles: any;
|
|
3
|
-
targetLocales: any;
|
|
4
|
-
projectId: any;
|
|
5
|
-
targetPaths: any;
|
|
6
|
-
}): Promise<{
|
|
7
|
-
jobs: any;
|
|
8
|
-
totalJobs: any;
|
|
9
|
-
}>;
|
|
10
|
-
export function checkJobStatus(jobId: any, includeTranslations?: boolean): Promise<any>;
|
|
11
|
-
export function getTranslations(jobId: any): Promise<any>;
|
|
12
|
-
export function getUpdates(projectId: any, { since, page }: {
|
|
13
|
-
since: any;
|
|
14
|
-
page?: number | undefined;
|
|
15
|
-
}): Promise<any>;
|
package/dist/cli.d.ts
DELETED
package/dist/commands/_sync.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { syncService as defaultSyncService } from '../utils/sync-service.js';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
export async function sync({ verbose = false } = {}, deps = { syncService: defaultSyncService }) {
|
|
4
|
-
const { syncService } = deps;
|
|
5
|
-
const { hasUpdates, updates } = await syncService.checkForUpdates({ verbose });
|
|
6
|
-
if (!hasUpdates) {
|
|
7
|
-
console.log(chalk.green('✓ All translations are up to date'));
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
const result = await syncService.applyUpdates(updates, { verbose });
|
|
11
|
-
const { totalUpdates = 0, totalDeleted = 0 } = result;
|
|
12
|
-
if (!verbose) {
|
|
13
|
-
if (totalUpdates > 0) {
|
|
14
|
-
console.log(chalk.green(`✓ Updated ${totalUpdates} translations`));
|
|
15
|
-
}
|
|
16
|
-
if (totalDeleted > 0) {
|
|
17
|
-
console.log(chalk.green(`✓ Deleted ${totalDeleted} keys`));
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
return result;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=_sync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_sync.js","sourceRoot":"","sources":["../../src/commands/_sync.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAE;IAC7F,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE/E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAEpE,MAAM,EAAE,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC;IAEtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,YAAY,eAAe,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,YAAY,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_translate.js","sourceRoot":"","sources":["../../src/commands/_translate.js"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { translate } from './translate.js';
|
|
3
|
-
import { configService } from '../utils/config.js';
|
|
4
|
-
import { checkAuth } from '../utils/auth.js';
|
|
5
|
-
import { githubService } from '../utils/github.js';
|
|
6
|
-
const defaultDeps = {
|
|
7
|
-
console,
|
|
8
|
-
configUtils: configService,
|
|
9
|
-
authUtils: { checkAuth },
|
|
10
|
-
githubUtils: githubService,
|
|
11
|
-
env: process.env,
|
|
12
|
-
translateCommand: translate
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Detects if running in a PR context (feature branch)
|
|
16
|
-
* @param env Environment variables
|
|
17
|
-
* @returns true if in PR context (should use --changed-only), false otherwise
|
|
18
|
-
*/
|
|
19
|
-
function detectPRContext(env) {
|
|
20
|
-
const baseRef = env.GITHUB_BASE_REF;
|
|
21
|
-
// If no base ref, assume main context (full translation)
|
|
22
|
-
if (!baseRef) {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
// If base ref is main or master, do full translation
|
|
26
|
-
if (baseRef === 'main' || baseRef === 'master') {
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
// Otherwise, it's a feature branch PR - use changed-only
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Run translation mode with smart defaults for GitHub Actions
|
|
34
|
-
*/
|
|
35
|
-
async function runTranslateMode(options, deps) {
|
|
36
|
-
const { verbose, forceChangedOnly, forceFull } = options;
|
|
37
|
-
const { console, env, translateCommand } = deps;
|
|
38
|
-
// Determine if we should use --changed-only
|
|
39
|
-
let shouldUseChangedOnly;
|
|
40
|
-
if (forceFull) {
|
|
41
|
-
// User explicitly requested full translation
|
|
42
|
-
shouldUseChangedOnly = false;
|
|
43
|
-
if (verbose) {
|
|
44
|
-
console.log(chalk.blue('ℹ Using full translation mode (--force-full)'));
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else if (forceChangedOnly) {
|
|
48
|
-
// User explicitly requested changed-only
|
|
49
|
-
shouldUseChangedOnly = true;
|
|
50
|
-
if (verbose) {
|
|
51
|
-
console.log(chalk.blue('ℹ Using changed-only mode (--force-changed-only)'));
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
// Auto-detect based on context
|
|
56
|
-
shouldUseChangedOnly = detectPRContext(env);
|
|
57
|
-
if (verbose) {
|
|
58
|
-
const baseRef = env.GITHUB_BASE_REF || 'unknown';
|
|
59
|
-
if (shouldUseChangedOnly) {
|
|
60
|
-
console.log(chalk.blue(`ℹ Auto-detected PR context (base: ${baseRef}) - using --changed-only`));
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
console.log(chalk.blue(`ℹ Auto-detected main branch context (base: ${baseRef}) - using full translation`));
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
// Run translate with computed options
|
|
68
|
-
const translateOptions = {
|
|
69
|
-
...options,
|
|
70
|
-
changedOnly: shouldUseChangedOnly,
|
|
71
|
-
// translate command already handles auto-commit in GitHub Actions
|
|
72
|
-
};
|
|
73
|
-
await translateCommand(translateOptions);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* GitHub Actions command - runs translations optimized for CI/CD
|
|
77
|
-
* Auto-detects PR vs main branch context and adjusts behavior accordingly
|
|
78
|
-
*
|
|
79
|
-
* In Phase 5, this will also support sync mode by checking for sync-trigger-id in config
|
|
80
|
-
*/
|
|
81
|
-
export async function githubAction(options = {}, deps = defaultDeps) {
|
|
82
|
-
const { console, configUtils, authUtils, githubUtils } = deps;
|
|
83
|
-
// Verify we're running in GitHub Actions
|
|
84
|
-
if (!githubUtils.isGitHubAction()) {
|
|
85
|
-
console.error(chalk.yellow('\n⚠ Warning: This command is designed to run in GitHub Actions.'));
|
|
86
|
-
console.error(chalk.yellow(' For local development, use `npx @localheroai/cli translate` instead.\n'));
|
|
87
|
-
// Continue anyway - useful for testing
|
|
88
|
-
}
|
|
89
|
-
// Check authentication
|
|
90
|
-
const isAuthenticated = await authUtils.checkAuth();
|
|
91
|
-
if (!isAuthenticated) {
|
|
92
|
-
console.error(chalk.red('\n✖ Your API key is invalid. Please check LOCALHERO_API_KEY secret.\n'));
|
|
93
|
-
process.exit(1);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
// Load configuration
|
|
97
|
-
const config = await configUtils.getProjectConfig();
|
|
98
|
-
if (!config) {
|
|
99
|
-
console.error(chalk.red('\n✖ No configuration found. localhero.json is missing.\n'));
|
|
100
|
-
process.exit(1);
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
// Phase 5 addition point: Check for sync-trigger-id here
|
|
104
|
-
// Example for future implementation:
|
|
105
|
-
// if (config['sync-trigger-id']) {
|
|
106
|
-
// return runSyncMode(config['sync-trigger-id'], options, deps);
|
|
107
|
-
// }
|
|
108
|
-
// Phase 1: Run translate mode with smart defaults
|
|
109
|
-
await runTranslateMode(options, deps);
|
|
110
|
-
}
|
|
111
|
-
//# sourceMappingURL=github-action.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"github-action.js","sourceRoot":"","sources":["../../src/commands/github-action.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export function init(deps?: {}): Promise<void>;
|
package/dist/commands/login.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { createPromptService } from '../utils/prompt-service.js';
|
|
2
|
-
import { verifyApiKey as defaultVerifyApiKey } from '../api/auth.js';
|
|
3
|
-
import { configService } from '../utils/config.js';
|
|
4
|
-
interface LoginDependencies {
|
|
5
|
-
console?: Console;
|
|
6
|
-
basePath?: string;
|
|
7
|
-
promptService?: ReturnType<typeof createPromptService>;
|
|
8
|
-
verifyApiKey?: typeof defaultVerifyApiKey;
|
|
9
|
-
gitUtils?: {
|
|
10
|
-
updateGitignore: (path: string) => Promise<boolean>;
|
|
11
|
-
};
|
|
12
|
-
configUtils?: typeof configService;
|
|
13
|
-
isCalledFromInit?: boolean;
|
|
14
|
-
}
|
|
15
|
-
export declare function login(deps?: LoginDependencies): Promise<void>;
|
|
16
|
-
export {};
|
package/dist/commands/sync.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { SyncOptions } from '../types/index.js';
|
|
2
|
-
interface SyncResult {
|
|
3
|
-
totalUpdates?: number;
|
|
4
|
-
totalDeleted?: number;
|
|
5
|
-
[key: string]: any;
|
|
6
|
-
}
|
|
7
|
-
import type { CheckUpdatesResult, UpdatesContainer } from '../utils/sync-service.js';
|
|
8
|
-
interface SyncServiceInterface {
|
|
9
|
-
checkForUpdates: (options: {
|
|
10
|
-
verbose?: boolean;
|
|
11
|
-
}) => Promise<CheckUpdatesResult>;
|
|
12
|
-
applyUpdates: (updates: UpdatesContainer, options: {
|
|
13
|
-
verbose?: boolean;
|
|
14
|
-
}) => Promise<SyncResult>;
|
|
15
|
-
}
|
|
16
|
-
interface SyncDependencies {
|
|
17
|
-
syncService: SyncServiceInterface;
|
|
18
|
-
}
|
|
19
|
-
export declare function sync({ verbose }?: SyncOptions, deps?: SyncDependencies): Promise<SyncResult | void>;
|
|
20
|
-
export {};
|
package/dist/commands/sync.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { syncService as defaultSyncService } from '../utils/sync-service.js';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
export async function sync({ verbose = false } = {}, deps = { syncService: defaultSyncService }) {
|
|
4
|
-
const { syncService } = deps;
|
|
5
|
-
const { hasUpdates, updates } = await syncService.checkForUpdates(verbose);
|
|
6
|
-
if (!hasUpdates) {
|
|
7
|
-
console.log(chalk.green('✓ All translations are up to date'));
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
const result = await syncService.applyUpdates(updates, verbose);
|
|
11
|
-
const { totalUpdates = 0, totalDeleted = 0 } = result;
|
|
12
|
-
if (!verbose) {
|
|
13
|
-
if (totalUpdates > 0) {
|
|
14
|
-
console.log(chalk.green(`✓ Updated ${totalUpdates} translations`));
|
|
15
|
-
}
|
|
16
|
-
if (totalDeleted > 0) {
|
|
17
|
-
console.log(chalk.green(`✓ Deleted ${totalDeleted} keys`));
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
return result;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=sync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,MAAM,OAAO,CAAC;AAuB1B,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,EAAE,OAAO,GAAG,KAAK,KAA4B,EAAE,EAC/C,OAAyB,EAAE,WAAW,EAAE,kBAAkB,EAAE;IAE5D,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAE3E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEhE,MAAM,EAAE,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC;IAEtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,YAAY,eAAe,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,YAAY,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { TranslateOptions } from '../types/index.js';
|
|
2
|
-
import { configService } from '../utils/config.js';
|
|
3
|
-
interface TranslateDependencies {
|
|
4
|
-
console?: Console;
|
|
5
|
-
basePath?: string;
|
|
6
|
-
configUtils?: typeof configService;
|
|
7
|
-
}
|
|
8
|
-
interface TranslateResult {
|
|
9
|
-
totalTranslated: number;
|
|
10
|
-
skipped: number;
|
|
11
|
-
errors: number;
|
|
12
|
-
}
|
|
13
|
-
export declare function translate({ verbose, commit }?: TranslateOptions, deps?: TranslateDependencies): Promise<TranslateResult>;
|
|
14
|
-
export {};
|