@localheroai/cli 0.0.45-multilang.2 → 0.0.46-multilang.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 CHANGED
@@ -76,7 +76,7 @@ We auto-detect your project during init.
76
76
 
77
77
  ### Multi-language files (beta)
78
78
 
79
- Some projects keep all locales in one file, with top-level locale keys. Common in Rails apps that co-locate i18n with mailer templates or view components:
79
+ Some projects keep all locales in one file, with top-level locale keys:
80
80
 
81
81
  ```yaml
82
82
  en:
@@ -85,43 +85,21 @@ sv:
85
85
  subject: "Du har blivit inbjuden"
86
86
  ```
87
87
 
88
- Opt in by adding `multiLanguageFiles: true` to your `localhero.json`:
89
-
90
- ```json
91
- "translationFiles": {
92
- "paths": ["config/locales/", "apps/"],
93
- "pattern": "**/*.{yml,yaml}",
94
- "multiLanguageFiles": true
95
- }
96
- ```
97
-
98
- Detection rule: every top-level key in the file must be a configured locale (in `sourceLocale` or `outputLocales`), and there must be at least two. Supported formats: YAML and JSON. PO files are not supported.
99
-
100
- This is a beta feature — please report issues.
88
+ Opt in by setting `translationFiles.multiLanguageFiles: true`. YAML and JSON only, not PO. A file is treated as multi-language when every top-level key is a configured locale (source or output), with at least two locales present.
101
89
 
102
90
  ## Ignoring keys
103
91
 
104
- Some keys shouldn't be translated by LocalHero — for example, Rails validation
105
- errors served in English by an API, or internal admin strings. Add them to
106
- `translationFiles.ignoreKeys` in your `localhero.json`:
92
+ Skip keys you don't want translated (e.g. Rails validation errors, internal admin strings) via `translationFiles.ignoreKeys`:
107
93
 
108
94
  ```json
109
95
  {
110
96
  "translationFiles": {
111
- "ignoreKeys": [
112
- "activerecord.errors.*",
113
- "admin.internal.*"
114
- ]
97
+ "ignoreKeys": ["activerecord.errors.*", "admin.internal.*"]
115
98
  }
116
99
  }
117
100
  ```
118
101
 
119
- Matching keys are skipped during `push` and `translate`. Two pattern forms are
120
- supported: exact names (`foo.bar.baz`) and trailing wildcards (`foo.bar.*`,
121
- recursive). Use `--verbose` to see a summary of what was ignored.
122
-
123
- Not yet supported for `.po` / `.pot` files — those are uploaded unfiltered with
124
- a warning.
102
+ Patterns are exact names or trailing wildcards (`foo.*`, recursive). Matches are skipped during `push` and `translate`; use `--verbose` for a summary. Not supported for `.po` / `.pot` files.
125
103
 
126
104
  ## Commands
127
105
 
@@ -290,6 +268,10 @@ LocalHero.ai automatically translate your I18n files when you push changes. Duri
290
268
 
291
269
  🚧 **Skip translations on a PR**: Add the `skip-translation` label to any PR to skip the translation workflow. Useful when you're still working on copy changes.
292
270
 
271
+ ### Signed commits
272
+
273
+ For repos that require verified signed commits, set `"github": { "signedCommits": true }` in `localhero.json`. The CLI then commits via the GitHub App's GraphQL API, which auto-signs the commit.
274
+
293
275
 
294
276
  ## Support
