@localheroai/cli 0.0.84-rc.0 → 0.0.85
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/auth.d.ts +2 -0
- package/dist/api/client.d.ts +3 -0
- package/dist/api/imports.d.ts +5 -0
- package/dist/api/projects.d.ts +2 -0
- package/dist/api/translation-jobs.js +28 -0
- package/dist/api/translation-jobs.js.map +1 -0
- package/dist/api/translations.d.ts +15 -0
- package/dist/cli.d.ts +2 -0
- package/dist/commands/_sync.js +22 -0
- package/dist/commands/_sync.js.map +1 -0
- package/dist/commands/_translate.js +3 -0
- package/dist/commands/_translate.js.map +1 -0
- package/dist/commands/ci.js +9 -4
- package/dist/commands/ci.js.map +1 -1
- package/dist/commands/github-action.js +111 -0
- package/dist/commands/github-action.js.map +1 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/login.d.ts +16 -0
- package/dist/commands/sync.d.ts +20 -0
- package/dist/commands/sync.js +22 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/translate.d.ts +14 -0
- package/dist/document-formats/markdown.js +519 -0
- package/dist/document-formats/markdown.js.map +1 -0
- package/dist/document-formats/types.js +11 -0
- package/dist/document-formats/types.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/types/index.d.ts +75 -0
- package/dist/types/translate/index.js +2 -0
- package/dist/types/translate/index.js.map +1 -0
- package/dist/utils/auth.d.ts +2 -0
- package/dist/utils/chunked-json-processor.js +52 -0
- package/dist/utils/chunked-json-processor.js.map +1 -0
- package/dist/utils/common.js +9 -0
- package/dist/utils/common.js.map +1 -0
- package/dist/utils/config.d.ts +23 -0
- package/dist/utils/errors.js +37 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/files.d.ts +32 -0
- package/dist/utils/git-diff.js +251 -0
- package/dist/utils/git-diff.js.map +1 -0
- package/dist/utils/git.d.ts +21 -0
- package/dist/utils/github.d.ts +241 -0
- package/dist/utils/import-service.d.ts +4 -0
- package/dist/utils/import-service.js +5 -14
- package/dist/utils/import-service.js.map +1 -1
- package/dist/utils/po-utils-fallback.js +254 -0
- package/dist/utils/po-utils-fallback.js.map +1 -0
- package/dist/utils/prompt-service.d.ts +44 -0
- package/dist/utils/streaming-json-processor.js +125 -0
- package/dist/utils/streaming-json-processor.js.map +1 -0
- package/dist/utils/sync-service.d.ts +58 -0
- package/dist/utils/sync-service.js +13 -1
- package/dist/utils/sync-service.js.map +1 -1
- package/dist/utils/translation-processor.js +14 -0
- package/dist/utils/translation-processor.js.map +1 -1
- package/dist/utils/translation-updater/common.d.ts +6 -0
- package/dist/utils/translation-updater/index.d.ts +5 -0
- package/dist/utils/translation-updater/json-handler.d.ts +5 -0
- package/dist/utils/translation-updater/yaml-handler.d.ts +5 -0
- package/dist/utils/translation-utils.d.ts +30 -0
- package/dist/utils/updater.js +38 -0
- package/dist/utils/updater.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,28 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
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
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_translate.js","sourceRoot":"","sources":["../../src/commands/_translate.js"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/commands/ci.js
CHANGED
|
@@ -6,7 +6,7 @@ import { checkAuth } from '../utils/auth.js';
|
|
|
6
6
|
import { githubService } from '../utils/github.js';
|
|
7
7
|
import { getSyncTranslations, completeSyncUpdate } from '../api/sync.js';
|
|
8
8
|
import { updateTranslationFile } from '../utils/translation-updater/index.js';
|
|
9
|
-
import { toConfigLocale } from '../utils/translation-processor.js';
|
|
9
|
+
import { toConfigLocale, isWritableLocale, skippedLocalesLine } from '../utils/translation-processor.js';
|
|
10
10
|
import { findTranslationFiles } from '../utils/files.js';
|
|
11
11
|
import { findSourceFileForTarget } from '../utils/translation-utils.js';
|
|
12
12
|
const defaultDeps = {
|
|
@@ -135,12 +135,17 @@ async function runSyncMode(syncId, projectId, deps, options) {
|
|
|
135
135
|
console.log(chalk.gray(` Total files to update: ${allFiles.length}\n`));
|
|
136
136
|
}
|
|
137
137
|
const config = await configUtils.getValidProjectConfig();
|
|
138
|
+
const files = allFiles.filter(file => isWritableLocale(config, file.language));
|
|
139
|
+
const skippedLocales = allFiles.filter(file => !isWritableLocale(config, file.language)).map(file => file.language);
|
|
140
|
+
if (skippedLocales.length > 0) {
|
|
141
|
+
console.log(skippedLocalesLine(skippedLocales));
|
|
142
|
+
}
|
|
138
143
|
const modifiedFiles = [];
|
|
139
144
|
let filesUpdated = 0;
|
|
140
145
|
const uniqueKeys = new Set();
|
|
141
146
|
const projectRoot = process.cwd();
|
|
142
147
|
const sourceFiles = await findSourceFiles(config);
|
|
143
|
-
for (const file of
|
|
148
|
+
for (const file of files) {
|
|
144
149
|
const absolutePath = path.resolve(file.path);
|
|
145
150
|
const relativePath = path.relative(projectRoot, absolutePath);
|
|
146
151
|
if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) {
|
|
@@ -168,10 +173,10 @@ async function runSyncMode(syncId, projectId, deps, options) {
|
|
|
168
173
|
// Remove syncTriggerId by re-saving config (saveProjectConfig strips it automatically)
|
|
169
174
|
await configUtils.saveProjectConfig(config);
|
|
170
175
|
const keysProcessed = uniqueKeys.size;
|
|
171
|
-
const keysUpdated = modifiedKeysCount ?? keysProcessed;
|
|
176
|
+
const keysUpdated = skippedLocales.length > 0 ? keysProcessed : (modifiedKeysCount ?? keysProcessed);
|
|
172
177
|
console.log(chalk.green(`\n✓ Synced ${keysUpdated} keys across ${filesUpdated} files`));
|
|
173
178
|
if (githubUtils.isGitHubAction() && !options?.skipCommit) {
|
|
174
|
-
const languages = [...new Set(
|
|
179
|
+
const languages = [...new Set(files.map(f => f.language))];
|
|
175
180
|
const commitResult = await githubUtils.autoCommitSyncChanges(modifiedFiles, { keysTranslated: keysUpdated, languages, viewUrl: syncUrl, editors, otherEditors }, { branchName });
|
|
176
181
|
if (commitResult === 'skipped') {
|
|
177
182
|
return;
|
package/dist/commands/ci.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/commands/ci.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAA2B,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAsB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAiB,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/commands/ci.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-action.js","sourceRoot":"","sources":["../../src/commands/github-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function init(deps?: {}): Promise<void>;
|
|
@@ -0,0 +1,16 @@
|
|
|
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 {};
|
|
@@ -0,0 +1,20 @@
|
|
|
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 {};
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
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 {};
|