@transi-store/cli 1.3.0 → 1.5.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/README.md +1 -1
- package/dist/cli.js +5 -4
- package/dist/cli.js.map +1 -1
- package/dist/fetchTranslations.d.ts +0 -1
- package/dist/fetchTranslations.d.ts.map +1 -1
- package/dist/fetchTranslations.js +4 -4
- package/dist/fetchTranslations.js.map +1 -1
- package/dist/git.d.ts +13 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +74 -0
- package/dist/git.js.map +1 -0
- package/dist/uploadTranslations.d.ts +1 -4
- package/dist/uploadTranslations.d.ts.map +1 -1
- package/dist/uploadTranslations.js +24 -10
- package/dist/uploadTranslations.js.map +1 -1
- package/package.json +6 -3
- package/dist/schema.d.ts +0 -21
- package/dist/schema.d.ts.map +0 -1
- package/dist/schema.js +0 -25
- package/dist/schema.js.map +0 -1
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ transi-store --help
|
|
|
23
23
|
#### Options
|
|
24
24
|
|
|
25
25
|
- `--config <path>`: Path to the configuration file (default: `transi-store.config.json`).
|
|
26
|
-
- `--branch`: The branch to
|
|
26
|
+
- `--branch`: The branch to download the translations from. Defaults to "main". Use `@all` to download all translations across every branch (no branch filtering).
|
|
27
27
|
|
|
28
28
|
#### Configuration file example
|
|
29
29
|
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command, Option } from "@commander-js/extra-typings";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { fetchForConfig, fetchTranslations, } from "./fetchTranslations.js";
|
|
4
|
+
import { uploadForConfig, uploadTranslations, } from "./uploadTranslations.js";
|
|
5
|
+
import { DEFAULT_DOMAIN_ROOT, ALL_BRANCHES_VALUE, ImportStrategy, } from "@transi-store/common";
|
|
5
6
|
const program = new Command();
|
|
6
7
|
const apiKeyOption = new Option("-k, --api-key <apiKey>", "API key for authentication")
|
|
7
8
|
.env("TRANSI_STORE_API_KEY")
|
|
@@ -16,7 +17,7 @@ program
|
|
|
16
17
|
.requiredOption("-l, --locale <locale>", "Locale to export")
|
|
17
18
|
.requiredOption("-O, --output <output>", "Output file path")
|
|
18
19
|
.option("-f, --format <format>", "Export format (json, csv, etc.)", "json")
|
|
19
|
-
.option("-b, --branch <branch>",
|
|
20
|
+
.option("-b, --branch <branch>", `Branch slug (exports main + branch keys). Use "${ALL_BRANCHES_VALUE}" to export all branches`)
|
|
20
21
|
.action((options) => {
|
|
21
22
|
fetchTranslations(options);
|
|
22
23
|
});
|
|
@@ -48,7 +49,7 @@ program
|
|
|
48
49
|
.command("download:config", { isDefault: true })
|
|
49
50
|
.description("Use configuration from config file")
|
|
50
51
|
.option("-c, --config <config>", "Path to config file", "transi-store.config.json")
|
|
51
|
-
.option("-b, --branch <branch>",
|
|
52
|
+
.option("-b, --branch <branch>", `Branch slug (exports main + branch keys). Use "${ALL_BRANCHES_VALUE}" to export all branches`)
|
|
52
53
|
.addOption(apiKeyOption)
|
|
53
54
|
.action((options) => {
|
|
54
55
|
fetchForConfig(options.config, options.apiKey, options.branch);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchTranslations.d.ts","sourceRoot":"","sources":["../src/fetchTranslations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetchTranslations.d.ts","sourceRoot":"","sources":["../src/fetchTranslations.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,MAAM,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,EACtC,UAAU,EACV,MAAM,EACN,GAAG,EACH,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,GACP,EAAE,MAAM,iBA+CR;AAED,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA8Cf"}
|
|
@@ -9,15 +9,15 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
9
9
|
import fs from "node:fs";
|
|
10
10
|
import path from "node:path";
|
|
11
11
|
import { pathToFileURL } from "node:url";
|
|
12
|
+
import { DEFAULT_DOMAIN_ROOT } from "@transi-store/common";
|
|
12
13
|
import z from "zod";
|
|
13
|
-
import
|
|
14
|
-
export const DEFAULT_DOMAIN_ROOT = "https://transi-store.com";
|
|
14
|
+
import { configSchema } from "@transi-store/common";
|
|
15
15
|
export async function fetchTranslations({ domainRoot, apiKey, org, project, format, locale, output, branch, }) {
|
|
16
16
|
const params = new URLSearchParams({ format, locale });
|
|
17
17
|
if (branch) {
|
|
18
18
|
params.set("branch", branch);
|
|
19
19
|
}
|
|
20
|
-
const url = `${domainRoot}/api/orgs/${org}/projects/${project}/
|
|
20
|
+
const url = `${domainRoot}/api/orgs/${org}/projects/${project}/translations?${params.toString()}`;
|
|
21
21
|
try {
|
|
22
22
|
const content = await fetch(url, {
|
|
23
23
|
headers: {
|
|
@@ -55,7 +55,7 @@ export async function fetchForConfig(configPath, apiKey, branch) {
|
|
|
55
55
|
process.exit(1);
|
|
56
56
|
}
|
|
57
57
|
const config = (await import(__rewriteRelativeImportExtension(pathToFileURL(fullPath).href), { with: { type: "json" } })).default;
|
|
58
|
-
const result =
|
|
58
|
+
const result = configSchema.safeParse(config);
|
|
59
59
|
if (!result.success) {
|
|
60
60
|
const pretty = z.prettifyError(result.error);
|
|
61
61
|
console.error("Config validation error:", pretty);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchTranslations.js","sourceRoot":"","sources":["../src/fetchTranslations.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"fetchTranslations.js","sourceRoot":"","sources":["../src/fetchTranslations.ts"],"names":[],"mappings":"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"}
|
package/dist/git.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare function isGitRepository(): Promise<boolean>;
|
|
2
|
+
/**
|
|
3
|
+
* Detect the default branch (main/master) with remote or local ref.
|
|
4
|
+
* Returns null if not found.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getDefaultBranch(): Promise<string | null>;
|
|
7
|
+
export declare function getCurrentBranch(): Promise<string | null>;
|
|
8
|
+
/**
|
|
9
|
+
* Returns the set of absolute paths of files that have been modified
|
|
10
|
+
* compared to the given base branch, including untracked files.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getModifiedFiles(baseBranch: string): Promise<Set<string>>;
|
|
13
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAWA,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAMxD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsB/D;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO/D;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAkBtB"}
|
package/dist/git.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { simpleGit } from "simple-git";
|
|
2
|
+
let gitInstance;
|
|
3
|
+
function getGit() {
|
|
4
|
+
if (!gitInstance) {
|
|
5
|
+
gitInstance = simpleGit();
|
|
6
|
+
}
|
|
7
|
+
return gitInstance;
|
|
8
|
+
}
|
|
9
|
+
export async function isGitRepository() {
|
|
10
|
+
try {
|
|
11
|
+
return await getGit().checkIsRepo();
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Detect the default branch (main/master) with remote or local ref.
|
|
19
|
+
* Returns null if not found.
|
|
20
|
+
*/
|
|
21
|
+
export async function getDefaultBranch() {
|
|
22
|
+
const git = getGit();
|
|
23
|
+
// Check remote branches
|
|
24
|
+
try {
|
|
25
|
+
const branches = await git.branch(["-r"]);
|
|
26
|
+
if (branches.all.includes("origin/main"))
|
|
27
|
+
return "origin/main";
|
|
28
|
+
if (branches.all.includes("origin/master"))
|
|
29
|
+
return "origin/master";
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// ignore
|
|
33
|
+
}
|
|
34
|
+
// Fallback to local branches
|
|
35
|
+
try {
|
|
36
|
+
const branches = await git.branchLocal();
|
|
37
|
+
if (branches.all.includes("main"))
|
|
38
|
+
return "main";
|
|
39
|
+
if (branches.all.includes("master"))
|
|
40
|
+
return "master";
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// ignore
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
export async function getCurrentBranch() {
|
|
48
|
+
try {
|
|
49
|
+
const { current } = await getGit().branchLocal();
|
|
50
|
+
return current || null;
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Returns the set of absolute paths of files that have been modified
|
|
58
|
+
* compared to the given base branch, including untracked files.
|
|
59
|
+
*/
|
|
60
|
+
export async function getModifiedFiles(baseBranch) {
|
|
61
|
+
const git = getGit();
|
|
62
|
+
const repoRoot = (await git.revparse(["--show-toplevel"])).trim();
|
|
63
|
+
// Files that differ from base branch (committed + staged + unstaged changes)
|
|
64
|
+
const diff = await git.diff(["--name-only", baseBranch]);
|
|
65
|
+
const diffFiles = diff.trim().split("\n").filter(Boolean);
|
|
66
|
+
// Untracked files (not in git at all)
|
|
67
|
+
const status = await git.status();
|
|
68
|
+
const modified = new Set();
|
|
69
|
+
for (const f of [...diffFiles, ...status.not_added]) {
|
|
70
|
+
modified.add(`${repoRoot}/${f}`);
|
|
71
|
+
}
|
|
72
|
+
return modified;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=git.js.map
|
package/dist/git.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AAEvD,IAAI,WAAkC,CAAC;AAEvC,SAAS,MAAM;IACb,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,SAAS,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IAErB,wBAAwB;IACxB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,OAAO,aAAa,CAAC;QAC/D,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAE,OAAO,eAAe,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QACjD,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;QACjD,OAAO,OAAO,IAAI,IAAI,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IAErB,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAElE,6EAA6E;IAC7E,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE1D,sCAAsC;IACtC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;IAElC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACpD,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadTranslations.d.ts","sourceRoot":"","sources":["../src/uploadTranslations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"uploadTranslations.d.ts","sourceRoot":"","sources":["../src/uploadTranslations.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAUtD,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,EACvC,UAAU,EACV,MAAM,EACN,GAAG,EACH,OAAO,EACP,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAM,GACP,EAAE,YAAY,iBA0Dd;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAkFf"}
|
|
@@ -9,16 +9,13 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
9
9
|
import fs from "node:fs";
|
|
10
10
|
import path from "node:path";
|
|
11
11
|
import { pathToFileURL } from "node:url";
|
|
12
|
+
import { DEFAULT_DOMAIN_ROOT } from "@transi-store/common";
|
|
13
|
+
import { ImportStrategy } from "@transi-store/common";
|
|
12
14
|
import z from "zod";
|
|
13
|
-
import
|
|
14
|
-
import {
|
|
15
|
-
export var ImportStrategy;
|
|
16
|
-
(function (ImportStrategy) {
|
|
17
|
-
ImportStrategy["OVERWRITE"] = "overwrite";
|
|
18
|
-
ImportStrategy["SKIP"] = "skip";
|
|
19
|
-
})(ImportStrategy || (ImportStrategy = {}));
|
|
15
|
+
import { getCurrentBranch, getDefaultBranch, getModifiedFiles, isGitRepository, } from "./git.js";
|
|
16
|
+
import { configSchema } from "@transi-store/common";
|
|
20
17
|
export async function uploadTranslations({ domainRoot, apiKey, org, project, locale, input, strategy, format, branch, }) {
|
|
21
|
-
const url = `${domainRoot}/api/orgs/${org}/projects/${project}/
|
|
18
|
+
const url = `${domainRoot}/api/orgs/${org}/projects/${project}/translations`;
|
|
22
19
|
const filePath = path.resolve(input);
|
|
23
20
|
if (!fs.existsSync(filePath)) {
|
|
24
21
|
console.error(`File not found: ${input}`);
|
|
@@ -69,7 +66,7 @@ export async function uploadForConfig(configPath, apiKey, strategy, branch) {
|
|
|
69
66
|
process.exit(1);
|
|
70
67
|
}
|
|
71
68
|
const config = (await import(__rewriteRelativeImportExtension(pathToFileURL(fullPath).href), { with: { type: "json" } })).default;
|
|
72
|
-
const result =
|
|
69
|
+
const result = configSchema.safeParse(config);
|
|
73
70
|
if (!result.success) {
|
|
74
71
|
const pretty = z.prettifyError(result.error);
|
|
75
72
|
console.error("Config validation error:", pretty);
|
|
@@ -77,16 +74,33 @@ export async function uploadForConfig(configPath, apiKey, strategy, branch) {
|
|
|
77
74
|
}
|
|
78
75
|
const domainRoot = result.data.domainRoot ?? DEFAULT_DOMAIN_ROOT;
|
|
79
76
|
console.log(`Uploading translations to domain "${domainRoot}" for org "${result.data.org}"...`);
|
|
77
|
+
// Determine if we can use git to skip unchanged files
|
|
78
|
+
let modifiedFiles = null;
|
|
79
|
+
if (await isGitRepository()) {
|
|
80
|
+
const defaultBranch = await getDefaultBranch();
|
|
81
|
+
const currentBranch = await getCurrentBranch();
|
|
82
|
+
if (defaultBranch &&
|
|
83
|
+
currentBranch &&
|
|
84
|
+
currentBranch !== defaultBranch.replace(/^origin\//, "")) {
|
|
85
|
+
modifiedFiles = await getModifiedFiles(defaultBranch);
|
|
86
|
+
console.log(`Git optimization enabled: only uploading files modified compared to "${defaultBranch}"`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
80
89
|
for (const configItem of result.data.projects) {
|
|
81
90
|
for (const locale of configItem.langs) {
|
|
82
91
|
const input = configItem.output
|
|
83
92
|
.replace("<lang>", locale)
|
|
84
93
|
.replace("<project>", configItem.project)
|
|
85
94
|
.replace("<format>", configItem.format);
|
|
86
|
-
|
|
95
|
+
const resolvedInput = path.resolve(cwd, input);
|
|
96
|
+
if (!fs.existsSync(resolvedInput)) {
|
|
87
97
|
console.log(`Skipping project "${configItem.project}" locale "${locale}": file not found "${input}"`);
|
|
88
98
|
continue;
|
|
89
99
|
}
|
|
100
|
+
if (modifiedFiles && !modifiedFiles.has(resolvedInput)) {
|
|
101
|
+
console.log(`Skipping project "${configItem.project}" locale "${locale}": file not modified`);
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
90
104
|
await uploadTranslations({
|
|
91
105
|
domainRoot,
|
|
92
106
|
apiKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadTranslations.js","sourceRoot":"","sources":["../src/uploadTranslations.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"uploadTranslations.js","sourceRoot":"","sources":["../src/uploadTranslations.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@transi-store/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dist/cli.js",
|
|
7
|
-
"./schema": "./dist/schema.js",
|
|
8
7
|
"./schema.json": "./dist/schema.json"
|
|
9
8
|
},
|
|
10
9
|
"bin": {
|
|
@@ -12,14 +11,18 @@
|
|
|
12
11
|
},
|
|
13
12
|
"dependencies": {
|
|
14
13
|
"@commander-js/extra-typings": "^14.0.0",
|
|
14
|
+
"@transi-store/common": "workspace:^",
|
|
15
15
|
"commander": "^14.0.3",
|
|
16
|
+
"simple-git": "^3.33.0",
|
|
16
17
|
"zod": "^4.3.6"
|
|
17
18
|
},
|
|
18
19
|
"devDependencies": {
|
|
19
20
|
"typescript": "^5.7.3"
|
|
20
21
|
},
|
|
21
22
|
"scripts": {
|
|
22
|
-
"
|
|
23
|
+
"clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
|
|
24
|
+
"build": "tsc && yarn build:schema",
|
|
25
|
+
"build:schema": "node ./scripts/create-json-schema.mjs",
|
|
23
26
|
"lint:types": "tsc --noEmit"
|
|
24
27
|
},
|
|
25
28
|
"files": [
|
package/dist/schema.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import z from "zod";
|
|
2
|
-
declare const schema: z.ZodObject<{
|
|
3
|
-
$schema: z.ZodOptional<z.ZodURL>;
|
|
4
|
-
domainRoot: z.ZodOptional<z.ZodURL>;
|
|
5
|
-
org: z.ZodString;
|
|
6
|
-
projects: z.ZodArray<z.ZodObject<{
|
|
7
|
-
project: z.ZodString;
|
|
8
|
-
langs: z.ZodArray<z.ZodString>;
|
|
9
|
-
format: z.ZodEnum<{
|
|
10
|
-
json: "json";
|
|
11
|
-
yaml: "yaml";
|
|
12
|
-
po: "po";
|
|
13
|
-
xlf: "xlf";
|
|
14
|
-
xliff: "xliff";
|
|
15
|
-
csv: "csv";
|
|
16
|
-
}>;
|
|
17
|
-
output: z.ZodString;
|
|
18
|
-
}, z.z.core.$strip>>;
|
|
19
|
-
}, z.z.core.$strip>;
|
|
20
|
-
export default schema;
|
|
21
|
-
//# sourceMappingURL=schema.d.ts.map
|
package/dist/schema.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAmBpB,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;mBAKV,CAAC;AAEH,eAAe,MAAM,CAAC"}
|
package/dist/schema.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import z from "zod";
|
|
2
|
-
const configItemSchema = z.object({
|
|
3
|
-
project: z.string().nonempty(),
|
|
4
|
-
langs: z
|
|
5
|
-
.array(z.string().regex(/^[a-z]{2}(?:-[A-Za-z]{2,})?$/))
|
|
6
|
-
.min(1)
|
|
7
|
-
.refine((arr) => new Set(arr).size === arr.length, {
|
|
8
|
-
message: "langs must contain unique items",
|
|
9
|
-
}),
|
|
10
|
-
format: z.enum(["json", "yaml", "po", "xlf", "xliff", "csv"]),
|
|
11
|
-
output: z
|
|
12
|
-
.string()
|
|
13
|
-
.nonempty()
|
|
14
|
-
.refine((s) => s.includes("<lang>"), {
|
|
15
|
-
message: "output must contain '<lang>' placeholder",
|
|
16
|
-
}),
|
|
17
|
-
});
|
|
18
|
-
const schema = z.object({
|
|
19
|
-
$schema: z.url().optional(),
|
|
20
|
-
domainRoot: z.url().optional(),
|
|
21
|
-
org: z.string().nonempty(),
|
|
22
|
-
projects: z.array(configItemSchema).min(1),
|
|
23
|
-
});
|
|
24
|
-
export default schema;
|
|
25
|
-
//# sourceMappingURL=schema.js.map
|
package/dist/schema.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;SACvD,GAAG,CAAC,CAAC,CAAC;SACN,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,EAAE;QACjD,OAAO,EAAE,iCAAiC;KAC3C,CAAC;IACJ,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACnC,OAAO,EAAE,0CAA0C;KACpD,CAAC;CACL,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC3B,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC9B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3C,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
|