opsscript-gate 0.6.0__tar.gz → 0.6.1__tar.gz
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.
- opsscript_gate-0.6.1/.github/workflow-templates/opsscript-gate.yml +41 -0
- opsscript_gate-0.6.1/.github/workflow-templates/properties.json +6 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/CHANGELOG.md +11 -0
- opsscript_gate-0.6.1/CITATION.cff +12 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/PKG-INFO +12 -3
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/README.md +8 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/ROADMAP.md +8 -1
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/pyproject.toml +9 -2
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/src/opsscript_gate/__init__.py +1 -1
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/.gitattributes +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/.github/ISSUE_TEMPLATE/distro_request.yml +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/.github/assets/social-preview.png +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/.github/pull_request_template.md +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/.github/workflows/demo.yml +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/.github/workflows/release.yml +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/.github/workflows/test.yml +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/.gitignore +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/CONTRIBUTING.md +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/LICENSE +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/README.zh-CN.md +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/SECURITY.md +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/action.yml +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/docs/configuration.md +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/docs/gpt-oss.md +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/docs/troubleshooting.md +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/examples/alpine-incompatibility/README.md +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/examples/alpine-incompatibility/apt_dependency.sh +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/examples/basic/README.md +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/examples/basic/clean_setup.sh +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/examples/github-actions/README.md +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/examples/github-actions/workflow.yml +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/examples/interactive-hang/README.md +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/examples/interactive-hang/prompt_confirm.sh +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/src/opsscript_gate/cli.py +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/src/opsscript_gate/config.py +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/src/opsscript_gate/discovery.py +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/src/opsscript_gate/models.py +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/src/opsscript_gate/remediation.py +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/src/opsscript_gate/reporter.py +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/src/opsscript_gate/runner.py +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/tests/fixtures/fail_deps.sh +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/tests/fixtures/fail_hang.sh +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/tests/fixtures/pass_basic.sh +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/tests/test_action_contract.py +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/tests/test_onboarding.py +0 -0
- {opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/tests/test_runner.py +0 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: Shell compatibility
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
paths:
|
|
6
|
+
- '**/*.sh'
|
|
7
|
+
- '**/*.bash'
|
|
8
|
+
push:
|
|
9
|
+
branches: [main]
|
|
10
|
+
paths:
|
|
11
|
+
- '**/*.sh'
|
|
12
|
+
- '**/*.bash'
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
shell-compatibility:
|
|
19
|
+
name: Debian, Ubuntu and Alpine
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- name: Checkout
|
|
23
|
+
uses: actions/checkout@v4
|
|
24
|
+
with:
|
|
25
|
+
persist-credentials: false
|
|
26
|
+
|
|
27
|
+
- name: Run OpsScript Gate
|
|
28
|
+
uses: Mresyzz/opsscript-gate@v0.6.0
|
|
29
|
+
with:
|
|
30
|
+
shell: auto
|
|
31
|
+
network: none
|
|
32
|
+
format: markdown
|
|
33
|
+
output: reports/opsscript-gate.md
|
|
34
|
+
|
|
35
|
+
- name: Upload compatibility report
|
|
36
|
+
if: always()
|
|
37
|
+
uses: actions/upload-artifact@v4
|
|
38
|
+
with:
|
|
39
|
+
name: opsscript-gate-report
|
|
40
|
+
path: reports/opsscript-gate.md
|
|
41
|
+
if-no-files-found: ignore
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.6.1] - 2026-10-01
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- Added a zero-configuration GitHub workflow starter that runs only when shell files change.
|
|
7
|
+
- Added a copyable compatibility report artifact to the starter workflow.
|
|
8
|
+
- Added citation metadata and clearer PyPI keywords for installer and bootstrap use cases.
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- Marked the project Beta now that the default matrix, safety controls, reports, presets, and changed-script mode are released.
|
|
12
|
+
- Updated the roadmap to show the v0.5 and v0.6 controls as delivered.
|
|
13
|
+
|
|
3
14
|
## [0.6.0] - 2026-09-30
|
|
4
15
|
|
|
5
16
|
### Added
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
title: OpsScript Gate
|
|
3
|
+
message: If this project helps your shell compatibility testing, please cite it.
|
|
4
|
+
type: software
|
|
5
|
+
authors:
|
|
6
|
+
- family-names: Mresyzz
|
|
7
|
+
given-names: Mresy
|
|
8
|
+
version: 0.6.0
|
|
9
|
+
date-released: 2026-09-30
|
|
10
|
+
repository-code: https://github.com/Mresyzz/opsscript-gate
|
|
11
|
+
url: https://github.com/Mresyzz/opsscript-gate
|
|
12
|
+
license: MIT
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: opsscript-gate
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.1
|
|
4
4
|
Summary: Run Linux shell scripts in Debian, Ubuntu and Alpine containers to catch runtime compatibility failures before merge
|
|
5
5
|
Project-URL: Homepage, https://github.com/Mresyzz/opsscript-gate
|
|
6
6
|
Project-URL: Repository, https://github.com/Mresyzz/opsscript-gate
|
|
7
7
|
Project-URL: Issues, https://github.com/Mresyzz/opsscript-gate/issues
|
|
8
8
|
Project-URL: Changelog, https://github.com/Mresyzz/opsscript-gate/blob/main/CHANGELOG.md
|
|
9
|
+
Project-URL: Documentation, https://github.com/Mresyzz/opsscript-gate/tree/main/docs
|
|
9
10
|
Author: Mresyzz
|
|
10
11
|
License: MIT
|
|
11
12
|
License-File: LICENSE
|
|
12
|
-
Keywords: ci,compatibility,cross-distro,devops,docker,github-actions,linux,posix,shell,testing
|
|
13
|
-
Classifier: Development Status ::
|
|
13
|
+
Keywords: alpine,bootstrap,ci,compatibility,cross-distro,debian,devops,docker,github-actions,installer,linux,posix,shell,shellcheck-alternative,testing,ubuntu
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
15
|
Classifier: Intended Audience :: Developers
|
|
15
16
|
Classifier: Intended Audience :: System Administrators
|
|
16
17
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -45,6 +46,11 @@ Description-Content-Type: text/markdown
|
|
|
45
46
|
|
|
46
47
|
It is designed for shell testing, portable shell validation, Bash/POSIX compatibility checks, and cross-distro CI where syntax-only tooling is not enough.
|
|
47
48
|
|
|
49
|
+
If your repository contains an installer, bootstrap script, or shell entrypoint, the fastest path is to
|
|
50
|
+
copy the [zero-configuration workflow](.github/workflow-templates/opsscript-gate.yml). It only runs when
|
|
51
|
+
shell files change, uses offline containers by default, and uploads a report that can be attached to a PR.
|
|
52
|
+
No account, API key, or service signup is required.
|
|
53
|
+
|
|
48
54
|
---
|
|
49
55
|
|
|
50
56
|
## Current release: v0.6.0
|
|
@@ -75,6 +81,9 @@ See [configuration and migration](docs/configuration.md) and
|
|
|
75
81
|
|
|
76
82
|
Add this workflow to `.github/workflows/shell-compat.yml`:
|
|
77
83
|
|
|
84
|
+
You can also select **OpsScript Gate shell compatibility** from GitHub's workflow templates, or copy the
|
|
85
|
+
maintained [starter workflow](.github/workflow-templates/opsscript-gate.yml).
|
|
86
|
+
|
|
78
87
|
You can copy the maintained example from [`examples/github-actions/workflow.yml`](examples/github-actions/workflow.yml)
|
|
79
88
|
and change the `script-path`, or use the minimal workflow below.
|
|
80
89
|
|
|
@@ -17,6 +17,11 @@
|
|
|
17
17
|
|
|
18
18
|
It is designed for shell testing, portable shell validation, Bash/POSIX compatibility checks, and cross-distro CI where syntax-only tooling is not enough.
|
|
19
19
|
|
|
20
|
+
If your repository contains an installer, bootstrap script, or shell entrypoint, the fastest path is to
|
|
21
|
+
copy the [zero-configuration workflow](.github/workflow-templates/opsscript-gate.yml). It only runs when
|
|
22
|
+
shell files change, uses offline containers by default, and uploads a report that can be attached to a PR.
|
|
23
|
+
No account, API key, or service signup is required.
|
|
24
|
+
|
|
20
25
|
---
|
|
21
26
|
|
|
22
27
|
## Current release: v0.6.0
|
|
@@ -47,6 +52,9 @@ See [configuration and migration](docs/configuration.md) and
|
|
|
47
52
|
|
|
48
53
|
Add this workflow to `.github/workflows/shell-compat.yml`:
|
|
49
54
|
|
|
55
|
+
You can also select **OpsScript Gate shell compatibility** from GitHub's workflow templates, or copy the
|
|
56
|
+
maintained [starter workflow](.github/workflow-templates/opsscript-gate.yml).
|
|
57
|
+
|
|
50
58
|
You can copy the maintained example from [`examples/github-actions/workflow.yml`](examples/github-actions/workflow.yml)
|
|
51
59
|
and change the `script-path`, or use the minimal workflow below.
|
|
52
60
|
|
|
@@ -25,7 +25,14 @@ This roadmap tracks features delivered in recent releases and areas under consid
|
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
-
##
|
|
28
|
+
## Delivered in v0.5.0 and v0.6.0
|
|
29
|
+
|
|
30
|
+
- [x] Project configuration with strict validation and CLI/Action precedence.
|
|
31
|
+
- [x] Dry-run plans, `minimal` and `ubuntu` presets, exclusions, and saved reports.
|
|
32
|
+
- [x] Bounded discovery with symlink and oversized-file protection.
|
|
33
|
+
- [x] Changed-script selection with `--changed-since` for pull requests.
|
|
34
|
+
|
|
35
|
+
## Planned for Future Releases
|
|
29
36
|
|
|
30
37
|
### 1. Matrix & Distribution Presets
|
|
31
38
|
- [ ] **RPM-based distributions**: Evaluate support for Enterprise Linux baselines (e.g. Rocky Linux 9, AlmaLinux, Fedora).
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "opsscript-gate"
|
|
7
|
-
version = "0.6.
|
|
7
|
+
version = "0.6.1"
|
|
8
8
|
description = "Run Linux shell scripts in Debian, Ubuntu and Alpine containers to catch runtime compatibility failures before merge"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
@@ -23,9 +23,15 @@ keywords = [
|
|
|
23
23
|
"cross-distro",
|
|
24
24
|
"posix",
|
|
25
25
|
"testing",
|
|
26
|
+
"installer",
|
|
27
|
+
"bootstrap",
|
|
28
|
+
"debian",
|
|
29
|
+
"ubuntu",
|
|
30
|
+
"alpine",
|
|
31
|
+
"shellcheck-alternative",
|
|
26
32
|
]
|
|
27
33
|
classifiers = [
|
|
28
|
-
"Development Status ::
|
|
34
|
+
"Development Status :: 4 - Beta",
|
|
29
35
|
"Intended Audience :: Developers",
|
|
30
36
|
"Intended Audience :: System Administrators",
|
|
31
37
|
"License :: OSI Approved :: MIT License",
|
|
@@ -45,6 +51,7 @@ Homepage = "https://github.com/Mresyzz/opsscript-gate"
|
|
|
45
51
|
Repository = "https://github.com/Mresyzz/opsscript-gate"
|
|
46
52
|
Issues = "https://github.com/Mresyzz/opsscript-gate/issues"
|
|
47
53
|
Changelog = "https://github.com/Mresyzz/opsscript-gate/blob/main/CHANGELOG.md"
|
|
54
|
+
Documentation = "https://github.com/Mresyzz/opsscript-gate/tree/main/docs"
|
|
48
55
|
|
|
49
56
|
[project.optional-dependencies]
|
|
50
57
|
test = [
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opsscript_gate-0.6.0 → opsscript_gate-0.6.1}/examples/alpine-incompatibility/apt_dependency.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|