Skip to content

Commit 70c4765

Browse files
fix: sync Crowdin README headings and add tests
Expand the Crowdin sync flow to manage both README headings and navigation links, including canonical emoji/text handling and per-heading translation updates. Refactor the sync/validation scripts for better reuse and testability, add Babel/Jest/ESLint configuration with new unit tests, and wire CI support for Node projects. The README and related workflow naming were also updated to reflect heading+navigation sync and include the new Virtual Gamepads section.
1 parent a1cdf06 commit 70c4765

12 files changed

Lines changed: 10534 additions & 1135 deletions

.github/workflows/_ci-node.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
# This workflow is centrally managed in https://github.com/LizardByte/.github/
3+
# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in
4+
# the above-mentioned repo.
5+
6+
# To use, add the `npm-pkg` repository label to identify repositories that should trigger this workflow.
7+
8+
# This will run standard CI for Node.js/npm/TypeScript projects.
9+
10+
name: CI-Node
11+
permissions: {}
12+
13+
on:
14+
pull_request:
15+
push:
16+
branches:
17+
- master
18+
19+
concurrency:
20+
group: "${{ github.workflow }}-${{ github.ref }}"
21+
cancel-in-progress: true
22+
23+
jobs:
24+
call-ci-node:
25+
name: CI-Node
26+
uses: LizardByte/.github/.github/workflows/__call-ci-node.yml@master
27+
if: ${{ github.repository != 'LizardByte/.github' }}
28+
permissions:
29+
contents: write # required for release_setup action
30+
secrets:
31+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
32+
GH_TOKEN: ${{ secrets.GH_BOT_TOKEN }}

.github/workflows/sync-readme-navigation-crowdin.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
name: Sync README navigation to Crowdin
2+
name: Sync README headings and navigation to Crowdin
33
permissions:
44
contents: read
55

@@ -31,7 +31,7 @@ jobs:
3131
- name: Install dependencies
3232
run: npm ci --ignore-scripts
3333

34-
- name: Update and approve localized README navigation
34+
- name: Update and approve localized README headings and navigation
3535
run: npm run sync:readme-navigation-crowdin
3636
env:
3737
CROWDIN_TOKEN: ${{ secrets.CROWDIN_TOKEN }}

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,7 @@
33

44
# Ignore Node.js dependencies
55
node_modules/
6+
7+
# Ignore test results
8+
coverage/
9+
junit.xml

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<a href="#-game-stores">Game Stores</a> •
1414
<a href="#-frontends">Frontends</a> •
1515
<a href="#-virtual-displays">Virtual Displays</a> •
16+
<a href="#-virtual-gamepads">Virtual Gamepads</a> •
1617
<a href="#-scripts">Scripts</a> •
1718
<a href="#-testing">Testing</a> •
1819
<a href="#-guides">Guides</a>
@@ -46,7 +47,7 @@
4647
- [sunshine_utils](https://github.com/designer-living/sunshine_utils) - Utilities for using with Sunshine / Moonlight / Playnite game streaming.
4748
- [vuinputd](https://github.com/joleuger/vuinputd) - Enabling container-friendly input handling for Sunshine on Linux.
4849

49-
## 🎮 Game Stores
50+
## 🛒 Game Stores
5051
- [Epic Games](https://www.epicgames.com) - Download and play PC Games of every genre. They have mods, DLC, and Free Games too! Games for everyone.
5152
- [GOG](https://www.gog.com) - Download the best classic and new games on Windows, Mac & Linux. A vast selection of titles, DRM-free, with free goodies.
5253
- [Steam](https://store.steampowered.com) - The ultimate destination for playing, discussing, and creating games.
@@ -64,6 +65,9 @@
6465
- [VirtualDisplayDriver_Wizard](https://github.com/sofmeright/VirtualDisplayDriver_Wizard) - A GUI tool that can integrate with other software such as Sunshine for efficient manipulation of Indirect Display Driver Sample (IddSample) implementations.
6566
- [virtual-display-rs](https://github.com/MolotovCherry/virtual-display-rs) - A Windows virtual display driver to add multiple virtual monitors to your PC! For Win10+. Works with VR, obs, streaming software, etc.
6667

68+
## 🎮 Virtual Gamepads
69+
- [Virtual HID Driver](https://github.com/LizardByte/libvirtualhid) - User-mode virtual gamepads for Windows. Adds more gamepad types to Windows, such as Xbox One|Series, DualSense, Nintendo Switch Pro, and more to come in the future.
70+
6771
## 📜 Scripts
6872
- [Dummy Plug Automation](https://github.com/XenHat/dummy-plug-automation) - Automation for remote streaming using a dummy plug on Linux.
6973
- [FrlToggle](https://github.com/FrogTheFrog/frl-toggle) - Nvidia's Frame Rate Limiter.

babel.config.cjs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// this allows jest to use ES6 module imports
2+
module.exports = {
3+
presets: ['@babel/preset-env'],
4+
plugins: ['babel-plugin-transform-import-meta']
5+
}

eslint.config.mjs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import globals from 'globals'
2+
import pluginJs from '@eslint/js'
3+
4+
export default [
5+
pluginJs.configs.recommended,
6+
{
7+
ignores: [
8+
'coverage/**'
9+
]
10+
},
11+
{
12+
languageOptions: {
13+
globals: {
14+
...globals.node
15+
}
16+
},
17+
rules: {
18+
'no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }]
19+
},
20+
plugins: {
21+
jest: {
22+
extends: ['eslint:recommended'],
23+
rules: {
24+
'jest/no-disabled-tests': 'error',
25+
'jest/no-focused-tests': 'error',
26+
'jest/no-identical-title': 'error',
27+
'jest/prefer-to-have-length': 'error',
28+
'jest/valid-expect': 'error'
29+
}
30+
}
31+
}
32+
}
33+
]

0 commit comments

Comments
 (0)