repofail 0.2.4__tar.gz → 0.2.5__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.
- {repofail-0.2.4 → repofail-0.2.5}/Formula/repofail.rb +2 -1
- {repofail-0.2.4 → repofail-0.2.5}/PKG-INFO +8 -7
- {repofail-0.2.4 → repofail-0.2.5}/README.md +6 -6
- {repofail-0.2.4 → repofail-0.2.5}/pyproject.toml +2 -1
- repofail-0.2.4/.github/actions/repofail/README.md +0 -45
- repofail-0.2.4/.github/actions/repofail/action.yml +0 -73
- repofail-0.2.4/docs/QUICKSTART.md +0 -42
- repofail-0.2.4/homebrew-tap/Formula/repofail.rb +0 -66
- repofail-0.2.4/install.sh +0 -21
- {repofail-0.2.4 → repofail-0.2.5}/.github/workflows/publish.yml +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/.github/workflows/repofail.yml +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/.gitignore +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/CONTRIBUTING.md +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/RULES.md +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/contract.json +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/docs/assets/demo-autogpt.png +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/docs/assets/repofail-logo.png +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/docs/logo.png +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/docs/screenshots/high_failure.png +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/docs/screenshots/nodefail.gif +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/__init__.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/cli.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/contract.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/engine.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/fleet.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/format.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/models.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/risk.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/__init__.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/abi_wheel_mismatch.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/apple_silicon.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/base.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/docker_only.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/gpu_memory.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/info_signals.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/lock_file_missing.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/ml_niche.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/native_toolchain.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/node_engine.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/node_eol.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/node_windows.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/port_collision.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/python_eol.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/python_version.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/registry.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/spec_drift.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/system_libs.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/torch_cuda.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/rules/yaml_loader.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/scanner/__init__.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/scanner/ast_scan.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/scanner/host.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/scanner/parsers.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/scanner/repo.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/repofail/telemetry.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/tests/__init__.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/tests/test_cli_stage2.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/tests/test_contract.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/tests/test_fleet.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/tests/test_integration.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/tests/test_ml_rules.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/tests/test_rules.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/tests/test_scanner.py +0 -0
- {repofail-0.2.4 → repofail-0.2.5}/tests/test_telemetry.py +0 -0
|
@@ -12,7 +12,8 @@ class Repofail < Formula
|
|
|
12
12
|
|
|
13
13
|
desc "Deterministic runtime compatibility analyzer"
|
|
14
14
|
homepage "https://github.com/jayvenn21/repofail"
|
|
15
|
-
url "https://github.com/jayvenn21/repofail/archive/refs/tags/v0.2.
|
|
15
|
+
url "https://github.com/jayvenn21/repofail/archive/refs/tags/v0.2.5.tar.gz"
|
|
16
|
+
# Replace with v0.2.5 tarball SHA after tagging: curl -sL https://github.com/jayvenn21/repofail/archive/refs/tags/v0.2.5.tar.gz | shasum -a 256
|
|
16
17
|
sha256 "d5558cd419c8d46bdc958064cb97f963d1ea793866414c025906ec15033512ed"
|
|
17
18
|
license "MIT"
|
|
18
19
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: repofail
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.5
|
|
4
4
|
Summary: Predict why a repository will fail on your machine before you run it.
|
|
5
5
|
Author: Jayanth
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -8,6 +8,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
8
8
|
Classifier: Programming Language :: Python :: 3.11
|
|
9
9
|
Classifier: Programming Language :: Python :: 3.12
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.13
|
|
11
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
11
12
|
Requires-Python: >=3.10
|
|
12
13
|
Requires-Dist: pyyaml>=6.0
|
|
13
14
|
Requires-Dist: tomli>=2.0; python_version < '3.11'
|
|
@@ -27,12 +28,12 @@ Description-Content-Type: text/markdown
|
|
|
27
28
|
</p>
|
|
28
29
|
|
|
29
30
|
<p align="center">
|
|
30
|
-
<a href="https://pypi.org/project/repofail/"><img src="https://img.shields.io/pypi/v/repofail
|
|
31
|
-
<img src="https://img.shields.io/pypi/pyversions/repofail" alt="Python">
|
|
32
|
-
<img src="https://img.shields.io/pypi/dm/repofail" alt="Downloads">
|
|
33
|
-
<img src="https://img.shields.io/
|
|
34
|
-
<img src="https://img.shields.io/badge/runtime-validated-
|
|
35
|
-
<img src="https://img.shields.io/badge/rules-20
|
|
31
|
+
<a href="https://pypi.org/project/repofail/"><img src="https://img.shields.io/pypi/v/repofail" alt="PyPI"></a>
|
|
32
|
+
<a href="https://pypi.org/project/repofail/"><img src="https://img.shields.io/pypi/pyversions/repofail" alt="Python"></a>
|
|
33
|
+
<a href="https://pypi.org/project/repofail/"><img src="https://img.shields.io/pypi/dm/repofail" alt="Downloads"></a>
|
|
34
|
+
<a href="https://github.com/jayvenn21/repofail/actions"><img src="https://img.shields.io/github/actions/workflow/status/jayvenn21/repofail/repofail.yml?branch=main" alt="CI"></a>
|
|
35
|
+
<img src="https://img.shields.io/badge/runtime-validated-brightgreen" alt="Runtime">
|
|
36
|
+
<img src="https://img.shields.io/badge/rules-20%2B-blue" alt="Rules">
|
|
36
37
|
</p>
|
|
37
38
|
|
|
38
39
|
<p align="center">
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
12
|
-
<a href="https://pypi.org/project/repofail/"><img src="https://img.shields.io/pypi/v/repofail
|
|
13
|
-
<img src="https://img.shields.io/pypi/pyversions/repofail" alt="Python">
|
|
14
|
-
<img src="https://img.shields.io/pypi/dm/repofail" alt="Downloads">
|
|
15
|
-
<img src="https://img.shields.io/
|
|
16
|
-
<img src="https://img.shields.io/badge/runtime-validated-
|
|
17
|
-
<img src="https://img.shields.io/badge/rules-20
|
|
12
|
+
<a href="https://pypi.org/project/repofail/"><img src="https://img.shields.io/pypi/v/repofail" alt="PyPI"></a>
|
|
13
|
+
<a href="https://pypi.org/project/repofail/"><img src="https://img.shields.io/pypi/pyversions/repofail" alt="Python"></a>
|
|
14
|
+
<a href="https://pypi.org/project/repofail/"><img src="https://img.shields.io/pypi/dm/repofail" alt="Downloads"></a>
|
|
15
|
+
<a href="https://github.com/jayvenn21/repofail/actions"><img src="https://img.shields.io/github/actions/workflow/status/jayvenn21/repofail/repofail.yml?branch=main" alt="CI"></a>
|
|
16
|
+
<img src="https://img.shields.io/badge/runtime-validated-brightgreen" alt="Runtime">
|
|
17
|
+
<img src="https://img.shields.io/badge/rules-20%2B-blue" alt="Rules">
|
|
18
18
|
</p>
|
|
19
19
|
|
|
20
20
|
<p align="center">
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "repofail"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.5"
|
|
8
8
|
description = "Predict why a repository will fail on your machine before you run it."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -20,6 +20,7 @@ classifiers = [
|
|
|
20
20
|
"Programming Language :: Python :: 3.11",
|
|
21
21
|
"Programming Language :: Python :: 3.12",
|
|
22
22
|
"Programming Language :: Python :: 3.13",
|
|
23
|
+
"Programming Language :: Python :: Implementation :: CPython",
|
|
23
24
|
]
|
|
24
25
|
|
|
25
26
|
[project.scripts]
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# repofail GitHub Action
|
|
2
|
-
|
|
3
|
-
Run repofail on every PR: get a Markdown report as a comment and fail CI when compatibility violations exceed the threshold.
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
In your repo, create `.github/workflows/repofail.yml`:
|
|
8
|
-
|
|
9
|
-
```yaml
|
|
10
|
-
name: repofail
|
|
11
|
-
on:
|
|
12
|
-
pull_request:
|
|
13
|
-
branches: [main, master]
|
|
14
|
-
jobs:
|
|
15
|
-
check:
|
|
16
|
-
runs-on: ubuntu-latest
|
|
17
|
-
steps:
|
|
18
|
-
- uses: actions/checkout@v4
|
|
19
|
-
- uses: jayvenn21/repofail/.github/actions/repofail@main
|
|
20
|
-
with:
|
|
21
|
-
path: .
|
|
22
|
-
fail_on: HIGH
|
|
23
|
-
comment: 'true'
|
|
24
|
-
upload_artifact: 'true'
|
|
25
|
-
pr_number: ${{ github.event.pull_request.number }}
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Inputs
|
|
29
|
-
|
|
30
|
-
| Input | Default | Description |
|
|
31
|
-
|-------|---------|-------------|
|
|
32
|
-
| `path` | `.` | Repository path to scan |
|
|
33
|
-
| `fail_on` | `HIGH` | Fail CI when severity is HIGH, MEDIUM, or LOW |
|
|
34
|
-
| `comment` | `true` | Comment on PR with Markdown report |
|
|
35
|
-
| `upload_artifact` | `true` | Upload JSON report as workflow artifact |
|
|
36
|
-
| `pr_number` | (empty) | Set to `${{ github.event.pull_request.number }}` for PR comments |
|
|
37
|
-
|
|
38
|
-
## Behavior
|
|
39
|
-
|
|
40
|
-
1. Installs repofail from PyPI
|
|
41
|
-
2. Runs `repofail -m` and saves the report
|
|
42
|
-
3. Runs `repofail -j` for machine-readable output
|
|
43
|
-
4. Comments on the PR with the Markdown report (if `comment: true` and `pr_number` set)
|
|
44
|
-
5. Uploads `repofail.json` as an artifact (if `upload_artifact: true`)
|
|
45
|
-
6. Runs `repofail --ci` and fails the job if violations meet or exceed `fail_on`
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
name: repofail
|
|
2
|
-
description: Deterministic runtime compatibility check — fail CI or comment on PR with report
|
|
3
|
-
inputs:
|
|
4
|
-
path:
|
|
5
|
-
description: Repository path to scan (default .)
|
|
6
|
-
required: false
|
|
7
|
-
default: .
|
|
8
|
-
fail_on:
|
|
9
|
-
description: Severity threshold to fail CI (HIGH, MEDIUM, LOW)
|
|
10
|
-
required: false
|
|
11
|
-
default: HIGH
|
|
12
|
-
comment:
|
|
13
|
-
description: Comment on PR with Markdown report
|
|
14
|
-
required: false
|
|
15
|
-
default: 'true'
|
|
16
|
-
upload_artifact:
|
|
17
|
-
description: Upload JSON report as artifact
|
|
18
|
-
required: false
|
|
19
|
-
default: 'true'
|
|
20
|
-
pr_number:
|
|
21
|
-
description: Pull request number (for commenting). Set to ${{ github.event.pull_request.number }}
|
|
22
|
-
required: false
|
|
23
|
-
default: ''
|
|
24
|
-
outputs:
|
|
25
|
-
markdown_file:
|
|
26
|
-
description: Path to Markdown report file (repofail-report.md)
|
|
27
|
-
runs:
|
|
28
|
-
using: composite
|
|
29
|
-
steps:
|
|
30
|
-
- name: Install repofail
|
|
31
|
-
shell: bash
|
|
32
|
-
run: pip install repofail
|
|
33
|
-
|
|
34
|
-
- name: Run repofail (Markdown)
|
|
35
|
-
id: md
|
|
36
|
-
shell: bash
|
|
37
|
-
run: |
|
|
38
|
-
repofail -p "${{ inputs.path }}" -m > repofail-report.md || true
|
|
39
|
-
echo "markdown_file=repofail-report.md" >> $GITHUB_OUTPUT
|
|
40
|
-
|
|
41
|
-
- name: Run repofail (JSON)
|
|
42
|
-
if: inputs.upload_artifact == 'true'
|
|
43
|
-
shell: bash
|
|
44
|
-
run: repofail -p "${{ inputs.path }}" -j > repofail.json || true
|
|
45
|
-
|
|
46
|
-
- name: Comment on PR with report
|
|
47
|
-
if: inputs.comment == 'true' && inputs.pr_number != ''
|
|
48
|
-
uses: actions/github-script@v7
|
|
49
|
-
with:
|
|
50
|
-
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
51
|
-
script: |
|
|
52
|
-
const fs = require('fs');
|
|
53
|
-
const body = fs.existsSync('repofail-report.md')
|
|
54
|
-
? fs.readFileSync('repofail-report.md', 'utf8')
|
|
55
|
-
: 'repofail report not available.';
|
|
56
|
-
const comment = `## repofail · compatibility report\n\n\`\`\`\n${body}\n\`\`\``;
|
|
57
|
-
await github.rest.issues.createComment({
|
|
58
|
-
issue_number: ${{ inputs.pr_number }},
|
|
59
|
-
owner: context.repo.owner,
|
|
60
|
-
repo: context.repo.repo,
|
|
61
|
-
body: comment,
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
- name: Upload repofail JSON artifact
|
|
65
|
-
if: inputs.upload_artifact == 'true' && always()
|
|
66
|
-
uses: actions/upload-artifact@v4
|
|
67
|
-
with:
|
|
68
|
-
name: repofail-report
|
|
69
|
-
path: repofail.json
|
|
70
|
-
|
|
71
|
-
- name: Run repofail (CI — fail if threshold exceeded)
|
|
72
|
-
shell: bash
|
|
73
|
-
run: repofail -p "${{ inputs.path }}" --ci --fail-on "${{ inputs.fail_on }}"
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# repofail — 30-second quickstart
|
|
2
|
-
|
|
3
|
-
## What it does
|
|
4
|
-
|
|
5
|
-
Answers one question: **Will this repository run on this machine?**
|
|
6
|
-
|
|
7
|
-
It does **not** install your project. It reads configs and your environment, then reports compatibility issues (Node version, Python range, CUDA, lock file, spec drift, etc.) with a single score and clear evidence.
|
|
8
|
-
|
|
9
|
-
## Install
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
pip install repofail
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
Or: `pipx install repofail` | [install.sh](https://raw.githubusercontent.com/jayvenn21/repofail/main/install.sh) | Homebrew (see README).
|
|
16
|
-
|
|
17
|
-
## Run
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
cd /path/to/any/repo
|
|
21
|
-
repofail
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
You get:
|
|
25
|
-
|
|
26
|
-
- A **compatibility score** (0–100%)
|
|
27
|
-
- **HARD FAILURES** (deterministic blockers) with evidence and suggested fixes
|
|
28
|
-
- Optional: **RUNTIME RISKS**, **STRUCTURAL PROFILE**
|
|
29
|
-
|
|
30
|
-
## CI
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
repofail --ci
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Exits 1 if HIGH (or configured) severity violations are found. Use in GitHub Actions or any CI.
|
|
37
|
-
|
|
38
|
-
## Next
|
|
39
|
-
|
|
40
|
-
- `repofail -e list` — list all rules
|
|
41
|
-
- `repofail -e spec_drift` — explain a rule
|
|
42
|
-
- [README](https://github.com/jayvenn21/repofail#readme) — full docs, FAQ, when not to use
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
# Homebrew formula for repofail
|
|
2
|
-
# To use: copy to your tap repo (e.g. homebrew-tap/Formula/repofail.rb)
|
|
3
|
-
# Then: brew tap jayvenn21/tap && brew install jayvenn21/tap/repofail
|
|
4
|
-
#
|
|
5
|
-
# Homebrew uses --no-deps when installing the main package, so all Python
|
|
6
|
-
# dependencies must be declared as resources below.
|
|
7
|
-
# If SHA256 fails after pushing a new tag, get the correct hash with:
|
|
8
|
-
# curl -sL https://github.com/jayvenn21/repofail/archive/refs/tags/vX.Y.Z.tar.gz | shasum -a 256
|
|
9
|
-
|
|
10
|
-
class Repofail < Formula
|
|
11
|
-
include Language::Python::Virtualenv
|
|
12
|
-
|
|
13
|
-
desc "Deterministic runtime compatibility analyzer"
|
|
14
|
-
homepage "https://github.com/jayvenn21/repofail"
|
|
15
|
-
url "https://github.com/jayvenn21/repofail/archive/refs/tags/v0.2.4.tar.gz"
|
|
16
|
-
sha256 "d5558cd419c8d46bdc958064cb97f963d1ea793866414c025906ec15033512ed"
|
|
17
|
-
license "MIT"
|
|
18
|
-
|
|
19
|
-
# App supports Python 3.10+. We use 3.12 for current Homebrew; change to
|
|
20
|
-
# python@3.10 or python@3.11 if you need an older interpreter.
|
|
21
|
-
depends_on "libyaml"
|
|
22
|
-
depends_on "python@3.12"
|
|
23
|
-
|
|
24
|
-
resource "click" do
|
|
25
|
-
url "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz"
|
|
26
|
-
sha256 "12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a"
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
resource "typer" do
|
|
30
|
-
url "https://files.pythonhosted.org/packages/ac/0a/d55af35db5f50f486e3eda0ada747eed773859e2699d3ce570b682a9b70a/typer-0.12.3.tar.gz"
|
|
31
|
-
sha256 "49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482"
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
resource "rich" do
|
|
35
|
-
url "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz"
|
|
36
|
-
sha256 "439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098"
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
resource "shellingham" do
|
|
40
|
-
url "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz"
|
|
41
|
-
sha256 "8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
resource "typing-extensions" do
|
|
45
|
-
url "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz"
|
|
46
|
-
sha256 "1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
resource "tomli" do
|
|
50
|
-
url "https://files.pythonhosted.org/packages/35/b9/de2a5c0144d7d75a57ff355c0c24054f965b2dc3036456ae03a51ea6264b/tomli-2.0.2.tar.gz"
|
|
51
|
-
sha256 "d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
resource "pyyaml" do
|
|
55
|
-
url "https://github.com/yaml/pyyaml/archive/refs/tags/6.0.1.tar.gz"
|
|
56
|
-
sha256 "57314c984aaa84318eed00cf5a8365afc49f87954969e295efe2ba99f3b21f7a"
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def install
|
|
60
|
-
virtualenv_install_with_resources
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
test do
|
|
64
|
-
assert_match "repofail", shell_output("#{bin}/repofail --help", 0)
|
|
65
|
-
end
|
|
66
|
-
end
|
repofail-0.2.4/install.sh
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Install repofail — deterministic runtime compatibility analyzer
|
|
3
|
-
# Usage: curl -sSL https://raw.githubusercontent.com/jayvenn21/repofail/main/install.sh | bash
|
|
4
|
-
|
|
5
|
-
set -e
|
|
6
|
-
|
|
7
|
-
if command -v pipx &>/dev/null; then
|
|
8
|
-
echo "Installing repofail via pipx (isolated)..."
|
|
9
|
-
pipx install repofail
|
|
10
|
-
elif command -v pip3 &>/dev/null; then
|
|
11
|
-
echo "Installing repofail via pip..."
|
|
12
|
-
pip3 install repofail
|
|
13
|
-
elif command -v pip &>/dev/null; then
|
|
14
|
-
echo "Installing repofail via pip..."
|
|
15
|
-
pip install repofail
|
|
16
|
-
else
|
|
17
|
-
echo "Error: need pip or pipx. Install Python 3.10+ and run: pip install repofail"
|
|
18
|
-
exit 1
|
|
19
|
-
fi
|
|
20
|
-
|
|
21
|
-
echo "Done. Run: repofail --help"
|
|
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
|
|
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
|
|
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
|