Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
cfa873c
feat: refactor update comparison output for consistency and clarity
dgibbs64 Aug 12, 2025
bdfc6e5
Refactor remote build version handling across multiple modules
dgibbs64 Aug 13, 2025
9c36976
fix(alert): resolve issue with servername not always being listed in …
dgibbs64 Aug 13, 2025
4d0d110
fix(alert_discord): remove "More info" field from Discord alert JSON
dgibbs64 Aug 13, 2025
6580b89
fix(alert): improve update alert messaging for clarity
dgibbs64 Aug 13, 2025
24183e7
Merge branch 'develop' into 4696-bug-discord-alert-on-update-uses-the…
dgibbs64 Nov 10, 2025
7abedc4
remove inline
dgibbs64 Nov 10, 2025
c707de8
fix(alert): Correct grammar in update alert message
dgibbs64 Nov 10, 2025
e5026a8
typo
dgibbs64 Nov 10, 2025
ee1dca9
fix(alert_discord): Add inline property to "Is my Game Server Online?…
dgibbs64 Nov 10, 2025
7db6735
fix(pd): increase timeout for termbin.com connection
dgibbs64 Nov 10, 2025
b25fabf
fix(alert_discord): reorder fields in Discord alert JSON
dgibbs64 Nov 10, 2025
65bc057
revert back to factorio.com
dgibbs64 Feb 8, 2026
a5e58d4
Standardizes alert messages across platforms
dgibbs64 Feb 8, 2026
203853f
Removes Hostname from alert messages
dgibbs64 Feb 8, 2026
00265e5
Merge branch 'develop' into 4696-bug-discord-alert-on-update-uses-the…
dgibbs64 Feb 8, 2026
1eb6ae1
Configures shellcheckrc filename
dgibbs64 Feb 8, 2026
5e2d0de
Merge remote-tracking branch 'origin/4696-bug-discord-alert-on-update…
dgibbs64 Feb 8, 2026
52ae5d0
Disables shellcheck errors and removes variable
dgibbs64 Feb 8, 2026
7731e9e
Fixes and improves server list validation scripts
dgibbs64 Feb 8, 2026
b3d2700
Fixes glibc check and mod selection logic
dgibbs64 Feb 8, 2026
a79b528
Fixes cache control for dev-debug mode
dgibbs64 Feb 8, 2026
607f896
Allows spaces in steamcmdcommand variable
dgibbs64 Feb 8, 2026
cb3a092
Addresses various script improvements
dgibbs64 Feb 8, 2026
52b579d
Fixes mono repo install exit code check
dgibbs64 Feb 8, 2026
5691e52
Refactors and reorders core modules
dgibbs64 Feb 9, 2026
30afa80
Makes scripts executable
dgibbs64 Feb 9, 2026
61d335f
Adds explicit permissions to workflows
dgibbs64 Feb 9, 2026
ea4468d
Fixes output redirection and URL parsing
dgibbs64 Feb 9, 2026
42d38a5
Applies code formatting for consistency
dgibbs64 Feb 9, 2026
11776f7
Fixes minor formatting and logic issues
dgibbs64 Feb 9, 2026
74aae8a
Configures and disables linters
dgibbs64 Feb 9, 2026
35eab4a
Improves documentation and linting
dgibbs64 Feb 9, 2026
cd45f4f
Fixes typos and improves code consistency
dgibbs64 Feb 9, 2026
17dc48e
Excludes workflow files from Prettier formatting
dgibbs64 Feb 9, 2026
5023490
chore(prettier): format code
dgibbs64 Feb 9, 2026
3eb8213
Updates Super-Linter configuration
dgibbs64 Feb 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 28 additions & 28 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
{
"name": "BASH Dev Container",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/devcontainers-community/npm-features/prettier:1": {
"plugins": "prettier-plugin-sh"
},
"ghcr.io/devcontainers-extra/features/actionlint:1": {},
"ghcr.io/devcontainers-extra/features/checkov:1": {},
"ghcr.io/devcontainers-extra/features/markdownlint-cli:1": {},
"ghcr.io/devcontainers-extra/features/shellcheck:1": {},
"ghcr.io/devcontainers-extra/features/yamllint:2": {},
"ghcr.io/devcontainers/features/github-cli:1": {}
},
"customizations": {
"vscode": {
"extensions": [
"DavidAnson.vscode-markdownlint",
"editorconfig.editorconfig",
"esbenp.prettier-vscode",
"github.vscode-github-actions",
"GitHub.vscode-pull-request-github",
"redhat.vscode-yaml",
"timonwong.shellcheck",
"yzhang.markdown-all-in-one"
]
}
},
"postCreateCommand": "npm init -y >/dev/null 2>&1 || true && npm install --no-save prettier prettier-plugin-sh prettier-plugin-jinja-template"
"name": "BASH Dev Container",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/devcontainers-community/npm-features/prettier:1": {
"plugins": "prettier-plugin-sh"
},
"ghcr.io/devcontainers-extra/features/actionlint:1": {},
"ghcr.io/devcontainers-extra/features/checkov:1": {},
"ghcr.io/devcontainers-extra/features/markdownlint-cli:1": {},
"ghcr.io/devcontainers-extra/features/shellcheck:1": {},
"ghcr.io/devcontainers-extra/features/yamllint:2": {},
"ghcr.io/devcontainers/features/github-cli:1": {}
},
"customizations": {
"vscode": {
"extensions": [
"DavidAnson.vscode-markdownlint",
"editorconfig.editorconfig",
"esbenp.prettier-vscode",
"github.vscode-github-actions",
"GitHub.vscode-pull-request-github",
"redhat.vscode-yaml",
"timonwong.shellcheck",
"yzhang.markdown-all-in-one"
]
}
},
"postCreateCommand": "npm init -y >/dev/null 2>&1 || true && npm install --no-save prettier prettier-plugin-sh prettier-plugin-jinja-template"
}
17 changes: 16 additions & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,21 @@ insert_final_newline = true
trim_trailing_whitespace = true