295
277
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAuFA,qBAAqB;AACrB,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,eAAe,CAAS;IACxB,IAAI,CAAS;IACb,OAAO,CAAa;IACpB,IAAI,CAAM;IAEV,YAAY,OAAe,EAAE,OAK5B;QACC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,OAAO,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,WAAW,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;IACpC,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAiGA,qBAAqB;AACrB,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,eAAe,CAAS;IACxB,IAAI,CAAS;IACb,OAAO,CAAa;IACpB,IAAI,CAAM;IAEV,YAAY,OAAe,EAAE,OAK5B;QACC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,OAAO,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,WAAW,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;IACpC,CAAC;CACF"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * GitHub GraphQL helpers for creating signed commits.
3
+ *
4
+ * `createCommitOnBranch` is the canonical way to push commits via the GitHub
5
+ * App API and have them automatically signed by GitHub. It accepts a base SHA
6
+ * (`expectedHeadOid`) and atomically rejects the call if the branch has
7
+ * advanced — no orphaned tree/commit objects on retry.
8
+ *
9
+ * Reference: https://docs.github.com/en/graphql/reference/mutations#createcommitonbranch
10
+ */
11
+ export class GitHubGraphQLError extends Error {
12
+ type;
13
+ errors;
14
+ constructor(message, type, errors) {
15
+ super(message);
16
+ this.type = type;
17
+ this.errors = errors;
18
+ this.name = 'GitHubGraphQLError';
19
+ }
20
+ }
21
+ export class StaleHeadError extends GitHubGraphQLError {
22
+ constructor(message) {
23
+ super(message, 'STALE_DATA');
24
+ this.name = 'StaleHeadError';
25
+ }
26
+ }
27
+ const GRAPHQL_ENDPOINT = 'https://api.github.com/graphql';
28
+ const defaultDeps = {
29
+ fetch: globalThis.fetch.bind(globalThis)
30
+ };
31
+ const CREATE_COMMIT_MUTATION = `
32
+ mutation CreateSignedCommit($input: CreateCommitOnBranchInput!) {
33
+ createCommitOnBranch(input: $input) {
34
+ commit {
35
+ oid
36
+ url
37
+ }
38
+ }
39
+ }`;
40
+ export async function createSignedCommit(input, deps = defaultDeps) {
41
+ const variables = {
42
+ input: {
43
+ branch: {
44
+ repositoryNameWithOwner: input.repositoryNameWithOwner,
45
+ branchName: input.branchName
46
+ },
47
+ message: input.message,
48
+ expectedHeadOid: input.expectedHeadOid,
49
+ fileChanges: input.fileChanges
50
+ }
51
+ };
52
+ const response = await deps.fetch(GRAPHQL_ENDPOINT, {
53
+ method: 'POST',
54
+ headers: {
55
+ Authorization: `Bearer ${input.token}`,
56
+ 'Content-Type': 'application/json',
57
+ 'User-Agent': 'localhero-cli'
58
+ },
59
+ body: JSON.stringify({ query: CREATE_COMMIT_MUTATION, variables })
60
+ });
61
+ const text = await response.text();
62
+ if (!response.ok) {
63
+ throw new GitHubGraphQLError(`GitHub GraphQL request failed: ${response.status} ${response.statusText} — ${text}`);
64
+ }
65
+ let payload;
66
+ try {
67
+ payload = JSON.parse(text);
68
+ }
69
+ catch {
70
+ throw new GitHubGraphQLError(`GitHub GraphQL returned non-JSON response: ${text}`);
71
+ }
72
+ if (payload.errors && payload.errors.length > 0) {
73
+ const stale = payload.errors.find(e => e.type === 'STALE_DATA');
74
+ if (stale) {
75
+ throw new StaleHeadError(stale.message);
76
+ }
77
+ const first = payload.errors[0];
78
+ throw new GitHubGraphQLError(first.message, first.type, payload.errors);
79
+ }
80
+ const commit = payload.data?.createCommitOnBranch?.commit;
81
+ if (!commit) {
82
+ throw new GitHubGraphQLError(`GitHub GraphQL returned no commit data: ${text}`);
83
+ }
84
+ return { commitSha: commit.oid, commitUrl: commit.url };
85
+ }
86
+ /**
87
+ * Fetch the current HEAD of a branch via the REST API. Returns the SHA, the
88
+ * parent SHA (for amend semantics), and the author email (to detect whether
89
+ * the last commit was made by the LocalHero bot).
90
+ */
91
+ export async function fetchBranchHead(repositoryNameWithOwner, branchName, token, deps = defaultDeps) {
92
+ const refUrl = `https://api.github.com/repos/${repositoryNameWithOwner}/git/ref/heads/${encodeURIComponent(branchName)}`;
93
+ const refResponse = await deps.fetch(refUrl, {
94
+ headers: {
95
+ Authorization: `Bearer ${token}`,
96
+ Accept: 'application/vnd.github+json',
97
+ 'User-Agent': 'localhero-cli'
98
+ }
99
+ });
100
+ if (!refResponse.ok) {
101
+ throw new GitHubGraphQLError(`Failed to fetch branch head: ${refResponse.status} ${refResponse.statusText}`);
102
+ }
103
+ const refBody = (await refResponse.json());
104
+ const sha = refBody.object?.sha;
105
+ if (!sha) {
106
+ throw new GitHubGraphQLError(`Branch ${branchName} has no head SHA`);
107
+ }
108
+ const commitUrl = `https://api.github.com/repos/${repositoryNameWithOwner}/commits/${sha}`;
109
+ const commitResponse = await deps.fetch(commitUrl, {
110
+ headers: {
111
+ Authorization: `Bearer ${token}`,
112
+ Accept: 'application/vnd.github+json',
113
+ 'User-Agent': 'localhero-cli'
114
+ }
115
+ });
116
+ if (!commitResponse.ok) {
117
+ throw new GitHubGraphQLError(`Failed to fetch commit: ${commitResponse.status} ${commitResponse.statusText}`);
118
+ }
119
+ const commitBody = (await commitResponse.json());
120
+ return {
121
+ sha,
122
+ parentSha: commitBody.parents?.[0]?.sha ?? null,
123
+ authorEmail: commitBody.commit?.author?.email ?? null
124
+ };
125
+ }
126
+ //# sourceMappingURL=github-graphql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-graphql.js","sourceRoot":"","sources":["../../src/utils/github-graphql.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { promises as fs, existsSync } from 'fs';
3
3
  import path from 'path';
