diff --git a/README.md b/README.md index 98569c6..ed2e3d0 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ This repository contains **29 reusable GitHub Actions** for CI/CD automation. | Icon | Action | Category | Description | Key Features | |:----:|:-----------------------------------------------------|:-----------|:----------------------------------------------------------------|:---------------------------------------------| | 🔀 | [`action-versioning`][action-versioning] | Utilities | Automatically update SHA-pinned action references to match l... | Token auth, Outputs | -| 📦 | [`ansible-lint-fix`][ansible-lint-fix] | Linting | Lints and fixes Ansible playbooks, commits changes, and uplo... | Token auth, Outputs | +| 📦 | [`ansible-lint-fix`][ansible-lint-fix] | Linting | Lints and fixes Ansible playbooks, commits changes, and uplo... | Caching, Token auth, Outputs | | ✅ | [`biome-lint`][biome-lint] | Linting | Run Biome linter in check or fix mode | Token auth, Outputs | | 🛡️ | [`codeql-analysis`][codeql-analysis] | Repository | Run CodeQL security analysis for a single language with conf... | Auto-detection, Token auth, Outputs | | 💾 | [`common-cache`][common-cache] | Repository | Standardized caching strategy for all actions | Caching, Outputs | @@ -77,7 +77,7 @@ This repository contains **29 reusable GitHub Actions** for CI/CD automation. | Action | Description | Languages | Features | |:-----------------------------------------------|:------------------------------------------------------|:---------------------------------------------|:---------------------------------------------| -| 📦 [`ansible-lint-fix`][ansible-lint-fix] | Lints and fixes Ansible playbooks, commits changes... | Ansible, YAML | Token auth, Outputs | +| 📦 [`ansible-lint-fix`][ansible-lint-fix] | Lints and fixes Ansible playbooks, commits changes... | Ansible, YAML | Caching, Token auth, Outputs | | ✅ [`biome-lint`][biome-lint] | Run Biome linter in check or fix mode | JavaScript, TypeScript, JSON | Token auth, Outputs | | 📝 [`csharp-lint-check`][csharp-lint-check] | Runs linters like StyleCop or dotnet-format for C#... | C#, .NET | Auto-detection, Token auth, Outputs | | ✅ [`eslint-lint`][eslint-lint] | Run ESLint in check or fix mode with advanced conf... | JavaScript, TypeScript | Caching, Token auth, Outputs | @@ -134,7 +134,7 @@ This repository contains **29 reusable GitHub Actions** for CI/CD automation. | Action | Caching | Auto-detection | Token auth | Outputs | |:-----------------------------------------------------|:-------:|:--------------:|:----------:|:-------:| | [`action-versioning`][action-versioning] | - | - | ✅ | ✅ | -| [`ansible-lint-fix`][ansible-lint-fix] | - | - | ✅ | ✅ | +| [`ansible-lint-fix`][ansible-lint-fix] | ✅ | - | ✅ | ✅ | | [`biome-lint`][biome-lint] | - | - | ✅ | ✅ | | [`codeql-analysis`][codeql-analysis] | - | ✅ | ✅ | ✅ | | [`common-cache`][common-cache] | ✅ | - | - | ✅ | diff --git a/ansible-lint-fix/action.yml b/ansible-lint-fix/action.yml index b281bcb..4b9e871 100644 --- a/ansible-lint-fix/action.yml +++ b/ansible-lint-fix/action.yml @@ -73,15 +73,12 @@ runs: with: token: ${{ inputs.token || github.token }} - - name: Cache Python Dependencies + - name: Setup Python if: steps.check-files.outputs.files_found == 'true' - id: cache-pip - uses: ivuorinen/actions/common-cache@0fa9a68f07a1260b321f814202658a6089a43d42 + uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 with: - type: 'pip' - paths: '~/.cache/pip' - key-files: 'requirements*.txt,pyproject.toml,setup.py,setup.cfg' - key-prefix: 'ansible-lint-fix' + python-version: '3.11' + cache: 'pip' - name: Install ansible-lint id: install-ansible-lint diff --git a/python-lint-fix/action.yml b/python-lint-fix/action.yml index 8d5c6e3..3172149 100644 --- a/python-lint-fix/action.yml +++ b/python-lint-fix/action.yml @@ -192,16 +192,50 @@ runs: printf 'detected-version=%s\n' "$detected_version" >> "$GITHUB_OUTPUT" echo "Final detected Python version: $detected_version" >&2 + - name: Detect Package Manager + id: package-manager + shell: sh + run: | + set -eu + + # Detect Python package manager based on lock files and config + package_manager="pip" + + if [ -f "uv.lock" ]; then + # uv uses pip-compatible caching, so we use 'pip' as cache type + package_manager="pip" + echo "Detected uv (using pip-compatible caching)" >&2 + elif [ -f "poetry.lock" ]; then + package_manager="poetry" + echo "Detected Poetry" >&2 + elif [ -f "Pipfile.lock" ] || [ -f "Pipfile" ]; then + package_manager="pipenv" + echo "Detected Pipenv" >&2 + elif [ -f "requirements.txt" ] || [ -f "requirements-dev.txt" ] || [ -f "setup.py" ] || [ -f "pyproject.toml" ]; then + package_manager="pip" + echo "Detected pip" >&2 + else + package_manager="pip" + echo "No package manager detected, defaulting to pip" >&2 + fi + + printf 'package-manager=%s\n' "$package_manager" >> "$GITHUB_OUTPUT" + echo "Using package manager: $package_manager" >&2 + - name: Setup Python uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 with: python-version: ${{ steps.python-version.outputs.detected-version }} - cache: 'pip' + cache: ${{ steps.package-manager.outputs.package-manager }} cache-dependency-path: | **/requirements.txt **/requirements-dev.txt **/pyproject.toml **/setup.py + **/Pipfile + **/Pipfile.lock + **/poetry.lock + **/uv.lock - name: Check for Python Files id: check-files @@ -219,18 +253,8 @@ runs: fi printf '%s\n' "result=found" >> "$GITHUB_OUTPUT" - - name: Cache Python Dependencies - if: steps.check-files.outputs.result == 'found' - id: cache-pip - uses: ivuorinen/actions/common-cache@0fa9a68f07a1260b321f814202658a6089a43d42 - with: - type: 'pip' - paths: '~/.cache/pip' - key-files: 'requirements*.txt,pyproject.toml,setup.py,setup.cfg' - key-prefix: 'python-lint-fix' - - name: Install Dependencies - if: steps.check-files.outputs.result == 'found' && steps.cache-pip.outputs.cache-hit != 'true' + if: steps.check-files.outputs.result == 'found' id: install shell: sh env: