From a4c9636eb2389b512c2b6e2a67df453ab0b43772 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Fri, 15 Aug 2025 00:37:08 +0100 Subject: [PATCH] Auto stash before merge of "main" and "origin/main" --- .gitignore | 212 ++++++++++++++++++++++++++++++++++++++++++++++ README.md | 152 ++++++++++++++++++++++++++++----- package-lock.json | 77 +++++++++++++++++ package.json | 24 ++++++ 4 files changed, 442 insertions(+), 23 deletions(-) create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore index 8bffd3f..55de554 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,218 @@ !.vscode/*.code-snippets .history/ *.vsix +node_modules/.package-lock.json +node_modules/.bin/prettier +node_modules/@reteps/dockerfmt/package.json +node_modules/@reteps/dockerfmt/README.md +node_modules/@reteps/dockerfmt/dist/format.d.ts +node_modules/@reteps/dockerfmt/dist/format.js +node_modules/@reteps/dockerfmt/dist/format.wasm +node_modules/@reteps/dockerfmt/dist/node.d.ts +node_modules/@reteps/dockerfmt/dist/node.js +node_modules/@reteps/dockerfmt/dist/wasm_exec.js +node_modules/prettier/doc.d.ts +node_modules/prettier/doc.js +node_modules/prettier/doc.mjs +node_modules/prettier/index.cjs +node_modules/prettier/index.d.ts +node_modules/prettier/index.mjs +node_modules/prettier/LICENSE +node_modules/prettier/package.json +node_modules/prettier/README.md +node_modules/prettier/standalone.d.ts +node_modules/prettier/standalone.js +node_modules/prettier/standalone.mjs +node_modules/prettier/THIRD-PARTY-NOTICES.md +node_modules/prettier/bin/prettier.cjs +node_modules/prettier/internal/experimental-cli-worker.mjs +node_modules/prettier/internal/experimental-cli.mjs +node_modules/prettier/internal/legacy-cli.mjs +node_modules/prettier/plugins/acorn.d.ts +node_modules/prettier/plugins/acorn.js +node_modules/prettier/plugins/acorn.mjs +node_modules/prettier/plugins/angular.d.ts +node_modules/prettier/plugins/angular.js +node_modules/prettier/plugins/angular.mjs +node_modules/prettier/plugins/babel.d.ts +node_modules/prettier/plugins/babel.js +node_modules/prettier/plugins/babel.mjs +node_modules/prettier/plugins/estree.d.ts +node_modules/prettier/plugins/estree.js +node_modules/prettier/plugins/estree.mjs +node_modules/prettier/plugins/flow.d.ts +node_modules/prettier/plugins/flow.js +node_modules/prettier/plugins/flow.mjs +node_modules/prettier/plugins/glimmer.d.ts +node_modules/prettier/plugins/glimmer.js +node_modules/prettier/plugins/glimmer.mjs +node_modules/prettier/plugins/graphql.d.ts +node_modules/prettier/plugins/graphql.js +node_modules/prettier/plugins/graphql.mjs +node_modules/prettier/plugins/html.d.ts +node_modules/prettier/plugins/html.js +node_modules/prettier/plugins/html.mjs +node_modules/prettier/plugins/markdown.d.ts +node_modules/prettier/plugins/markdown.js +node_modules/prettier/plugins/markdown.mjs +node_modules/prettier/plugins/meriyah.d.ts +node_modules/prettier/plugins/meriyah.js +node_modules/prettier/plugins/meriyah.mjs +node_modules/prettier/plugins/postcss.d.ts +node_modules/prettier/plugins/postcss.js +node_modules/prettier/plugins/postcss.mjs +node_modules/prettier/plugins/typescript.d.ts +node_modules/prettier/plugins/typescript.js +node_modules/prettier/plugins/typescript.mjs +node_modules/prettier/plugins/yaml.d.ts +node_modules/prettier/plugins/yaml.js +node_modules/prettier/plugins/yaml.mjs +node_modules/prettier-plugin-jinja-template/.prettierignore +node_modules/prettier-plugin-jinja-template/.prettierrc +node_modules/prettier-plugin-jinja-template/babel.config.js +node_modules/prettier-plugin-jinja-template/jest.config.js +node_modules/prettier-plugin-jinja-template/LICENSE +node_modules/prettier-plugin-jinja-template/package.json +node_modules/prettier-plugin-jinja-template/README.md +node_modules/prettier-plugin-jinja-template/tsconfig.json +node_modules/prettier-plugin-jinja-template/.github/workflows/node.js.yml +node_modules/prettier-plugin-jinja-template/lib/index.d.ts +node_modules/prettier-plugin-jinja-template/lib/index.js +node_modules/prettier-plugin-jinja-template/lib/jinja.d.ts +node_modules/prettier-plugin-jinja-template/lib/jinja.js +node_modules/prettier-plugin-jinja-template/lib/parser.d.ts +node_modules/prettier-plugin-jinja-template/lib/parser.js +node_modules/prettier-plugin-jinja-template/lib/printer.d.ts +node_modules/prettier-plugin-jinja-template/lib/printer.js +node_modules/prettier-plugin-jinja-template/lib/regex.d.ts +node_modules/prettier-plugin-jinja-template/lib/regex.js +node_modules/prettier-plugin-jinja-template/src/index.ts +node_modules/prettier-plugin-jinja-template/src/jinja.ts +node_modules/prettier-plugin-jinja-template/src/parser.ts +node_modules/prettier-plugin-jinja-template/src/printer.ts +node_modules/prettier-plugin-jinja-template/src/regex_editable.ts +node_modules/prettier-plugin-jinja-template/src/regex.ts +node_modules/prettier-plugin-jinja-template/test/parser.test.ts +node_modules/prettier-plugin-jinja-template/test/plugin.test.ts +node_modules/prettier-plugin-jinja-template/test/printer.test.ts +node_modules/prettier-plugin-jinja-template/test/cases/collition/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/collition/input.html +node_modules/prettier-plugin-jinja-template/test/cases/comment/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/comment/input.html +node_modules/prettier-plugin-jinja-template/test/cases/empty/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/empty/input.html +node_modules/prettier-plugin-jinja-template/test/cases/expression/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/expression/input.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_2/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_2/input.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_as_attr/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_as_attr/input.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_empty/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_empty/input.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_escaped/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_escaped/input.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_long/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_long/input.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_multi/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_multi/input.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_multiline/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_multiline/input.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_whitespace/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/expression_whitespace/input.html +node_modules/prettier-plugin-jinja-template/test/cases/ignore/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/ignore/input.html +node_modules/prettier-plugin-jinja-template/test/cases/ignore_jinja/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/ignore_jinja/input.html +node_modules/prettier-plugin-jinja-template/test/cases/issue_25/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/issue_25/input.html +node_modules/prettier-plugin-jinja-template/test/cases/newline_between/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/newline_between/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_after_script/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_after_script/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_broken/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_broken/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_broken_2/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_broken_2/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_broken_3/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_broken_3/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_empty_block/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_empty_block/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_for_else/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_for_else/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_if_else/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_if_else/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_if_else_2/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_if_else_2/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_inline/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_inline/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_long/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_long/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_multiple/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_multiple/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_multiple_else/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_multiple_else/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_non_closing/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_non_closing/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_set/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_set/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_underscore_end/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_underscore_end/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_unknown/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_unknown/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_whitespace/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_whitespace/input.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_with/expected.html +node_modules/prettier-plugin-jinja-template/test/cases/statement_with/input.html +node_modules/prettier-plugin-sh/index.d.cts +node_modules/prettier-plugin-sh/LICENSE +node_modules/prettier-plugin-sh/package.json +node_modules/prettier-plugin-sh/README.md +node_modules/prettier-plugin-sh/lib/index.cjs +node_modules/prettier-plugin-sh/lib/index.d.ts +node_modules/prettier-plugin-sh/lib/index.js +node_modules/prettier-plugin-sh/lib/index.js.map +node_modules/prettier-plugin-sh/lib/languages.d.ts +node_modules/prettier-plugin-sh/lib/languages.js +node_modules/prettier-plugin-sh/lib/languages.js.map +node_modules/sh-syntax/LICENSE +node_modules/sh-syntax/main.wasm +node_modules/sh-syntax/package.json +node_modules/sh-syntax/README.md +node_modules/sh-syntax/lib/browser.d.ts +node_modules/sh-syntax/lib/browser.js +node_modules/sh-syntax/lib/browser.js.map +node_modules/sh-syntax/lib/index.cjs +node_modules/sh-syntax/lib/index.d.cts +node_modules/sh-syntax/lib/index.d.ts +node_modules/sh-syntax/lib/index.js +node_modules/sh-syntax/lib/index.js.map +node_modules/sh-syntax/lib/processor.d.ts +node_modules/sh-syntax/lib/processor.js +node_modules/sh-syntax/lib/processor.js.map +node_modules/sh-syntax/lib/shim.d.ts +node_modules/sh-syntax/lib/shim.js +node_modules/sh-syntax/lib/shim.js.map +node_modules/sh-syntax/lib/types.d.ts +node_modules/sh-syntax/lib/types.js +node_modules/sh-syntax/lib/types.js.map +node_modules/sh-syntax/vendors/wasm_exec.cjs +node_modules/sh-syntax/vendors/wasm_exec.d.cts +node_modules/tslib/CopyrightNotice.txt +node_modules/tslib/LICENSE.txt +node_modules/tslib/package.json +node_modules/tslib/README.md +node_modules/tslib/SECURITY.md +node_modules/tslib/tslib.d.ts +node_modules/tslib/tslib.es6.html +node_modules/tslib/tslib.es6.js +node_modules/tslib/tslib.es6.mjs +node_modules/tslib/tslib.html +node_modules/tslib/tslib.js +node_modules/tslib/modules/index.d.ts +node_modules/tslib/modules/index.js +node_modules/tslib/modules/package.json # Node.js node_modules diff --git a/README.md b/README.md index 1f96b56..4b8a0b2 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,146 @@ # SteamCMD Docker Image -

- SteamCMD -
-Docker Pulls -GitHub Workflow Status -Codacy grade -SteamCMD -MIT License

+[![SteamCMD](https://user-images.githubusercontent.com/4478206/197542699-ae13797a-78bb-4f37-81c2-d4880fd7709f.jpg)](https://developer.valvesoftware.com/wiki/SteamCMD) -## About +[![Docker Pulls](https://img.shields.io/docker/pulls/gameservermanagers/steamcmd.svg?style=flat-square&logo=docker&logoColor=white)](https://hub.docker.com/r/gameservermanagers/steamcmd) +[![Build Status](https://img.shields.io/github/actions/workflow/status/GameServerManagers/docker-steamcmd/docker-publish.yml?style=flat-square)](https://github.com/GameServerManagers/docker-steamcmd/actions) +[![Codacy grade](https://img.shields.io/codacy/grade/42d400dcdd714ae080d77fcb40d00f1c?style=flat-square&logo=codacy&logoColor=white)](https://www.codacy.com/gh/GameServerManagers/docker-steamcmd/dashboard) +[![SteamCMD Badge](https://img.shields.io/badge/SteamCMD-000000?style=flat-square&logo=Steam&logoColor=white)](https://developer.valvesoftware.com/wiki/SteamCMD) +[![MIT License](https://img.shields.io/github/license/gameservermanagers/docker-steamcmd?style=flat-square)](https://github.com/GameServerManagers/docker-steamcmd/blob/main/LICENSE) -SteamCMD is a command-line version of the Steam client. It allows you to download and install games on a headless server. This container image builds daily and is available on [Docker Hub](https://hub.docker.com/r/gameservermanagers/steamcmd) as well as [GitHub Container Registry](https://github.com/GameServerManagers/docker-steamcmd/pkgs/container/steamcmd). +> Lightweight, daily-built SteamCMD base image for game server automation. -## Tags +## Quick Start -- `latest`, `ubuntu` - Latest Ubuntu LTS release -- `ubuntu-24.04` - Ubuntu 24.04 LTS 'Noble Numbat' -- `ubuntu-22.04` - Ubuntu 22.04 LTS 'Jammy Jackalope' -- `ubuntu-20.04` - Ubuntu 20.04 LTS 'Focal Fossa' -- `ubuntu-18.04` - Ubuntu 18.04 LTS 'Bionic Beaver' +Pull the latest image and open SteamCMD interactive prompt: -## Usage +```bash +docker pull gameservermanagers/steamcmd:latest +docker run -it --rm gameservermanagers/steamcmd:latest +``` -Docker cli +Download (update) a dedicated server into the current host directory (example: CS2 / app 730): ```bash -docker run -it gameservermanagers/steamcmd:latest +docker run -it --rm \ + -v "$PWD:/data" \ + gameservermanagers/steamcmd:latest \ + +force_install_dir /data +login anonymous +app_update 730 validate +quit ``` -Download Counter Strike: Global Offensive Dedicated Server to current host directory. +Persist Steam content in a named volume: + +```bash +docker volume create steamcmd-data +docker run -it --rm -v steamcmd-data:/home/steam/Steam gameservermanagers/steamcmd:latest +login anonymous +quit +``` + +## Tags & Platforms + +| Tag(s) | Ubuntu Release | Notes | +| ------ | -------------- | ----- | +| `latest`, `ubuntu` | 24.04 LTS (Noble) | Alias to most recent LTS | +| `ubuntu-24.04` | 24.04 LTS | Current LTS | +| `ubuntu-22.04` | 22.04 LTS | Previous LTS | +| `ubuntu-20.04` | 20.04 LTS | Legacy (receives security updates) | +| `ubuntu-18.04` | 18.04 LTS | Legacy / nearing EOL upstream | + +Currently built for: `linux/amd64`. + +## Features + +- Daily scheduled build + build on Dockerfile changes +- Non-root `steam` user (security best practice) +- Minimal packages; apt caches cleaned +- HEALTHCHECK (lightweight SteamCMD invocation) +- Multi-version tag set for pinning + +## Usage Examples + +Anonymous login and quit (cache initialization): + +```bash +docker run --rm gameservermanagers/steamcmd:latest +login anonymous +quit +``` + +Install/Update Valheim dedicated server (app 896660) into a local folder: + +```bash +mkdir -p valheim && \ +docker run --rm -v "$PWD/valheim:/data" gameservermanagers/steamcmd:latest \ + +force_install_dir /data +login anonymous +app_update 896660 validate +quit +``` + +Run with a different timezone: + +```bash +docker run --rm -e TZ=UTC gameservermanagers/steamcmd:latest +login anonymous +quit +``` + +## Data Persistence + +Steam content is stored under `/home/steam/Steam` (owned by the non-root `steam` user). Mount a volume there to persist downloads across runs. ```bash -docker run -it -v $PWD:/data gameservermanagers/steamcmd:latest +force_install_dir /data +login anonymous +app_update 740 +quit +docker run -v steamcmd-data:/home/steam/Steam gameservermanagers/steamcmd:latest +login anonymous +quit ``` -## Notes +## Configuration + +Common tunables (all optional): + +| Option | How | Purpose | +| ------ | --- | ------- | +| Timezone | `-e TZ=Europe/London` | Control tzdata (if installed) | +| Working dir | `-w /home/steam` | Override working directory | +| User mapping | `--user $(id -u):$(id -g)` | Run with host UID/GID (if perms needed) | + +Steam credentials (if you need a non-anonymous app): + +```bash +docker run -it --rm gameservermanagers/steamcmd:latest +login +app_update +quit +``` + +Consider using Steam Guard / login tokens; avoid embedding secrets in shell history. Use `--env-file` for larger sets of env variables if needed. + +## Healthcheck + +The image defines a `HEALTHCHECK` that periodically performs a minimal anonymous login and metadata refresh. To disable at runtime, you can override with `--no-healthcheck` (Docker 25+) or build your own image `FROM` this one and use `HEALTHCHECK NONE`. + +## Security Notes + +- Runs as non-root `steam` +- Network access only to Steam endpoints during operations +- Keep host Docker updated; image alone does not mitigate kernel CVEs + +## Contributing + +Issues & PRs welcome. Before submitting: + +1. Run formatters: `prettier --write .` +2. Run linters: super-linter workflow (or locally with the provided dev container) +3. Keep layers minimal; squash RUN chains where reasonable + +## Related Projects + +- [LinuxGSM](https://linuxgsm.com) – Game server management +- [steamcmd/docker](https://github.com/steamcmd/docker) – Upstream reference + +## License + +MIT – see [LICENSE](./LICENSE.md). + +--- + +> Looking for additional architectures or features? Open an issue to discuss multi-arch builds or tag deprecation timelines. + +## Troubleshooting + +Empty output directory: + +- Ensure the order: `+force_install_dir` comes BEFORE `+login` (SteamCMD requirement – it warns otherwise). If reversed, files may go to the default Steam library inside the container instead of your mounted directory. +- Verify permissions: the container runs as user `steam` (UID 1000). If your host user ID differs and you see permission errors, try adding `--user $(id -u):$(id -g)` or pre-chown the host directory. +- Add `validate` only when necessary; it forces extra file checks and can slow installs. + -This container is based off of the [steamcmd](https://github.com/steamcmd/docker) container and is primarily used for [LinuxGSM](https://linuxgsm.com) game servers. +Confirm installation path by adding `+app_status ` before `+quit` to inspect state. diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9413ebf --- /dev/null +++ b/package-lock.json @@ -0,0 +1,77 @@ +{ + "name": "docker-steamcmd", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "prettier-plugin-sh": "^0.18.0" + } + }, + "node_modules/@reteps/dockerfmt": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@reteps/dockerfmt/-/dockerfmt-0.3.6.tgz", + "integrity": "sha512-Tb5wIMvBf/nLejTQ61krK644/CEMB/cpiaIFXqGApfGqO3GwcR3qnI0DbmkFVCl2OyEp8LnLX3EkucoL0+tbFg==", + "license": "MIT", + "engines": { + "node": "^v12.20.0 || ^14.13.0 || >=16.0.0" + } + }, + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "license": "MIT", + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-sh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-sh/-/prettier-plugin-sh-0.18.0.tgz", + "integrity": "sha512-cW1XL27FOJQ/qGHOW6IHwdCiNWQsAgK+feA8V6+xUTaH0cD3Mh+tFAtBvEEWvuY6hTDzRV943Fzeii+qMOh7nQ==", + "license": "MIT", + "dependencies": { + "@reteps/dockerfmt": "^0.3.6", + "sh-syntax": "^0.5.8" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + }, + "peerDependencies": { + "prettier": "^3.6.0" + } + }, + "node_modules/sh-syntax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sh-syntax/-/sh-syntax-0.5.8.tgz", + "integrity": "sha512-JfVoxf4FxQI5qpsPbkHhZo+n6N9YMJobyl4oGEUBb/31oQYlgTjkXQD8PBiafS2UbWoxrTO0Z5PJUBXEPAG1Zw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/sh-syntax" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..8555886 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "dependencies": { + "prettier-plugin-sh": "^0.18.0" + }, + "name": "docker-steamcmd", + "version": "1.0.0", + "description": "

\"SteamCMD\"
\"Docker \"GitHub \"Codacy \"SteamCMD\" \"MIT

", + "main": "index.js", + "devDependencies": {}, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/GameServerManagers/docker-steamcmd.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/GameServerManagers/docker-steamcmd/issues" + }, + "homepage": "https://github.com/GameServerManagers/docker-steamcmd#readme" +}