4
4
  import { fetchGitHubInstallationToken } from '../api/github.js';
5
5
  import { configService, PROJECT_CONFIG_FILE } from './config.js';
6
+ import { createSignedCommit, fetchBranchHead, StaleHeadError } from './github-graphql.js';
6
7
  const defaultDependencies = {
7
8
  exec: (cmd, options) => execSync(cmd, options),
8
9
  fs: { ...fs, existsSync },
@@ -10,7 +11,9 @@ const defaultDependencies = {
10
11
  env: process.env,
11
12
  console,
12
13
  fetchGitHubInstallationToken,
13
- configService
14
+ configService,
15
+ createSignedCommit,
16
+ fetchBranchHead
14
17
  };
15
18
  const workflowFileName = 'localhero-translate.yml';
16
19
  const GIT_USER_NAME = 'LocalHero Bot';
@@ -108,6 +111,9 @@ jobs:
108
111
  async fetchActionToken() {
109
112
  try {
110
113
  const config = await this.deps.configService.getProjectConfig();
114
+ if (!config) {
115
+ return { token: null, errorCode: 'config_missing' };
116
+ }
111
117
  const token = await this.deps.fetchGitHubInstallationToken(config.projectId);
112
118
  return { token };
113
119
  }
@@ -263,6 +269,19 @@ jobs:
263
269
  }
264
270
  return finalToken;
265
271
  },
