From 3040ef56dd77d4e504408e2f230780557c89e89b Mon Sep 17 00:00:00 2001 From: "yanqi.zong" Date: Sat, 12 Apr 2025 17:11:38 -0700 Subject: [PATCH 1/2] feat: update readme --- README.md | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/README.md b/README.md index 189c173..c3235a4 100644 --- a/README.md +++ b/README.md @@ -1 +1,81 @@ # @tanstack-dev/translate-docs + +A utility for translating TanStack documentation into multiple languages. + +## Configuration + +Create a `translate.config.mjs` file in your project root with the following structure: + +```js +// Single configuration +export default { + langs: { + // Language configurations + // Example: 'zh', 'es', 'fr', etc. + [languageCode]: { + name: String, // Language name + guide: String, // Translation guidelines + terms: { // Dictionary of common terms + // 'term': 'translation' + }, + }, + }, + docsRoot: String | String[], // Root directory or array of root directories + docsContext: String, // Context information for the translator +} + +// OR multiple configurations as an array +export default [ + { + langs: { /* ... */ }, + docsRoot: String | String[], + docsContext: String, + }, + { + langs: { /* ... */ }, + docsRoot: String | String[], + docsContext: String, + } +] +``` + +## Usage + +Run the translation tool with: + +```bash +OPENAI_API_KEY=your-openai-api-key npx translate-docs +``` + +### Command Line Options + +The tool supports the following command line options: + +``` +Options: + -c, --config Path to configuration file + -v, --verbose Enable verbose logging + -p, --pattern File pattern to match for updating (e.g., "*.md" or "docs/**/*.tsx") + -l, --list-only Only list file status without updating docs + -u, --update-config-only Only update config without processing docs + -h, --help Display help for command +``` + +Examples: + +```bash +# Use a specific configuration file +npx translate-docs --config ./custom-config.mjs + +# Only process markdown files +npx translate-docs --pattern "**/*.md" + +# Just check which files would be processed without making changes +npx translate-docs --list-only + +# Update translation configuration without processing docs +npx translate-docs --update-config-only + +# Enable verbose logging for troubleshooting +npx translate-docs --verbose +``` From eefdd647faccd2de739b1e6981b69f5e7db345b2 Mon Sep 17 00:00:00 2001 From: "yanqi.zong" Date: Sat, 12 Apr 2025 17:13:13 -0700 Subject: [PATCH 2/2] feat: update release workflow --- .github/workflows/release.yml | 8 +-- package.json | 2 - pnpm-lock.yaml | 123 ---------------------------------- release.config.cjs | 18 +---- 4 files changed, 2 insertions(+), 149 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 78d0506..5fb5f1e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,12 +1,8 @@ name: Release on: - workflow_dispatch: - workflow_run: - workflows: ["CI"] + push: branches: [main] - types: - - completed permissions: contents: read # for checkout @@ -14,8 +10,6 @@ permissions: jobs: release: name: Release - # Only run if the CI workflow was successful - if: ${{ github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest permissions: contents: write # to be able to publish a GitHub release diff --git a/package.json b/package.json index 8d42d7d..28c6c8b 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,6 @@ "license": "ISC", "devDependencies": { "@biomejs/biome": "1.5.3", - "@semantic-release/changelog": "^6.0.3", - "@semantic-release/git": "^10.0.1", "@types/commander": "^2.12.5", "@types/node": "^22.14.0", "semantic-release": "^21.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6a2e0f3..c47e836 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,12 +24,6 @@ importers: '@biomejs/biome': specifier: 1.5.3 version: 1.5.3 - '@semantic-release/changelog': - specifier: ^6.0.3 - version: 6.0.3(semantic-release@21.1.2(typescript@5.8.3)) - '@semantic-release/git': - specifier: ^10.0.1 - version: 10.0.1(semantic-release@21.1.2(typescript@5.8.3)) '@types/commander': specifier: ^2.12.5 version: 2.12.5 @@ -467,32 +461,16 @@ packages: cpu: [x64] os: [win32] - '@semantic-release/changelog@6.0.3': - resolution: {integrity: sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==} - engines: {node: '>=14.17'} - peerDependencies: - semantic-release: '>=18.0.0' - '@semantic-release/commit-analyzer@10.0.4': resolution: {integrity: sha512-pFGn99fn8w4/MHE0otb2A/l5kxgOuxaaauIh4u30ncoTJuqWj4hXTgEJ03REqjS+w1R2vPftSsO26WC61yOcpw==} engines: {node: '>=18'} peerDependencies: semantic-release: '>=20.1.0' - '@semantic-release/error@3.0.0': - resolution: {integrity: sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==} - engines: {node: '>=14.17'} - '@semantic-release/error@4.0.0': resolution: {integrity: sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==} engines: {node: '>=18'} - '@semantic-release/git@10.0.1': - resolution: {integrity: sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==} - engines: {node: '>=14.17'} - peerDependencies: - semantic-release: '>=18.0.0' - '@semantic-release/github@9.2.6': resolution: {integrity: sha512-shi+Lrf6exeNZF+sBhK+P011LSbhmIAoUEgEY6SsxF8irJ+J2stwI5jkyDQ+4gzYyDImzV6LCKdYB9FXnQRWKA==} engines: {node: '>=18'} @@ -553,10 +531,6 @@ packages: resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - aggregate-error@5.0.0: resolution: {integrity: sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==} engines: {node: '>=18'} @@ -668,10 +642,6 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - clean-stack@5.2.0: resolution: {integrity: sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==} engines: {node: '>=14.16'} @@ -878,10 +848,6 @@ packages: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - execa@7.2.0: resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} @@ -1072,10 +1038,6 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} @@ -1152,10 +1114,6 @@ packages: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1344,10 +1302,6 @@ packages: engines: {node: '>=16'} hasBin: true - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -1418,10 +1372,6 @@ packages: resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} engines: {node: '>=14.16'} - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1509,10 +1459,6 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -1569,10 +1515,6 @@ packages: resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} engines: {node: '>=18'} - p-reduce@2.1.0: - resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==} - engines: {node: '>=8'} - p-reduce@3.0.0: resolution: {integrity: sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==} engines: {node: '>=12'} @@ -1882,10 +1824,6 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -2428,14 +2366,6 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.39.0': optional: true - '@semantic-release/changelog@6.0.3(semantic-release@21.1.2(typescript@5.8.3))': - dependencies: - '@semantic-release/error': 3.0.0 - aggregate-error: 3.1.0 - fs-extra: 11.3.0 - lodash: 4.17.21 - semantic-release: 21.1.2(typescript@5.8.3) - '@semantic-release/commit-analyzer@10.0.4(semantic-release@21.1.2(typescript@5.8.3))': dependencies: conventional-changelog-angular: 6.0.0 @@ -2449,24 +2379,8 @@ snapshots: transitivePeerDependencies: - supports-color - '@semantic-release/error@3.0.0': {} - '@semantic-release/error@4.0.0': {} - '@semantic-release/git@10.0.1(semantic-release@21.1.2(typescript@5.8.3))': - dependencies: - '@semantic-release/error': 3.0.0 - aggregate-error: 3.1.0 - debug: 4.4.0 - dir-glob: 3.0.1 - execa: 5.1.1 - lodash: 4.17.21 - micromatch: 4.0.8 - p-reduce: 2.1.0 - semantic-release: 21.1.2(typescript@5.8.3) - transitivePeerDependencies: - - supports-color - '@semantic-release/github@9.2.6(semantic-release@21.1.2(typescript@5.8.3))': dependencies: '@octokit/core': 5.2.1 @@ -2562,11 +2476,6 @@ snapshots: dependencies: humanize-ms: 1.2.1 - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - aggregate-error@5.0.0: dependencies: clean-stack: 5.2.0 @@ -2659,8 +2568,6 @@ snapshots: dependencies: readdirp: 4.1.2 - clean-stack@2.2.0: {} - clean-stack@5.2.0: dependencies: escape-string-regexp: 5.0.0 @@ -2874,18 +2781,6 @@ snapshots: event-target-shim@5.0.1: {} - execa@5.1.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - execa@7.2.0: dependencies: cross-spawn: 7.0.6 @@ -3117,8 +3012,6 @@ snapshots: transitivePeerDependencies: - supports-color - human-signals@2.1.0: {} - human-signals@4.3.1: {} human-signals@5.0.0: {} @@ -3171,8 +3064,6 @@ snapshots: is-plain-obj@1.1.0: {} - is-stream@2.0.1: {} - is-stream@3.0.0: {} is-text-path@2.0.0: @@ -3335,8 +3226,6 @@ snapshots: mime@4.0.7: {} - mimic-fn@2.1.0: {} - mimic-fn@4.0.0: {} min-indent@1.0.1: {} @@ -3401,10 +3290,6 @@ snapshots: normalize-url@8.0.1: {} - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -3417,10 +3302,6 @@ snapshots: dependencies: wrappy: 1.0.2 - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - onetime@6.0.0: dependencies: mimic-fn: 4.0.0 @@ -3471,8 +3352,6 @@ snapshots: p-map@7.0.3: {} - p-reduce@2.1.0: {} - p-reduce@3.0.0: {} p-try@1.0.0: {} @@ -3793,8 +3672,6 @@ snapshots: strip-bom@3.0.0: {} - strip-final-newline@2.0.0: {} - strip-final-newline@3.0.0: {} strip-indent@3.0.0: diff --git a/release.config.cjs b/release.config.cjs index 7916a97..db1769a 100644 --- a/release.config.cjs +++ b/release.config.cjs @@ -1,19 +1,3 @@ module.exports = { - branches: [ - "main", - { - name: "f/*", - channel: "next", - prerelease: - "beta-${(/^[a-zA-Z]+-[0-9]+/.exec(name.substr(2)) || [name.replace(/[_/.]/g, '-')])[0]}-${Date.now()}", - }, - ], - plugins: [ - "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", - "@semantic-release/npm", - "@semantic-release/github", - "@semantic-release/git", - "@semantic-release/changelog", - ], + branches: ["main"], };