@vocab/cli 2.1.12 → 2.2.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/README.md +11 -0
- package/dist/index.cjs +4 -3
- package/dist/index.cjs.map +1 -1
- package/package.json +2 -2
package/dist/README.md
CHANGED
|
@@ -732,6 +732,17 @@ This flag accepts an array of glob patterns to ignore.
|
|
|
732
732
|
vocab push --branch my-branch --ignore "**/dist/**" "**/another_ignored_directory/**"
|
|
733
733
|
```
|
|
734
734
|
|
|
735
|
+
#### Auto-Translation
|
|
736
|
+
|
|
737
|
+
By default, Phrase may not apply the project's automatic translation behaviour for new keys uploaded via API.
|
|
738
|
+
|
|
739
|
+
The `--auto-translate` flag instructs Phrase to automatically translate any missing keys using machine translation.. See [Phrase auto-translate API Documentation] for more information.
|
|
740
|
+
|
|
741
|
+
```sh
|
|
742
|
+
vocab push --branch my-branch --auto-translate
|
|
743
|
+
```
|
|
744
|
+
|
|
745
|
+
[Phrase auto-translate API Documentation]: https://developers.phrase.com/en/api/strings/uploads/upload-a-new-file#body-autotranslate
|
|
735
746
|
[phrase]: https://developers.phrase.com/api/
|
|
736
747
|
|
|
737
748
|
#### [Tags]
|
package/dist/index.cjs
CHANGED
|
@@ -19,7 +19,7 @@ function getGitBranch() {
|
|
|
19
19
|
|
|
20
20
|
//#endregion
|
|
21
21
|
//#region package.json
|
|
22
|
-
var version = "2.
|
|
22
|
+
var version = "2.2.0";
|
|
23
23
|
var description = "A CLI for generating typed Vocab translations and interacting with 3rd-party localization services";
|
|
24
24
|
|
|
25
25
|
//#endregion
|
|
@@ -39,10 +39,11 @@ const pushAction = async (options) => {
|
|
|
39
39
|
await (0, _vocab_phrase.push)({
|
|
40
40
|
branch: options.branch,
|
|
41
41
|
deleteUnusedKeys: options.deleteUnusedKeys,
|
|
42
|
-
ignore: options.ignore
|
|
42
|
+
ignore: options.ignore,
|
|
43
|
+
autoTranslate: options.autoTranslate
|
|
43
44
|
}, options.userConfig);
|
|
44
45
|
};
|
|
45
|
-
program.command("push").description("Push translations to Phrase").addOption(branchOption).option("--delete-unused-keys", "Whether or not to delete unused keys after pushing", false).option("--ignore <paths...>", "Array of glob paths to ignore when searching for keys to push", []).action(pushAction);
|
|
46
|
+
program.command("push").description("Push translations to Phrase").addOption(branchOption).option("--auto-translate", "Enable automatic translation for missing translations", false).option("--delete-unused-keys", "Whether or not to delete unused keys after pushing", false).option("--ignore <paths...>", "Array of glob paths to ignore when searching for keys to push", []).action(pushAction);
|
|
46
47
|
const pullAction = async (options) => {
|
|
47
48
|
await (0, _vocab_phrase.pull)({
|
|
48
49
|
branch: options.branch,
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["Command","Option"],"sources":["../src/getGitBranch.ts","../package.json","../src/index.ts"],"sourcesContent":["import { execSync } from 'node:child_process';\n\n// Modified from `env-ci` to use `execSync`\n// https://github.com/semantic-release/env-ci/blob/e11b2965aa82cd7366511635d9bc4ae3d0144f64/lib/git.js#L11C24-L35\nexport function getGitBranch() {\n try {\n const headRef = execSync('git rev-parse --abbrev-ref HEAD', {\n encoding: 'utf8',\n }).trim();\n\n if (headRef === 'HEAD') {\n const branch = execSync('git show -s --pretty=%d HEAD', {\n encoding: 'utf8',\n })\n .trim()\n .replace(/^\\(|\\)$/g, '')\n .split(', ')\n .find((b) => b.startsWith('origin/'));\n\n return branch ? branch.match(/^origin\\/(?<branch>.+)/)?.[1] : undefined;\n }\n\n return headRef;\n } catch {\n return undefined;\n }\n}\n","","/* eslint-disable no-console */\nimport { pull, push } from '@vocab/phrase';\nimport { type UserConfig, resolveConfig, compile, validate } from '@vocab/core';\nimport { getGitBranch } from './getGitBranch.js';\nimport { Command, Option } from 'commander';\nimport {\n description,\n version,\n} from '@vocab/cli/package.json' with { type: 'json' };\n\nconst branch = getGitBranch();\nconst DEFAULT_BRANCH = branch || 'local-development';\n\nconst program = new Command();\n\nprogram\n .name('vocab')\n .version(version)\n .description(description)\n .option('--config <path>', 'Path to config file')\n .hook('preAction', async (thisCommand, actionCommand) => {\n const options = thisCommand.optsWithGlobals<{ config?: string }>();\n\n console.log('Loading configuration from', options.config || process.cwd());\n const userConfig = await resolveConfig(options.config);\n\n if (!userConfig) {\n throw new Error('No configuration file found');\n }\n\n console.log('Successfully loaded configuration');\n actionCommand.setOptionValue('userConfig', userConfig);\n });\n\nconst branchOption = new Option(\n '--branch <name>',\n 'The Phrase branch to target',\n).default(DEFAULT_BRANCH);\n\nconst pushAction = async (options: {\n branch: string;\n deleteUnusedKeys?: boolean;\n ignore?: string[];\n userConfig: UserConfig;\n}) => {\n await push(\n {\n branch: options.branch,\n deleteUnusedKeys: options.deleteUnusedKeys,\n ignore: options.ignore,\n },\n options.userConfig,\n );\n};\n\nprogram\n .command('push')\n .description('Push translations to Phrase')\n .addOption(branchOption)\n .option(\n '--delete-unused-keys',\n 'Whether or not to delete unused keys after pushing',\n false,\n )\n .option(\n '--ignore <paths...>',\n 'Array of glob paths to ignore when searching for keys to push',\n [],\n )\n .action(pushAction);\n\nconst pullAction = async (options: {\n branch: string;\n errorOnNoGlobalKeyTranslation: boolean;\n userConfig: UserConfig;\n}) => {\n await pull(\n {\n branch: options.branch,\n errorOnNoGlobalKeyTranslation:\n options.errorOnNoGlobalKeyTranslation || false,\n },\n options.userConfig,\n );\n};\n\nprogram\n .command('pull')\n .description('Pull translations from Phrase')\n .addOption(branchOption)\n .option(\n '--error-on-no-global-key-translation',\n 'Throw an error when there is no translation for a global key',\n false,\n )\n .action(pullAction);\n\nconst compileAction = async (options: {\n watch: boolean;\n userConfig: UserConfig;\n}) => {\n await compile({ watch: options.watch }, options.userConfig);\n};\n\nprogram\n .command('compile')\n .description('Compile translations')\n .option('--watch', 'Watch for changes', false)\n .action(compileAction);\n\nconst validateAction = async (options: { userConfig: UserConfig }) => {\n console.log('Validating project');\n const valid = await validate(options.userConfig);\n\n if (!valid) {\n throw new Error('Project is invalid');\n }\n\n console.log('Project is valid');\n};\n\nprogram\n .command('validate')\n .description('Validate translations')\n .action(validateAction);\n\nprogram.parseAsync();\n"],"mappings":";;;;;;AAIA,SAAgB,eAAe;AAC7B,KAAI;EACF,MAAM,2CAAmB,mCAAmC,EAC1D,UAAU,QACX,CAAC,CAAC,MAAM;AAET,MAAI,YAAY,QAAQ;GACtB,MAAM,0CAAkB,gCAAgC,EACtD,UAAU,QACX,CAAC,CACC,MAAM,CACN,QAAQ,YAAY,GAAG,CACvB,MAAM,KAAK,CACX,MAAM,MAAM,EAAE,WAAW,UAAU,CAAC;AAEvC,UAAO,SAAS,OAAO,MAAM,yBAAyB,GAAG,KAAK;;AAGhE,SAAO;SACD;AACN;;;;;;;;;;;AEbJ,MAAM,iBADS,cAAc,IACI;AAEjC,MAAM,UAAU,IAAIA,mBAAS;AAE7B,QACG,KAAK,QAAQ,CACb,QAAQ,QAAQ,CAChB,YAAY,YAAY,CACxB,OAAO,mBAAmB,sBAAsB,CAChD,KAAK,aAAa,OAAO,aAAa,kBAAkB;CACvD,MAAM,UAAU,YAAY,iBAAsC;AAElE,SAAQ,IAAI,8BAA8B,QAAQ,UAAU,QAAQ,KAAK,CAAC;CAC1E,MAAM,aAAa,qCAAoB,QAAQ,OAAO;AAEtD,KAAI,CAAC,WACH,OAAM,IAAI,MAAM,8BAA8B;AAGhD,SAAQ,IAAI,oCAAoC;AAChD,eAAc,eAAe,cAAc,WAAW;EACtD;AAEJ,MAAM,eAAe,IAAIC,iBACvB,mBACA,8BACD,CAAC,QAAQ,eAAe;AAEzB,MAAM,aAAa,OAAO,
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["Command","Option"],"sources":["../src/getGitBranch.ts","../package.json","../src/index.ts"],"sourcesContent":["import { execSync } from 'node:child_process';\n\n// Modified from `env-ci` to use `execSync`\n// https://github.com/semantic-release/env-ci/blob/e11b2965aa82cd7366511635d9bc4ae3d0144f64/lib/git.js#L11C24-L35\nexport function getGitBranch() {\n try {\n const headRef = execSync('git rev-parse --abbrev-ref HEAD', {\n encoding: 'utf8',\n }).trim();\n\n if (headRef === 'HEAD') {\n const branch = execSync('git show -s --pretty=%d HEAD', {\n encoding: 'utf8',\n })\n .trim()\n .replace(/^\\(|\\)$/g, '')\n .split(', ')\n .find((b) => b.startsWith('origin/'));\n\n return branch ? branch.match(/^origin\\/(?<branch>.+)/)?.[1] : undefined;\n }\n\n return headRef;\n } catch {\n return undefined;\n }\n}\n","","/* eslint-disable no-console */\nimport { pull, push } from '@vocab/phrase';\nimport { type UserConfig, resolveConfig, compile, validate } from '@vocab/core';\nimport { getGitBranch } from './getGitBranch.js';\nimport { Command, Option } from 'commander';\nimport {\n description,\n version,\n} from '@vocab/cli/package.json' with { type: 'json' };\n\nconst branch = getGitBranch();\nconst DEFAULT_BRANCH = branch || 'local-development';\n\nconst program = new Command();\n\nprogram\n .name('vocab')\n .version(version)\n .description(description)\n .option('--config <path>', 'Path to config file')\n .hook('preAction', async (thisCommand, actionCommand) => {\n const options = thisCommand.optsWithGlobals<{ config?: string }>();\n\n console.log('Loading configuration from', options.config || process.cwd());\n const userConfig = await resolveConfig(options.config);\n\n if (!userConfig) {\n throw new Error('No configuration file found');\n }\n\n console.log('Successfully loaded configuration');\n actionCommand.setOptionValue('userConfig', userConfig);\n });\n\nconst branchOption = new Option(\n '--branch <name>',\n 'The Phrase branch to target',\n).default(DEFAULT_BRANCH);\n\nconst pushAction = async (options: {\n autoTranslate?: boolean;\n branch: string;\n deleteUnusedKeys?: boolean;\n ignore?: string[];\n userConfig: UserConfig;\n}) => {\n await push(\n {\n branch: options.branch,\n deleteUnusedKeys: options.deleteUnusedKeys,\n ignore: options.ignore,\n autoTranslate: options.autoTranslate,\n },\n options.userConfig,\n );\n};\n\nprogram\n .command('push')\n .description('Push translations to Phrase')\n .addOption(branchOption)\n .option(\n '--auto-translate',\n 'Enable automatic translation for missing translations',\n false,\n )\n .option(\n '--delete-unused-keys',\n 'Whether or not to delete unused keys after pushing',\n false,\n )\n .option(\n '--ignore <paths...>',\n 'Array of glob paths to ignore when searching for keys to push',\n [],\n )\n .action(pushAction);\n\nconst pullAction = async (options: {\n branch: string;\n errorOnNoGlobalKeyTranslation: boolean;\n userConfig: UserConfig;\n}) => {\n await pull(\n {\n branch: options.branch,\n errorOnNoGlobalKeyTranslation:\n options.errorOnNoGlobalKeyTranslation || false,\n },\n options.userConfig,\n );\n};\n\nprogram\n .command('pull')\n .description('Pull translations from Phrase')\n .addOption(branchOption)\n .option(\n '--error-on-no-global-key-translation',\n 'Throw an error when there is no translation for a global key',\n false,\n )\n .action(pullAction);\n\nconst compileAction = async (options: {\n watch: boolean;\n userConfig: UserConfig;\n}) => {\n await compile({ watch: options.watch }, options.userConfig);\n};\n\nprogram\n .command('compile')\n .description('Compile translations')\n .option('--watch', 'Watch for changes', false)\n .action(compileAction);\n\nconst validateAction = async (options: { userConfig: UserConfig }) => {\n console.log('Validating project');\n const valid = await validate(options.userConfig);\n\n if (!valid) {\n throw new Error('Project is invalid');\n }\n\n console.log('Project is valid');\n};\n\nprogram\n .command('validate')\n .description('Validate translations')\n .action(validateAction);\n\nprogram.parseAsync();\n"],"mappings":";;;;;;AAIA,SAAgB,eAAe;AAC7B,KAAI;EACF,MAAM,2CAAmB,mCAAmC,EAC1D,UAAU,QACX,CAAC,CAAC,MAAM;AAET,MAAI,YAAY,QAAQ;GACtB,MAAM,0CAAkB,gCAAgC,EACtD,UAAU,QACX,CAAC,CACC,MAAM,CACN,QAAQ,YAAY,GAAG,CACvB,MAAM,KAAK,CACX,MAAM,MAAM,EAAE,WAAW,UAAU,CAAC;AAEvC,UAAO,SAAS,OAAO,MAAM,yBAAyB,GAAG,KAAK;;AAGhE,SAAO;SACD;AACN;;;;;;;;;;;AEbJ,MAAM,iBADS,cAAc,IACI;AAEjC,MAAM,UAAU,IAAIA,mBAAS;AAE7B,QACG,KAAK,QAAQ,CACb,QAAQ,QAAQ,CAChB,YAAY,YAAY,CACxB,OAAO,mBAAmB,sBAAsB,CAChD,KAAK,aAAa,OAAO,aAAa,kBAAkB;CACvD,MAAM,UAAU,YAAY,iBAAsC;AAElE,SAAQ,IAAI,8BAA8B,QAAQ,UAAU,QAAQ,KAAK,CAAC;CAC1E,MAAM,aAAa,qCAAoB,QAAQ,OAAO;AAEtD,KAAI,CAAC,WACH,OAAM,IAAI,MAAM,8BAA8B;AAGhD,SAAQ,IAAI,oCAAoC;AAChD,eAAc,eAAe,cAAc,WAAW;EACtD;AAEJ,MAAM,eAAe,IAAIC,iBACvB,mBACA,8BACD,CAAC,QAAQ,eAAe;AAEzB,MAAM,aAAa,OAAO,YAMpB;AACJ,+BACE;EACE,QAAQ,QAAQ;EAChB,kBAAkB,QAAQ;EAC1B,QAAQ,QAAQ;EAChB,eAAe,QAAQ;EACxB,EACD,QAAQ,WACT;;AAGH,QACG,QAAQ,OAAO,CACf,YAAY,8BAA8B,CAC1C,UAAU,aAAa,CACvB,OACC,oBACA,yDACA,MACD,CACA,OACC,wBACA,sDACA,MACD,CACA,OACC,uBACA,iEACA,EAAE,CACH,CACA,OAAO,WAAW;AAErB,MAAM,aAAa,OAAO,YAIpB;AACJ,+BACE;EACE,QAAQ,QAAQ;EAChB,+BACE,QAAQ,iCAAiC;EAC5C,EACD,QAAQ,WACT;;AAGH,QACG,QAAQ,OAAO,CACf,YAAY,gCAAgC,CAC5C,UAAU,aAAa,CACvB,OACC,wCACA,gEACA,MACD,CACA,OAAO,WAAW;AAErB,MAAM,gBAAgB,OAAO,YAGvB;AACJ,gCAAc,EAAE,OAAO,QAAQ,OAAO,EAAE,QAAQ,WAAW;;AAG7D,QACG,QAAQ,UAAU,CAClB,YAAY,uBAAuB,CACnC,OAAO,WAAW,qBAAqB,MAAM,CAC7C,OAAO,cAAc;AAExB,MAAM,iBAAiB,OAAO,YAAwC;AACpE,SAAQ,IAAI,qBAAqB;AAGjC,KAAI,CAFU,gCAAe,QAAQ,WAAW,CAG9C,OAAM,IAAI,MAAM,qBAAqB;AAGvC,SAAQ,IAAI,mBAAmB;;AAGjC,QACG,QAAQ,WAAW,CACnB,YAAY,wBAAwB,CACpC,OAAO,eAAe;AAEzB,QAAQ,YAAY"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vocab/cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "A CLI for generating typed Vocab translations and interacting with 3rd-party localization services",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"commander": "^14.0.2",
|
|
27
27
|
"@vocab/core": "^1.7.6",
|
|
28
|
-
"@vocab/phrase": "^2.
|
|
28
|
+
"@vocab/phrase": "^2.2.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/node": "^22.0.0"
|