272
+ /**
273
+ * Resolve the project's config and return whether signed-commits mode is on.
274
+ * Falls back to false on any error so the existing flow stays the default.
275
+ */
276
+ async useSignedCommitsMode() {
277
+ try {
278
+ const cfg = await this.deps.configService.getProjectConfig();
279
+ return Boolean(cfg?.github?.signedCommits);
280
+ }
281
+ catch {
282
+ return false;
283
+ }
284
+ },
266
285
  /**
267
286
  * Automatically commit and push sync changes when running in GitHub Actions
268
287
  * @param modifiedFiles List of file paths that were modified
@@ -274,9 +293,28 @@ jobs:
274
293
  return;
275
294
  log.log('\nCommitting sync changes...');
276
295
  try {
277
- this.configureGitUser();
278
296
  const branchName = options?.branchName || this.getBranchName();
279
297
  const commitMessage = this.buildSyncCommitMessage(syncSummary);
298
+ if (await this.useSignedCommitsMode()) {
299
+ const filesToCommit = [...modifiedFiles, PROJECT_CONFIG_FILE];
300
+ const result = await this.apiCommitAndPush({
301
+ branchName,
302
+ filePaths: filesToCommit,
303
+ message: commitMessage,
304
+ isSyncMode: true
305
+ });
306
+ if (result === 'no-changes') {
307
+ log.log('No changes to commit - translations already up to date.');
308
+ }
309
+ else if (result === 'amended') {
310
+ log.log('✓ Commit amended and pushed to GitHub (signed)\n');
311
+ }
312
+ else {
313
+ log.log('✓ Signed commit created and pushed to GitHub\n');
314
+ }
315
+ return;
316
+ }
317
+ this.configureGitUser();
280
318
  for (const filePath of modifiedFiles) {
281
319
  exec(`git add "${filePath}"`, { stdio: 'inherit' });
282
320
  }
@@ -302,6 +340,43 @@ jobs:
302
340
  throw error;
303
341
  }
304
342
  },
343
+ /**
344
+ * Build the commit message used by autoCommitChanges, including optional
345
+ * Co-authored-by trailer derived from GITHUB_ACTOR.
346
+ */
347
+ buildTranslateCommitMessage(translationSummary) {
348
+ let commitMessage = 'Update translations';
349
+ if (translationSummary && translationSummary.keysTranslated > 0) {
350
+ const { keysTranslated, languages, viewUrl } = translationSummary;
351
+ const languageList = languages.join(', ');
352
+ commitMessage += `\n\n${keysTranslated} ${keysTranslated > 1 ? 'keys' : 'key'} in ${languageList}`;
353
+ if (viewUrl) {
354
+ commitMessage += `\n\n${viewUrl}`;
355
+ }
356
+ }
357
+ const actor = this.deps.env.GITHUB_ACTOR;
358
+ if (actor && !actor.includes('[bot]')) {
359
+ commitMessage += `\n\nCo-authored-by: ${actor} <${actor}@users.noreply.github.com>`;
360
+ }
361
+ return commitMessage;
362
+ },
363
+ /**
364
+ * Enumerate files in the working tree that differ from HEAD. Used by the
365
+ * signed-commits path to know which files to send to the GraphQL API.
366
+ * Returns repo-relative paths.
367
+ */
368
+ listChangedFiles(filesPath) {
369
+ const { exec } = this.deps;
370
+ // `ls-files --modified --others --exclude-standard` mirrors what `git add .`
371
+ // would stage: tracked-and-modified plus untracked-but-not-ignored. -z gives
372
+ // NUL-delimited output so paths with spaces or special characters round-trip
373
+ // intact (no quoting, no rename arrows, no escaping).
374
+ const command = filesPath
375
+ ? `git ls-files --modified --others --exclude-standard -z -- ${filesPath}`
376
+ : 'git ls-files --modified --others --exclude-standard -z';
377
+ const output = exec(command, { stdio: 'pipe' }).toString();
378
+ return output.split('\0').filter(line => line.length > 0);
379
+ },
305
380
  /**
306
381
  * Automatically commit and push changes when running in GitHub Actions
307
382
  * @param filesPath Path pattern for files to commit
@@ -313,26 +388,30 @@ jobs:
313
388
  return;
314
389
  log.log('Running in GitHub Actions. Committing changes...');
315
390
  try {
316
- this.configureGitUser();
317
391
  const branchName = this.getBranchName();
392
+ const commitMessage = this.buildTranslateCommitMessage(translationSummary);
393
+ if (await this.useSignedCommitsMode()) {
394
+ const filePaths = this.listChangedFiles(filesPath);
395
+ const result = await this.apiCommitAndPush({
396
+ branchName,
397
+ filePaths,
398
+ message: commitMessage,
399
+ isSyncMode: false
400
+ });
401
+ if (result === 'no-changes') {
402
+ log.log('No changes to commit.');
403
+ }
404
+ else {
405
+ log.log('Signed commit pushed to GitHub.');
406
+ }
407
+ return;
408
+ }
409
+ this.configureGitUser();
318
410
  exec(`git add ${filesPath}`, { stdio: 'inherit' });
319
411
  if (!this.hasStagedChanges()) {
320
412
  log.log('No changes to commit.');
321
413
  return;
322
414
  }
323
- let commitMessage = 'Update translations';
324
- if (translationSummary && translationSummary.keysTranslated > 0) {
325
- const { keysTranslated, languages, viewUrl } = translationSummary;
326
- const languageList = languages.join(', ');
327
- commitMessage += `\n\n${keysTranslated} ${keysTranslated > 1 ? 'keys' : 'key'} in ${languageList}`;
328
- if (viewUrl) {
329
- commitMessage += `\n\n${viewUrl}`;
330
- }
331
- }
332
- const actor = this.deps.env.GITHUB_ACTOR;
333
- if (actor && !actor.includes('[bot]')) {
334
- commitMessage += `\n\nCo-authored-by: ${actor} <${actor}@users.noreply.github.com>`;
335
- }
336
415
  this.commit(commitMessage);
337
416
  const token = await this.getTokenForPush();
338
417
  await this.pushWithRetry(branchName, token);
@@ -343,6 +422,93 @@ jobs:
343
422
  log.error('Auto-commit failed:', errorMessage);
344
423
  throw error;
345
424
  }
425
+ },
426
+ /**
427
+ * Commit and push files using the GitHub GraphQL `createCommitOnBranch`
428
+ * mutation. Produces signed commits attributed to the LocalHero App. Works
429
+ * with repos that enforce `required_signatures` rulesets.
430
+ *
431
+ * Returns 'no-changes' if all files match what's already on the branch,
432
+ * 'amended' if the previous LocalHero sync commit was replaced, otherwise
433
+ * 'new'.
434
+ */
435
+ async apiCommitAndPush(params) {
436
+ const { console: log, env } = this.deps;
437
+ const repository = env.GITHUB_REPOSITORY;
438
+ if (!repository) {
439
+ throw new Error('GITHUB_REPOSITORY is not set');
440
+ }
441
+ const additions = await this.readFilesAsAdditions(params.filePaths);
442
+ if (additions.length === 0) {
443
+ return 'no-changes';
444
+ }
445
+ const token = await this.getTokenForPush();
446
+ const maxRetries = 3;
447
+ let lastError;
448
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
449
+ try {
450
+ const head = await this.deps.fetchBranchHead(repository, params.branchName, token);
451
+ // Amend semantics: if the last commit on the branch is by the
452
+ // LocalHero bot in sync mode, replace it instead of stacking.
453
+ let expectedHeadOid = head.sha;
454
+ let amended = false;
455
+ if (params.isSyncMode && this.lastCommitIsLocalHeroBot(head) && head.parentSha) {
456
+ expectedHeadOid = head.parentSha;
457
+ amended = true;
458
+ }
459
+ const headlineAndBody = this.splitCommitMessage(params.message);
460
+ await this.deps.createSignedCommit({
461
+ repositoryNameWithOwner: repository,
462
+ branchName: params.branchName,
463
+ expectedHeadOid,
464
+ message: headlineAndBody,
465
+ fileChanges: { additions },
466
+ token
467
+ });
468
+ return amended ? 'amended' : 'new';
469
+ }
470
+ catch (error) {
471
+ lastError = error;
472
+ if (error instanceof StaleHeadError && attempt < maxRetries) {
473
+ log.log(`Branch advanced under us, retrying (${attempt}/${maxRetries})...`);
474
+ continue;
475
+ }
476
+ throw error;
477
+ }
478
+ }
479
+ throw lastError;
480
+ },
481
+ async readFilesAsAdditions(filePaths) {
482
+ const { fs } = this.deps;
483
+ const seen = new Set();
484
+ const additions = [];
485
+ for (const filePath of filePaths) {
486
+ if (seen.has(filePath))
487
+ continue;
488
+ seen.add(filePath);
489
+ if (!fs.existsSync(filePath))
490
+ continue;
491
+ const buffer = await fs.readFile(filePath);
492
+ additions.push({
493
+ path: filePath,
494
+ contents: Buffer.from(buffer).toString('base64')
495
+ });
496
+ }
497
+ return additions;
498
+ },
499
+ lastCommitIsLocalHeroBot(head) {
500
+ if (!head.authorEmail)
501
+ return false;
502
+ const email = head.authorEmail.toLowerCase();
503
+ return email.includes('localhero');
504
+ },
505
+ splitCommitMessage(message) {
506
+ const newlineIdx = message.indexOf('\n');
507
+ if (newlineIdx === -1)
508
+ return { headline: message };
509
+ const headline = message.slice(0, newlineIdx);
510
+ const body = message.slice(newlineIdx + 1).replace(/^\n+/, '');
511
+ return body.length > 0 ? { headline, body } : { headline };
346
512
  }
347
513
  };
348
514
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/utils/github.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/utils/github.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.45-multilang.2",
3
+ "version": "0.0.46-multilang.0",
4
4
  "description": "CLI tool for managing translations with LocalHero.ai",
5
5
  "homepage": "https://localhero.ai",
6
6
  "repository": {