mirror of
https://github.com/trustedsec/hate_crack.git
synced 2026-03-12 21:23:05 -07:00
chore: remove GitHub Actions workflows
Quality checks run locally via prek pre-push hooks. CI workflows (ruff, ty, pytest, lint-infra, version-bump) are no longer needed. Updated docs to remove all GitHub Actions references.
This commit is contained in:
40
.github/workflows/lint-infra.yml
vendored
40
.github/workflows/lint-infra.yml
vendored
@@ -1,40 +0,0 @@
|
|||||||
name: lint-infra
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
pull_request:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
shellcheck:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: Run shellcheck
|
|
||||||
run: |
|
|
||||||
find . -name "*.sh" \
|
|
||||||
-not -path "./hashcat-utils/*" \
|
|
||||||
-not -path "./princeprocessor/*" \
|
|
||||||
-not -path "./omen/*" \
|
|
||||||
-not -path "./PACK/*" \
|
|
||||||
-not -path "./build/*" \
|
|
||||||
-not -path "./dist/*" \
|
|
||||||
-not -path "./.venv/*" \
|
|
||||||
-print0 | xargs -0 shellcheck
|
|
||||||
|
|
||||||
actionlint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: Install actionlint
|
|
||||||
run: |
|
|
||||||
curl -sL https://github.com/rhysd/actionlint/releases/download/v1.7.11/actionlint_1.7.11_linux_amd64.tar.gz | tar xz
|
|
||||||
sudo mv actionlint /usr/local/bin/
|
|
||||||
|
|
||||||
- name: Run actionlint
|
|
||||||
run: actionlint
|
|
||||||
39
.github/workflows/pytest.yml
vendored
39
.github/workflows/pytest.yml
vendored
@@ -1,39 +0,0 @@
|
|||||||
name: pytest
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
pull_request:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
pytest:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
||||||
with:
|
|
||||||
python-version: ${{ matrix.python-version }}
|
|
||||||
|
|
||||||
- name: Install system dependencies
|
|
||||||
run: sudo apt-get update && sudo apt-get install -y p7zip-full transmission-cli
|
|
||||||
|
|
||||||
- name: Install uv
|
|
||||||
run: python -m pip install --upgrade pip uv==0.9.28
|
|
||||||
|
|
||||||
- name: Install project dependencies
|
|
||||||
run: |
|
|
||||||
uv venv .venv
|
|
||||||
uv pip install --python .venv/bin/python ".[dev]"
|
|
||||||
|
|
||||||
- name: Run tests
|
|
||||||
env:
|
|
||||||
HATE_CRACK_RUN_E2E: "0"
|
|
||||||
HATE_CRACK_RUN_DOCKER_TESTS: "0"
|
|
||||||
HATE_CRACK_RUN_LIVE_TESTS: "0"
|
|
||||||
HATE_CRACK_SKIP_INIT: "1"
|
|
||||||
run: .venv/bin/python -m pytest
|
|
||||||
28
.github/workflows/ruff.yml
vendored
28
.github/workflows/ruff.yml
vendored
@@ -1,28 +0,0 @@
|
|||||||
name: ruff
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
pull_request:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
ruff:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
||||||
with:
|
|
||||||
python-version: "3.13"
|
|
||||||
|
|
||||||
- name: Install uv
|
|
||||||
run: python -m pip install --upgrade pip uv==0.9.28
|
|
||||||
|
|
||||||
- name: Install dev dependencies
|
|
||||||
run: |
|
|
||||||
uv venv .venv
|
|
||||||
uv pip install --python .venv/bin/python ".[dev]"
|
|
||||||
|
|
||||||
- name: Run ruff
|
|
||||||
run: .venv/bin/ruff check hate_crack
|
|
||||||
28
.github/workflows/ty.yml
vendored
28
.github/workflows/ty.yml
vendored
@@ -1,28 +0,0 @@
|
|||||||
name: ty
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
pull_request:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
ty:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
||||||
with:
|
|
||||||
python-version: "3.13"
|
|
||||||
|
|
||||||
- name: Install uv
|
|
||||||
run: python -m pip install --upgrade pip uv==0.9.28
|
|
||||||
|
|
||||||
- name: Install dev dependencies
|
|
||||||
run: |
|
|
||||||
uv venv .venv
|
|
||||||
uv pip install --python .venv/bin/python ".[dev]"
|
|
||||||
|
|
||||||
- name: Run ty
|
|
||||||
run: .venv/bin/ty check hate_crack
|
|
||||||
69
.github/workflows/version-bump.yml
vendored
69
.github/workflows/version-bump.yml
vendored
@@ -1,69 +0,0 @@
|
|||||||
name: version-bump
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
types: [closed]
|
|
||||||
branches: [main]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
bump:
|
|
||||||
if: github.event.pull_request.merged == true
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Determine version bump type
|
|
||||||
id: bump-type
|
|
||||||
env:
|
|
||||||
BRANCH: ${{ github.head_ref }}
|
|
||||||
TITLE: ${{ github.event.pull_request.title }}
|
|
||||||
run: |
|
|
||||||
# Feature branches (feat/) bump minor, everything else bumps patch
|
|
||||||
if echo "$BRANCH" | grep -qiE '^feat/'; then
|
|
||||||
echo "type=minor" >> "$GITHUB_OUTPUT"
|
|
||||||
elif echo "$TITLE" | grep -qiE '^feat'; then
|
|
||||||
echo "type=minor" >> "$GITHUB_OUTPUT"
|
|
||||||
else
|
|
||||||
echo "type=patch" >> "$GITHUB_OUTPUT"
|
|
||||||
fi
|
|
||||||
echo "Bump type: $(grep type "$GITHUB_OUTPUT" | cut -d= -f2) (branch: $BRANCH)"
|
|
||||||
|
|
||||||
- name: Bump version
|
|
||||||
run: |
|
|
||||||
git config user.name "github-actions[bot]"
|
|
||||||
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
||||||
|
|
||||||
BUMP_TYPE="${{ steps.bump-type.outputs.type }}"
|
|
||||||
latest=$(git tag --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+' | head -1)
|
|
||||||
if [ -z "$latest" ]; then
|
|
||||||
echo "No version tag found, starting at v0.0.1"
|
|
||||||
next="v0.0.1"
|
|
||||||
else
|
|
||||||
version="${latest#v}"
|
|
||||||
major=$(echo "$version" | cut -d. -f1)
|
|
||||||
minor=$(echo "$version" | cut -d. -f2)
|
|
||||||
patch=$(echo "$version" | cut -d. -f3)
|
|
||||||
patch=${patch:-0}
|
|
||||||
|
|
||||||
if [ "$BUMP_TYPE" = "minor" ]; then
|
|
||||||
next="v${major}.$((minor + 1)).0"
|
|
||||||
else
|
|
||||||
next="v${major}.${minor}.$((patch + 1))"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Tagging $next (previous: ${latest:-none}, bump: $BUMP_TYPE)"
|
|
||||||
git tag -a "$next" -m "Release $next"
|
|
||||||
git push origin "$next"
|
|
||||||
|
|
||||||
- name: Create GitHub Release
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ github.token }}
|
|
||||||
run: |
|
|
||||||
latest=$(git tag --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+' | head -1)
|
|
||||||
gh release create "$latest" --title "$latest" --notes "Release $latest" --latest
|
|
||||||
@@ -35,7 +35,7 @@ uv run ruff format hate_crack
|
|||||||
make coverage
|
make coverage
|
||||||
```
|
```
|
||||||
|
|
||||||
**Test environment variables**: `HATE_CRACK_SKIP_INIT=1` skips binary/config validation (essential for CI and worktrees). `HASHMOB_TEST_REAL=1`, `HASHVIEW_TEST_REAL=1`, `WEAKPASS_TEST_REAL=1` enable live API tests.
|
**Test environment variables**: `HATE_CRACK_SKIP_INIT=1` skips binary/config validation (essential for worktrees without hashcat-utils). `HASHMOB_TEST_REAL=1`, `HASHVIEW_TEST_REAL=1`, `WEAKPASS_TEST_REAL=1` enable live API tests.
|
||||||
|
|
||||||
## Git Hooks
|
## Git Hooks
|
||||||
|
|
||||||
@@ -165,5 +165,4 @@ Binaries are verified at startup via `ensure_binary(path, build_dir, name)`. Non
|
|||||||
- Menu option tests in `test_ui_menu_options.py` use monkeypatching against `CLI_MODULE` (loaded from `hate_crack.py`)
|
- Menu option tests in `test_ui_menu_options.py` use monkeypatching against `CLI_MODULE` (loaded from `hate_crack.py`)
|
||||||
- API tests mock `requests` responses; most are offline-first
|
- API tests mock `requests` responses; most are offline-first
|
||||||
- conftest.py provides `hc_module` fixture via `load_hate_crack_module()` which dynamically imports root `hate_crack.py` with SKIP_INIT enabled
|
- conftest.py provides `hc_module` fixture via `load_hate_crack_module()` which dynamically imports root `hate_crack.py` with SKIP_INIT enabled
|
||||||
- Python 3.9-3.14 supported in CI (requires-python >=3.13 in pyproject.toml but CI tests older versions)
|
|
||||||
- E2E tests (`test_e2e_local_install.py`, `test_docker_script_install.py`) are opt-in via `HATE_CRACK_RUN_E2E=1` and `HATE_CRACK_RUN_DOCKER_TESTS=1`
|
- E2E tests (`test_e2e_local_install.py`, `test_docker_script_install.py`) are opt-in via `HATE_CRACK_RUN_E2E=1` and `HATE_CRACK_RUN_DOCKER_TESTS=1`
|
||||||
|
|||||||
45
README.md
45
README.md
@@ -7,16 +7,6 @@
|
|||||||
\/ \/ \/_____/ \/ \/ \/ \/
|
\/ \/ \/_____/ \/ \/ \/ \/
|
||||||
```
|
```
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
**Code Quality & Testing:**
|
|
||||||
|
|
||||||
[](https://github.com/trustedsec/hate_crack/actions/workflows/ruff.yml)
|
|
||||||
[](https://github.com/trustedsec/hate_crack/actions/workflows/ty.yml)
|
|
||||||
[](https://github.com/trustedsec/hate_crack/actions/workflows/pytest.yml)
|
|
||||||
|
|
||||||
The pytest workflow tests across Python 3.9-3.14 via a matrix build.
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
### 1. Install hashcat (Optional)
|
### 1. Install hashcat (Optional)
|
||||||
@@ -267,33 +257,6 @@ Install the project with optional dev dependencies (includes linters and testing
|
|||||||
make dev-install
|
make dev-install
|
||||||
```
|
```
|
||||||
|
|
||||||
### Continuous Integration
|
|
||||||
|
|
||||||
The project uses GitHub Actions to automatically run quality checks on every push and pull request.
|
|
||||||
|
|
||||||
**Checks that run on each commit:**
|
|
||||||
|
|
||||||
1. **Linting (Ruff)** - Code style and quality validation
|
|
||||||
- ✅ **PASS**: Code follows style rules and best practices
|
|
||||||
- ❌ **FAIL**: Code has style violations or quality issues
|
|
||||||
- Run locally: `make ruff`
|
|
||||||
|
|
||||||
2. **Type Checking (ty)** - Static type analysis
|
|
||||||
- ✅ **PASS**: No type errors detected
|
|
||||||
- ❌ **FAIL**: Type mismatches or missing annotations found
|
|
||||||
- Run locally: `make ty`
|
|
||||||
|
|
||||||
3. **Testing (Multi-Version)** - Tests across Python 3.9 through 3.14
|
|
||||||
- ✅ **PASS**: All tests pass on all supported Python versions
|
|
||||||
- ⚠️ **PARTIAL**: Tests pass on some versions but fail on others
|
|
||||||
- ❌ **FAIL**: Tests fail on one or more Python versions
|
|
||||||
- Run locally: `make test`
|
|
||||||
|
|
||||||
**View CI/CD Status:**
|
|
||||||
- Click the badge above to see the full test results
|
|
||||||
- Each workflow shows which Python version(s) failed or passed
|
|
||||||
- Details are available in the Actions tab
|
|
||||||
|
|
||||||
### Running Linters and Type Checks
|
### Running Linters and Type Checks
|
||||||
|
|
||||||
Before pushing changes, run these checks locally. Use `make lint` for everything, or run individual checks:
|
Before pushing changes, run these checks locally. Use `make lint` for everything, or run individual checks:
|
||||||
@@ -585,11 +548,7 @@ This test validates installation and execution within a lightweight Linux VM on
|
|||||||
- Hashfile upload functionality
|
- Hashfile upload functionality
|
||||||
- Complete job creation workflow
|
- Complete job creation workflow
|
||||||
|
|
||||||
All tests use mocked API calls, so they can run without connectivity to a Hashview server. This allows tests to run in CI/CD environments (like GitHub Actions) without requiring actual API credentials.
|
All tests use mocked API calls, so they can run without connectivity to a Hashview server.
|
||||||
|
|
||||||
### Continuous Integration
|
|
||||||
|
|
||||||
Tests automatically run on GitHub Actions for every push and pull request (Ubuntu, Python 3.9 through 3.14).
|
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -791,8 +750,6 @@ Version 2.0+
|
|||||||
- Added LLM Attack (option 15) using Ollama for AI-generated password candidates
|
- Added LLM Attack (option 15) using Ollama for AI-generated password candidates
|
||||||
- Added Ollama configuration keys (ollamaModel, ollamaNumCtx)
|
- Added Ollama configuration keys (ollamaModel, ollamaNumCtx)
|
||||||
- Auto-versioning via setuptools-scm from git tags
|
- Auto-versioning via setuptools-scm from git tags
|
||||||
- Automatic patch version bump (v2.0.1, v2.0.2, ...) on PR merge to main
|
|
||||||
- CI test fixes across Python 3.9-3.14
|
|
||||||
|
|
||||||
Version 2.0
|
Version 2.0
|
||||||
Modularized codebase into CLI/API/attacks modules
|
Modularized codebase into CLI/API/attacks modules
|
||||||
|
|||||||
@@ -128,10 +128,6 @@ The Lima test provisions a real Ubuntu 24.04 VM via [Lima](https://lima-vm.io/).
|
|||||||
- **HTTP mocking** - API tests mock `requests` at the boundary. No real network calls in offline tests.
|
- **HTTP mocking** - API tests mock `requests` at the boundary. No real network calls in offline tests.
|
||||||
- **Subprocess mocking** - Hashcat wrapper tests mock `subprocess.Popen`; no hashcat binary required.
|
- **Subprocess mocking** - Hashcat wrapper tests mock `subprocess.Popen`; no hashcat binary required.
|
||||||
|
|
||||||
## CI
|
|
||||||
|
|
||||||
GitHub Actions runs the offline test suite against Python 3.9-3.14 on every push and pull request. Opt-in tests are not run in CI.
|
|
||||||
|
|
||||||
Pre-push hooks (via [prek](https://github.com/j178/prek)) run `ruff`, `ty`, and `pytest` locally before each push:
|
Pre-push hooks (via [prek](https://github.com/j178/prek)) run `ruff`, `ty`, and `pytest` locally before each push:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
Reference in New Issue
Block a user