# BASH Files
[*.{.sh}]
[*.sh]
indent_size = 4
indent_style = tab

# JSON Files (Biome formatting)
[*.json]
indent_style = tab
indent_size = 2

# Steam appmanifest files (Valve ACF format)
[*.acf]
indent_style = tab
indent_size = 4

# Python
[*.py]
indent_style = space
indent_size = 4
11 changes: 11 additions & 0 deletions .github/linters/.codespellrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[codespell]
# Skip data tables that contain many short server identifiers (e.g. "fof", "nd")
skip =
lgsm/data/*.csv,
package-lock.json,
*/package-lock.json,
node_modules,
*/node_modules/*

# Ignore common identifiers/acronyms and extensions used throughout LinuxGSM
ignore-words-list = distroname,fof,nd,sav,parms,ThirdParty
2 changes: 2 additions & 0 deletions .github/linters/.flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[flake8]
max-line-length = 120
23 changes: 23 additions & 0 deletions .github/linters/.markdown-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Configuration for markdownlint (used by Super Linter)

# MD041: README starts with HTML badges in this repo.
MD041: false

# MD051: GitHub heading anchor generation can differ (emoji, punctuation).
MD051: false

# MD013: The project documentation frequently contains long URLs/commands.
MD013: false

# MD033: The main README uses inline HTML for badges.
MD033: false

# Match existing list formatting in this repo.
MD007:
indent: 4

MD030:
ul_single: 3
ol_single: 2
ul_multi: 3
ol_multi: 2
1 change: 1 addition & 0 deletions .github/linters/.shellcheckrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
disable=SC2154,SC2034
25 changes: 25 additions & 0 deletions .github/linters/.yaml-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
extends: default

rules:
document-start: disable
truthy: disable

line-length:
max: 200
level: warning
allow-non-breakable-words: true
allow-non-breakable-inline-mappings: true

braces:
min-spaces-inside: 0
max-spaces-inside: 1
min-spaces-inside-empty: 0
max-spaces-inside-empty: 0

empty-lines:
max: 2
max-start: 0
max-end: 0

comments:
min-spaces-from-content: 1
30 changes: 15 additions & 15 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,30 @@ Fixes #[issue]

## Type of change

- [ ] Bug fix (a change which fixes an issue).
- [ ] New feature (a change which adds functionality).
- [ ] New Server (new server added).
- [ ] Refactor (restructures existing code).
- [ ] Comment update (typo, spelling, explanation, examples, etc).
- [ ] Bug fix (a change which fixes an issue).
- [ ] New feature (a change which adds functionality).
- [ ] New Server (new server added).
- [ ] Refactor (restructures existing code).
- [ ] Comment update (typo, spelling, explanation, examples, etc).

## Checklist

PR will not be merged until all steps are complete.

- [ ] This pull request links to an issue.
- [ ] This pull request uses the `develop` branch as its base.
- [ ] This pull request subject follows the Conventional Commits standard.
- [ ] This code follows the style guidelines of this project.
- [ ] I have performed a self-review of my code.
- [ ] I have checked that this code is commented where required.
- [ ] I have provided a detailed enough description of this PR.
- [ ] I have checked if documentation needs updating.
- [ ] This pull request links to an issue.
- [ ] This pull request uses the `develop` branch as its base.
- [ ] This pull request subject follows the Conventional Commits standard.
- [ ] This code follows the style guidelines of this project.
- [ ] I have performed a self-review of my code.
- [ ] I have checked that this code is commented where required.
- [ ] I have provided a detailed enough description of this PR.
- [ ] I have checked if documentation needs updating.

## Documentation

If documentation does need updating either update it by creating a PR (preferred) or request a documentation update.

- User docs: https://github.com/GameServerManagers/LinuxGSM-Docs
- Dev docs: https://github.com/GameServerManagers/LinuxGSM-Dev-Docs
- User docs: <https://github.com/GameServerManagers/LinuxGSM-Docs>
- Dev docs: <https://github.com/GameServerManagers/LinuxGSM-Dev-Docs>

**Thank you for your Pull Request!**
9 changes: 6 additions & 3 deletions .github/workflows/action-super-linter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,10 @@ jobs:
- name: Checkout code
uses: actions/checkout@v5
with:
# super-linter needs the full git history to get the
# list of files that changed across commits
fetch-depth: 0
# Shallow clone reduces transient fetch failures (HTTP 500) from GitHub.
# We lint the whole codebase instead of relying on git history.
fetch-depth: 1
fetch-tags: false
persist-credentials: false

- name: Install Prettier plugins (for summary formatting)
Expand All @@ -41,11 +42,13 @@ jobs:
env:
# To report GitHub Actions status checks
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VALIDATE_ALL_CODEBASE: true
VALIDATE_GITHUB_ACTIONS_ZIZMOR: false
VALIDATE_JSCPD: false
VALIDATE_JSON_PRETTIER: false
VALIDATE_MARKDOWN_PRETTIER: false
VALIDATE_NATURAL_LANGUAGE: false
VALIDATE_PYTHON_RUFF_FORMAT: false
VALIDATE_SHELL_SHFMT: false
VALIDATE_TERRAFORM_TERRASCAN: false
VALIDATE_YAML_PRETTIER: false
2 changes: 2 additions & 0 deletions .github/workflows/add-to-project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ on:
- opened
- labeled

permissions: {}

jobs:
add-to-project:
if: github.repository_owner == 'GameServerManagers'
Expand Down
10 changes: 6 additions & 4 deletions .github/workflows/details-check-generate-matrix.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@ while read -r line; do
export gamename
distro=$(echo "$line" | awk -F, '{ print $4 }')
export distro
echo -n "{" >> "shortnamearray.json"
echo -n "\"shortname\":" >> "shortnamearray.json"
echo -n "\"${shortname}\"" >> "shortnamearray.json"
echo -n "}," >> "shortnamearray.json"
{
echo -n "{";
echo -n "\"shortname\":";
echo -n "\"${shortname}\"";
echo -n "},";
} >> "shortnamearray.json"
done < <(tail -n +2 serverlist.csv)
sed -i '$ s/.$//' "shortnamearray.json"
echo -n "]" >> "shortnamearray.json"
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/details-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ on:
branches:
- develop

permissions:
contents: read

concurrency:
group: details-check-${{ github.ref_name }}
cancel-in-progress: true
Expand All @@ -28,7 +31,7 @@ jobs:
run: |
shortnamearray=$(cat shortnamearray.json)
echo "${shortnamearray}"
echo -n "matrix=${shortnamearray}" >> $GITHUB_OUTPUT
echo -n "matrix=${shortnamearray}" >> "$GITHUB_OUTPUT"

details-check:
if: github.repository_owner == 'GameServerManagers'
Expand All @@ -41,7 +44,7 @@ jobs:

steps:
- name: Download linuxgsm.sh
run: wget https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/${GITHUB_REF#refs/heads/}/linuxgsm.sh; chmod +x linuxgsm.sh
run: wget "https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/${GITHUB_REF#refs/heads/}/linuxgsm.sh"; chmod +x linuxgsm.sh

- name: Install dependencies
run: sudo apt-get install libxml2-utils jq
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/git-sync.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ on:
- master
- develop

permissions: {}

jobs:
gitHub-to-bitbucket:
if: github.repository_owner == 'GameServerManagers'
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/potential-duplicates.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ on:
issues:
types:
- opened

permissions:
issues: write

jobs:
potential-duplicates:
if: github.repository_owner == 'GameServerManagers'
Expand Down
12 changes: 8 additions & 4 deletions .github/workflows/serverlist-validate-game-icons.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

cd "${datadir}" || exit

exitcode=0

echo ""
echo "Checking that all the game servers listed in serverlist.csv have a shortname-icon.png file"
for shortname in $(tail -n +2 serverlist.csv | cut -d ',' -f1); do
Expand All @@ -16,9 +18,11 @@ done

echo ""
echo "Checking if an unexpected gameicon exists"
for gameicon in $(ls -1 gameicons); do
shopt -s nullglob
for gameiconpath in gameicons/*; do
gameicon="$(basename "${gameiconpath}")"
# check if $gameicon is in serverlist.csv
if ! grep -q "${gameicon%-icon.png}" serverlist.csv; then
if ! grep -q -F "${gameicon%-icon.png}" serverlist.csv; then
echo "ERROR: gameicon ${gameicon} is not in serverlist.csv"
exitcode=1
else
Expand All @@ -28,7 +32,7 @@ done

echo ""
echo "Checking that the number of gameicons matches the number of servers in serverlist.csv"
gameiconcount="$(ls -1 gameicons | wc -l)"
gameiconcount="$(find gameicons -mindepth 1 -maxdepth 1 -type f | wc -l)"
serverlistcount="$(tail -n +2 serverlist.csv | wc -l)"
if [ "${gameiconcount}" -ne "${serverlistcount}" ]; then
echo "ERROR: game icons (${gameiconcount}) does not match serverlist.csv ($serverlistcount)"
Expand All @@ -37,4 +41,4 @@ else
echo "OK: gameiconcount ($gameiconcount) matches serverlistcount ($serverlistcount)"
fi

exit ${exitcode}
exit "${exitcode}"
9 changes: 6 additions & 3 deletions .github/workflows/serverlist-validate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@ echo "Checking that all the game servers are listed in all csv files"
echo "this check will ensure serverlist.csv has the same number of lines (-2 lines) as the other csv files"
# count the number of lines in the serverlist.csv
cd "${datadir}" || exit

exitcode=0
serverlistcount="$(tail -n +2 serverlist.csv | wc -l)"
echo "serverlistcount: $serverlistcount"
# get list of all csv files starting with ubunutu debian centos
csvlist="$(ls -1 | grep -E '^(ubuntu|debian|centos|rhel|almalinux|rocky).*\.csv$')"
shopt -s nullglob
csvlist=(ubuntu*.csv debian*.csv centos*.csv rhel*.csv almalinux*.csv rocky*.csv)
# loop though each csv file and make sure the number of lines is the same as the serverlistcount
for csv in $csvlist; do
for csv in "${csvlist[@]}"; do
csvcount="$(wc -l < "${csv}")"
csvcount=$((csvcount - 2))
if [ "$csvcount" -ne "$serverlistcount" ]; then
Expand All @@ -35,4 +38,4 @@ for shortname in $(tail -n +2 serverlist.csv | cut -d ',' -f1); do
fi
done

exit ${exitcode}
exit "${exitcode}"
3 changes: 3 additions & 0 deletions .github/workflows/serverlist-validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ on:
workflow_dispatch:
push:

permissions:
contents: read

jobs:
serverlist-validate:
if: github.repository_owner == 'GameServerManagers'
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/trigger-docker-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ on:
types:
- published

permissions: {}

jobs:
trigger_build_docker-linuxgsm:
if: github.repository_owner == 'GameServerManagers'
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/update-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ on:
branches:
- develop

permissions: {}

concurrency:
group: update-check-${{ github.ref_name }}
cancel-in-progress: true
Expand All @@ -22,7 +24,7 @@ jobs:

steps:
- name: Download linuxgsm.sh
run: wget https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/${GITHUB_REF#refs/heads/}/linuxgsm.sh; chmod +x linuxgsm.sh
run: wget "https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/${GITHUB_REF#refs/heads/}/linuxgsm.sh"; chmod +x linuxgsm.sh

- name: Install dependencies
run: sudo dpkg --add-architecture i386; sudo apt-get update;
Expand Down
Loading