From 31b44a667c21fb18b77c0694101d3b4af4645a21 Mon Sep 17 00:00:00 2001 From: bbedward Date: Thu, 19 Feb 2026 09:30:05 -0500 Subject: [PATCH] flake: fix dev flake for go 1.25 and ashellchheck --- .github/workflows/backup/run-obs.yml.bak | 383 ----------------------- .github/workflows/backup/run-ppa.yml.bak | 298 ------------------ .pre-commit-config.yaml | 8 +- CONTRIBUTING.md | 2 +- core/README.md | 2 +- flake.nix | 3 +- 6 files changed, 9 insertions(+), 687 deletions(-) delete mode 100644 .github/workflows/backup/run-obs.yml.bak delete mode 100644 .github/workflows/backup/run-ppa.yml.bak diff --git a/.github/workflows/backup/run-obs.yml.bak b/.github/workflows/backup/run-obs.yml.bak deleted file mode 100644 index 4ffa6ef0..00000000 --- a/.github/workflows/backup/run-obs.yml.bak +++ /dev/null @@ -1,383 +0,0 @@ -name: Update OBS Packages - -on: - workflow_dispatch: - inputs: - package: - description: "Package to update (dms, dms-git, or all)" - required: false - default: "all" - force_upload: - description: "Force upload without version check" - required: false - default: "false" - type: choice - options: - - "false" - - "true" - rebuild_release: - description: "Release number for rebuilds (e.g., 2, 3, 4 to increment spec Release)" - required: false - default: "" - push: - tags: - - "v*" - schedule: - - cron: "0 */3 * * *" # Every 3 hours for dms-git builds - -jobs: - check-updates: - name: Check for updates - runs-on: ubuntu-latest - - outputs: - has_updates: ${{ steps.check.outputs.has_updates }} - packages: ${{ steps.check.outputs.packages }} - version: ${{ steps.check.outputs.version }} - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Install OSC - run: | - sudo apt-get update - sudo apt-get install -y osc - - mkdir -p ~/.config/osc - cat > ~/.config/osc/oscrc << EOF - [general] - apiurl = https://api.opensuse.org - - [https://api.opensuse.org] - user = ${{ secrets.OBS_USERNAME }} - pass = ${{ secrets.OBS_PASSWORD }} - EOF - chmod 600 ~/.config/osc/oscrc - - - name: Check for updates - id: check - run: | - if [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" =~ ^refs/tags/ ]]; then - echo "packages=dms" >> $GITHUB_OUTPUT - VERSION="${GITHUB_REF#refs/tags/}" - echo "version=$VERSION" >> $GITHUB_OUTPUT - echo "has_updates=true" >> $GITHUB_OUTPUT - echo "Triggered by tag: $VERSION (always update)" - elif [[ "${{ github.event_name }}" == "schedule" ]]; then - echo "packages=dms-git" >> $GITHUB_OUTPUT - echo "Checking if dms-git source has changed..." - - # Get current commit hash (8 chars to match spec format) - CURRENT_COMMIT=$(git rev-parse --short=8 HEAD) - - # Check OBS for last uploaded commit - OBS_BASE="$HOME/.cache/osc-checkouts" - mkdir -p "$OBS_BASE" - OBS_PROJECT="home:AvengeMedia:dms-git" - - if [[ -d "$OBS_BASE/$OBS_PROJECT/dms-git" ]]; then - cd "$OBS_BASE/$OBS_PROJECT/dms-git" - osc up -q 2>/dev/null || true - - # Extract commit hash from spec Version line & format like; 0.6.2+git2264.a679be68 - if [[ -f "dms-git.spec" ]]; then - OBS_COMMIT=$(grep "^Version:" "dms-git.spec" | grep -oP '\.[a-f0-9]{8}' | tr -d '.' || echo "") - - if [[ -n "$OBS_COMMIT" ]]; then - if [[ "$CURRENT_COMMIT" == "$OBS_COMMIT" ]]; then - echo "has_updates=false" >> $GITHUB_OUTPUT - echo "📋 Commit $CURRENT_COMMIT already uploaded to OBS, skipping" - else - echo "has_updates=true" >> $GITHUB_OUTPUT - echo "📋 New commit detected: $CURRENT_COMMIT (OBS has $OBS_COMMIT)" - fi - else - echo "has_updates=true" >> $GITHUB_OUTPUT - echo "📋 Could not extract OBS commit, proceeding with update" - fi - else - echo "has_updates=true" >> $GITHUB_OUTPUT - echo "📋 No spec file in OBS, proceeding with update" - fi - - cd "${{ github.workspace }}" - else - echo "has_updates=true" >> $GITHUB_OUTPUT - echo "📋 First upload to OBS, update needed" - fi - elif [[ "${{ github.event.inputs.force_upload }}" == "true" ]]; then - PKG="${{ github.event.inputs.package }}" - if [[ -z "$PKG" || "$PKG" == "all" ]]; then - echo "packages=all" >> $GITHUB_OUTPUT - echo "has_updates=true" >> $GITHUB_OUTPUT - echo "🚀 Force upload: all packages" - else - echo "packages=$PKG" >> $GITHUB_OUTPUT - echo "has_updates=true" >> $GITHUB_OUTPUT - echo "🚀 Force upload: $PKG" - fi - elif [[ -n "${{ github.event.inputs.package }}" ]]; then - echo "packages=${{ github.event.inputs.package }}" >> $GITHUB_OUTPUT - echo "has_updates=true" >> $GITHUB_OUTPUT - echo "Manual trigger: ${{ github.event.inputs.package }}" - else - echo "packages=all" >> $GITHUB_OUTPUT - echo "has_updates=true" >> $GITHUB_OUTPUT - fi - - update-obs: - name: Upload to OBS - needs: check-updates - runs-on: ubuntu-latest - permissions: - contents: write - pull-requests: write - if: | - github.event.inputs.force_upload == 'true' || - github.event_name == 'workflow_dispatch' || - needs.check-updates.outputs.has_updates == 'true' - - steps: - - name: Generate GitHub App Token - id: generate_token - uses: actions/create-github-app-token@v1 - with: - app-id: ${{ secrets.APP_ID }} - private-key: ${{ secrets.APP_PRIVATE_KEY }} - - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - token: ${{ steps.generate_token.outputs.token }} - - - name: Check if last commit was automated - id: check-loop - run: | - LAST_COMMIT_MSG=$(git log -1 --pretty=%B | head -1) - if [[ "$LAST_COMMIT_MSG" == "ci: Auto-update PPA packages"* ]] || [[ "$LAST_COMMIT_MSG" == "ci: Auto-update OBS packages"* ]]; then - echo "⏭️ Last commit was automated ($LAST_COMMIT_MSG), skipping to prevent infinite loop" - echo "skip=true" >> $GITHUB_OUTPUT - else - echo "✅ Last commit was not automated, proceeding" - echo "skip=false" >> $GITHUB_OUTPUT - fi - - - name: Determine packages to update - if: steps.check-loop.outputs.skip != 'true' - id: packages - run: | - if [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" =~ ^refs/tags/ ]]; then - echo "packages=dms" >> $GITHUB_OUTPUT - VERSION="${GITHUB_REF#refs/tags/}" - echo "version=$VERSION" >> $GITHUB_OUTPUT - echo "Triggered by tag: $VERSION" - elif [[ "${{ github.event_name }}" == "schedule" ]]; then - echo "packages=${{ needs.check-updates.outputs.packages }}" >> $GITHUB_OUTPUT - echo "Triggered by schedule: updating git package" - elif [[ -n "${{ github.event.inputs.package }}" ]]; then - echo "packages=${{ github.event.inputs.package }}" >> $GITHUB_OUTPUT - echo "Manual trigger: ${{ github.event.inputs.package }}" - else - echo "packages=${{ needs.check-updates.outputs.packages }}" >> $GITHUB_OUTPUT - fi - - - name: Update dms-git spec version - if: steps.check-loop.outputs.skip != 'true' && (contains(steps.packages.outputs.packages, 'dms-git') || steps.packages.outputs.packages == 'all') - run: | - # Get commit info for dms-git versioning - COMMIT_HASH=$(git rev-parse --short=8 HEAD) - COMMIT_COUNT=$(git rev-list --count HEAD) - BASE_VERSION=$(grep -oP '^Version:\s+\K[0-9.]+' distro/opensuse/dms.spec | head -1 || echo "0.6.2") - - NEW_VERSION="${BASE_VERSION}+git${COMMIT_COUNT}.${COMMIT_HASH}" - echo "📦 Updating dms-git.spec to version: $NEW_VERSION" - - # Update version in spec - sed -i "s/^Version:.*/Version: $NEW_VERSION/" distro/opensuse/dms-git.spec - - # Add changelog entry - DATE_STR=$(date "+%a %b %d %Y") - CHANGELOG_ENTRY="* $DATE_STR Avenge Media - ${NEW_VERSION}-1\n- Git snapshot (commit $COMMIT_COUNT: $COMMIT_HASH)" - sed -i "/%changelog/a\\$CHANGELOG_ENTRY" distro/opensuse/dms-git.spec - - - name: Update Debian dms-git changelog version - if: steps.check-loop.outputs.skip != 'true' && (contains(steps.packages.outputs.packages, 'dms-git') || steps.packages.outputs.packages == 'all') - run: | - # Get commit info for dms-git versioning - COMMIT_HASH=$(git rev-parse --short=8 HEAD) - COMMIT_COUNT=$(git rev-list --count HEAD) - BASE_VERSION=$(grep -oP '^Version:\s+\K[0-9.]+' distro/opensuse/dms.spec | head -1 || echo "0.6.2") - - # Debian version format: 0.6.2+git2256.9162e314 - NEW_VERSION="${BASE_VERSION}+git${COMMIT_COUNT}.${COMMIT_HASH}" - echo "📦 Updating Debian dms-git changelog to version: $NEW_VERSION" - - CHANGELOG_DATE=$(date -R) - - CHANGELOG_FILE="distro/debian/dms-git/debian/changelog" - - # Get current version from changelog - CURRENT_VERSION=$(head -1 "$CHANGELOG_FILE" | sed 's/.*(\([^)]*\)).*/\1/') - - echo "Current Debian version: $CURRENT_VERSION" - echo "New version: $NEW_VERSION" - - # Only update if version changed - if [ "$CURRENT_VERSION" != "$NEW_VERSION" ]; then - # Create new changelog entry at top - TEMP_CHANGELOG=$(mktemp) - - cat > "$TEMP_CHANGELOG" << EOF - dms-git ($NEW_VERSION) nightly; urgency=medium - - * Git snapshot (commit $COMMIT_COUNT: $COMMIT_HASH) - - -- Avenge Media $CHANGELOG_DATE - - EOF - - # Prepend to existing changelog - cat "$CHANGELOG_FILE" >> "$TEMP_CHANGELOG" - mv "$TEMP_CHANGELOG" "$CHANGELOG_FILE" - - echo "✓ Updated Debian changelog: $CURRENT_VERSION → $NEW_VERSION" - else - echo "✓ Debian changelog already at version $NEW_VERSION" - fi - - - name: Update dms stable version - if: steps.check-loop.outputs.skip != 'true' && steps.packages.outputs.version != '' - run: | - VERSION="${{ steps.packages.outputs.version }}" - VERSION_NO_V="${VERSION#v}" - echo "Updating packaging to version $VERSION_NO_V" - - # Update openSUSE dms spec (stable only) - sed -i "s/^Version:.*/Version: $VERSION_NO_V/" distro/opensuse/dms.spec - - # Update openSUSE spec changelog - DATE_STR=$(date "+%a %b %d %Y") - CHANGELOG_ENTRY="* $DATE_STR AvengeMedia - ${VERSION_NO_V}-1\\n- Update to stable $VERSION release\\n- Bug fixes and improvements" - sed -i "/%changelog/a\\$CHANGELOG_ENTRY\\n" distro/opensuse/dms.spec - - # Update Debian _service files (both tar_scm and download_url formats) - for service in distro/debian/*/_service; do - if [[ -f "$service" ]]; then - # Update tar_scm revision parameter (for dms-git) - sed -i "s|v[0-9.]*|$VERSION|" "$service" - - # Update download_url paths (for dms stable) - sed -i "s|/v[0-9.]\+/|/$VERSION/|g" "$service" - sed -i "s|/tags/v[0-9.]\+\.tar\.gz|/tags/$VERSION.tar.gz|g" "$service" - fi - done - - # Update Debian changelog for dms stable - if [[ -f "distro/debian/dms/debian/changelog" ]]; then - CHANGELOG_DATE=$(date -R) - TEMP_CHANGELOG=$(mktemp) - - cat > "$TEMP_CHANGELOG" << EOF - dms ($VERSION_NO_V) stable; urgency=medium - - * Update to $VERSION stable release - * Bug fixes and improvements - - -- Avenge Media $CHANGELOG_DATE - - EOF - - cat "distro/debian/dms/debian/changelog" >> "$TEMP_CHANGELOG" - mv "$TEMP_CHANGELOG" "distro/debian/dms/debian/changelog" - - echo "✓ Updated Debian changelog to $VERSION_NO_V" - fi - - - name: Install Go - if: steps.check-loop.outputs.skip != 'true' - uses: actions/setup-go@v5 - with: - go-version: "1.24" - - - name: Install OSC - if: steps.check-loop.outputs.skip != 'true' - run: | - sudo apt-get update - sudo apt-get install -y osc - - mkdir -p ~/.config/osc - cat > ~/.config/osc/oscrc << EOF - [general] - apiurl = https://api.opensuse.org - - [https://api.opensuse.org] - user = ${{ secrets.OBS_USERNAME }} - pass = ${{ secrets.OBS_PASSWORD }} - EOF - chmod 600 ~/.config/osc/oscrc - - - name: Upload to OBS - if: steps.check-loop.outputs.skip != 'true' - env: - FORCE_UPLOAD: ${{ github.event.inputs.force_upload }} - REBUILD_RELEASE: ${{ github.event.inputs.rebuild_release }} - run: | - PACKAGES="${{ steps.packages.outputs.packages }}" - MESSAGE="Automated update from GitHub Actions" - - if [[ -n "${{ steps.packages.outputs.version }}" ]]; then - MESSAGE="Update to ${{ steps.packages.outputs.version }}" - fi - - if [[ "$PACKAGES" == "all" ]]; then - bash distro/scripts/obs-upload.sh dms "$MESSAGE" - bash distro/scripts/obs-upload.sh dms-git "Automated git update" - else - bash distro/scripts/obs-upload.sh "$PACKAGES" "$MESSAGE" - fi - - - name: Get changed packages - if: steps.check-loop.outputs.skip != 'true' - id: changed-packages - run: | - # Check if there are any changes to commit - if git diff --exit-code distro/debian/ distro/opensuse/ >/dev/null 2>&1; then - echo "has_changes=false" >> $GITHUB_OUTPUT - echo "📋 No changelog or spec changes to commit" - else - echo "has_changes=true" >> $GITHUB_OUTPUT - # Get list of changed packages for commit message - CHANGED_DEB=$(git diff --name-only distro/debian/ 2>/dev/null | grep 'debian/changelog' | xargs dirname 2>/dev/null | xargs dirname 2>/dev/null | xargs basename 2>/dev/null | tr '\n' ', ' | sed 's/, $//' || echo "") - CHANGED_SUSE=$(git diff --name-only distro/opensuse/ 2>/dev/null | grep '\.spec$' | sed 's|distro/opensuse/||' | sed 's/\.spec$//' | tr '\n' ', ' | sed 's/, $//' || echo "") - - PKGS=$(echo "$CHANGED_DEB,$CHANGED_SUSE" | tr ',' '\n' | grep -v '^$' | sort -u | tr '\n' ',' | sed 's/,$//') - echo "packages=$PKGS" >> $GITHUB_OUTPUT - echo "📋 Changed packages: $PKGS" - fi - - - name: Commit packaging changes - if: steps.check-loop.outputs.skip != 'true' && steps.changed-packages.outputs.has_changes == 'true' - run: | - git config user.name "dms-ci[bot]" - git config user.email "dms-ci[bot]@users.noreply.github.com" - git add distro/debian/*/debian/changelog distro/opensuse/*.spec - git commit -m "ci: Auto-update OBS packages [${{ steps.changed-packages.outputs.packages }}]" -m "🤖 Automated by GitHub Actions" - git pull --rebase origin master - git push - - - name: Summary - run: | - echo "### OBS Package Update Complete" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "- **Packages**: ${{ steps.packages.outputs.packages }}" >> $GITHUB_STEP_SUMMARY - if [[ -n "${{ steps.packages.outputs.version }}" ]]; then - echo "- **Version**: ${{ steps.packages.outputs.version }}" >> $GITHUB_STEP_SUMMARY - fi - if [[ "${{ needs.check-updates.outputs.has_updates }}" == "false" ]]; then - echo "- **Status**: Skipped (no changes detected)" >> $GITHUB_STEP_SUMMARY - fi - echo "- **Project**: https://build.opensuse.org/project/show/home:AvengeMedia" >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/backup/run-ppa.yml.bak b/.github/workflows/backup/run-ppa.yml.bak deleted file mode 100644 index 61875843..00000000 --- a/.github/workflows/backup/run-ppa.yml.bak +++ /dev/null @@ -1,298 +0,0 @@ -name: Update PPA Packages - -on: - workflow_dispatch: - inputs: - package: - description: "Package to upload (dms, dms-git, dms-greeter, or all)" - required: false - default: "dms-git" - force_upload: - description: "Force upload without version check" - required: false - default: "false" - type: choice - options: - - "false" - - "true" - rebuild_release: - description: "Release number for rebuilds (e.g., 2, 3, 4 for ppa2, ppa3, ppa4)" - required: false - default: "" - schedule: - - cron: "0 */3 * * *" # Every 3 hours for dms-git builds - -jobs: - check-updates: - name: Check for updates - runs-on: ubuntu-latest - - outputs: - has_updates: ${{ steps.check.outputs.has_updates }} - packages: ${{ steps.check.outputs.packages }} - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Check for updates - id: check - run: | - if [[ "${{ github.event_name }}" == "schedule" ]]; then - echo "packages=dms-git" >> $GITHUB_OUTPUT - echo "Checking if dms-git source has changed..." - - # Get current commit hash (8 chars to match changelog format) - CURRENT_COMMIT=$(git rev-parse --short=8 HEAD) - - # Extract commit hash from changelog - # Format: dms-git (0.6.2+git2264.c5c5ce84) questing; urgency=medium - CHANGELOG_FILE="distro/ubuntu/dms-git/debian/changelog" - - if [[ -f "$CHANGELOG_FILE" ]]; then - CHANGELOG_COMMIT=$(head -1 "$CHANGELOG_FILE" | grep -oP '\.[a-f0-9]{8}' | tr -d '.' || echo "") - - if [[ -n "$CHANGELOG_COMMIT" ]]; then - if [[ "$CURRENT_COMMIT" == "$CHANGELOG_COMMIT" ]]; then - echo "has_updates=false" >> $GITHUB_OUTPUT - echo "📋 Commit $CURRENT_COMMIT already in changelog, skipping upload" - else - echo "has_updates=true" >> $GITHUB_OUTPUT - echo "📋 New commit detected: $CURRENT_COMMIT (changelog has $CHANGELOG_COMMIT)" - fi - else - echo "has_updates=true" >> $GITHUB_OUTPUT - echo "📋 Could not extract commit from changelog, proceeding with upload" - fi - else - echo "has_updates=true" >> $GITHUB_OUTPUT - echo "📋 No changelog file found, proceeding with upload" - fi - elif [[ -n "${{ github.event.inputs.package }}" ]]; then - echo "packages=${{ github.event.inputs.package }}" >> $GITHUB_OUTPUT - echo "has_updates=true" >> $GITHUB_OUTPUT - echo "Manual trigger: ${{ github.event.inputs.package }}" - else - echo "packages=dms-git" >> $GITHUB_OUTPUT - echo "has_updates=true" >> $GITHUB_OUTPUT - fi - - upload-ppa: - name: Upload to PPA - needs: check-updates - runs-on: ubuntu-latest - permissions: - contents: write - pull-requests: write - if: | - github.event.inputs.force_upload == 'true' || - github.event_name == 'workflow_dispatch' || - needs.check-updates.outputs.has_updates == 'true' - - steps: - - name: Generate GitHub App Token - id: generate_token - uses: actions/create-github-app-token@v1 - with: - app-id: ${{ secrets.APP_ID }} - private-key: ${{ secrets.APP_PRIVATE_KEY }} - - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - token: ${{ steps.generate_token.outputs.token }} - - - name: Check if last commit was automated - id: check-loop - run: | - LAST_COMMIT_MSG=$(git log -1 --pretty=%B | head -1) - if [[ "$LAST_COMMIT_MSG" == "ci: Auto-update PPA packages"* ]] || [[ "$LAST_COMMIT_MSG" == "ci: Auto-update OBS packages"* ]]; then - echo "⏭️ Last commit was automated ($LAST_COMMIT_MSG), skipping to prevent infinite loop" - echo "skip=true" >> $GITHUB_OUTPUT - else - echo "✅ Last commit was not automated, proceeding" - echo "skip=false" >> $GITHUB_OUTPUT - fi - - - name: Set up Go - if: steps.check-loop.outputs.skip != 'true' - uses: actions/setup-go@v5 - with: - go-version: "1.24" - cache: false - - - name: Install build dependencies - if: steps.check-loop.outputs.skip != 'true' - run: | - sudo apt-get update - sudo apt-get install -y \ - debhelper \ - devscripts \ - dput \ - lftp \ - build-essential \ - fakeroot \ - dpkg-dev - - - name: Configure GPG - if: steps.check-loop.outputs.skip != 'true' - env: - GPG_KEY: ${{ secrets.GPG_PRIVATE_KEY }} - run: | - echo "$GPG_KEY" | gpg --import - GPG_KEY_ID=$(gpg --list-secret-keys --keyid-format LONG | grep sec | awk '{print $2}' | cut -d'/' -f2) - echo "DEBSIGN_KEYID=$GPG_KEY_ID" >> $GITHUB_ENV - - - name: Determine packages to upload - if: steps.check-loop.outputs.skip != 'true' - id: packages - run: | - if [[ "${{ github.event.inputs.force_upload }}" == "true" ]]; then - PKG="${{ github.event.inputs.package }}" - if [[ -z "$PKG" || "$PKG" == "all" ]]; then - echo "packages=all" >> $GITHUB_OUTPUT - echo "🚀 Force upload: all packages" - else - echo "packages=$PKG" >> $GITHUB_OUTPUT - echo "🚀 Force upload: $PKG" - fi - elif [[ "${{ github.event_name }}" == "schedule" ]]; then - echo "packages=${{ needs.check-updates.outputs.packages }}" >> $GITHUB_OUTPUT - echo "Triggered by schedule: uploading git package" - elif [[ -n "${{ github.event.inputs.package }}" ]]; then - # Manual package selection should respect change detection - SELECTED_PKG="${{ github.event.inputs.package }}" - UPDATED_PKG="${{ needs.check-updates.outputs.packages }}" - - # Check if manually selected package is in the updated list - if [[ "$UPDATED_PKG" == *"$SELECTED_PKG"* ]] || [[ "$SELECTED_PKG" == "all" ]]; then - echo "packages=$SELECTED_PKG" >> $GITHUB_OUTPUT - echo "📦 Manual selection (has updates): $SELECTED_PKG" - else - echo "packages=" >> $GITHUB_OUTPUT - echo "⚠️ Manual selection '$SELECTED_PKG' has no updates - skipping (use force_upload to override)" - fi - else - echo "packages=${{ needs.check-updates.outputs.packages }}" >> $GITHUB_OUTPUT - fi - - - name: Upload to PPA - if: steps.check-loop.outputs.skip != 'true' - run: | - PACKAGES="${{ steps.packages.outputs.packages }}" - REBUILD_RELEASE="${{ github.event.inputs.rebuild_release }}" - - if [[ -z "$PACKAGES" ]]; then - echo "No packages selected for upload. Skipping." - exit 0 - fi - - # Build command arguments - BUILD_ARGS=() - if [[ -n "$REBUILD_RELEASE" ]]; then - BUILD_ARGS+=("$REBUILD_RELEASE") - echo "✓ Using rebuild release number: ppa$REBUILD_RELEASE" - fi - - if [[ "$PACKAGES" == "all" ]]; then - echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" - echo "Uploading dms to PPA..." - if [ -n "$REBUILD_RELEASE" ]; then - echo "🔄 Using rebuild release number: ppa$REBUILD_RELEASE" - fi - echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" - bash distro/scripts/ppa-upload.sh dms dms questing "${BUILD_ARGS[@]}" - - echo "" - echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" - echo "Uploading dms-git to PPA..." - echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" - bash distro/scripts/ppa-upload.sh dms-git dms-git questing "${BUILD_ARGS[@]}" - - echo "" - echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" - echo "Uploading dms-greeter to PPA..." - echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" - bash distro/scripts/ppa-upload.sh dms-greeter danklinux questing "${BUILD_ARGS[@]}" - else - # Map package to PPA name - case "$PACKAGES" in - dms) - PPA_NAME="dms" - ;; - dms-git) - PPA_NAME="dms-git" - ;; - dms-greeter) - PPA_NAME="danklinux" - ;; - *) - PPA_NAME="$PACKAGES" - ;; - esac - - echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" - echo "Uploading $PACKAGES to PPA..." - echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" - bash distro/scripts/ppa-upload.sh "$PACKAGES" "$PPA_NAME" questing "${BUILD_ARGS[@]}" - fi - - - name: Get changed packages - if: steps.check-loop.outputs.skip != 'true' - id: changed-packages - run: | - # Check if there are any changelog changes to commit - if git diff --exit-code distro/ubuntu/ >/dev/null 2>&1; then - echo "has_changes=false" >> $GITHUB_OUTPUT - echo "📋 No changelog changes to commit" - else - echo "has_changes=true" >> $GITHUB_OUTPUT - # Get list of changed packages for commit message (deduplicate) - CHANGED=$(git diff --name-only distro/ubuntu/ | grep 'debian/changelog' | sed 's|/debian/changelog||' | xargs -I{} basename {} | sort -u | tr '\n' ',' | sed 's/,$//') - echo "packages=$CHANGED" >> $GITHUB_OUTPUT - echo "📋 Changed packages: $CHANGED" - echo "📋 Debug - Changed files:" - git diff --name-only distro/ubuntu/ | grep 'debian/changelog' || echo "No changelog files found" - fi - - - name: Commit changelog changes - if: steps.check-loop.outputs.skip != 'true' && steps.changed-packages.outputs.has_changes == 'true' - run: | - git config user.name "dms-ci[bot]" - git config user.email "dms-ci[bot]@users.noreply.github.com" - git add distro/ubuntu/*/debian/changelog - git commit -m "ci: Auto-update PPA packages [${{ steps.changed-packages.outputs.packages }}]" -m "🤖 Automated by GitHub Actions" - git pull --rebase origin master - git push - - - name: Summary - run: | - echo "### PPA Package Upload Complete" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "- **Packages**: ${{ steps.packages.outputs.packages }}" >> $GITHUB_STEP_SUMMARY - - if [[ "${{ needs.check-updates.outputs.has_updates }}" == "false" ]]; then - echo "- **Status**: Skipped (no changes detected)" >> $GITHUB_STEP_SUMMARY - fi - - PACKAGES="${{ steps.packages.outputs.packages }}" - if [[ "$PACKAGES" == "all" ]]; then - echo "- **PPA dms**: https://launchpad.net/~avengemedia/+archive/ubuntu/dms/+packages" >> $GITHUB_STEP_SUMMARY - echo "- **PPA dms-git**: https://launchpad.net/~avengemedia/+archive/ubuntu/dms-git/+packages" >> $GITHUB_STEP_SUMMARY - echo "- **PPA danklinux**: https://launchpad.net/~avengemedia/+archive/ubuntu/danklinux/+packages" >> $GITHUB_STEP_SUMMARY - elif [[ "$PACKAGES" == "dms" ]]; then - echo "- **PPA**: https://launchpad.net/~avengemedia/+archive/ubuntu/dms/+packages" >> $GITHUB_STEP_SUMMARY - elif [[ "$PACKAGES" == "dms-git" ]]; then - echo "- **PPA**: https://launchpad.net/~avengemedia/+archive/ubuntu/dms-git/+packages" >> $GITHUB_STEP_SUMMARY - elif [[ "$PACKAGES" == "dms-greeter" ]]; then - echo "- **PPA**: https://launchpad.net/~avengemedia/+archive/ubuntu/danklinux/+packages" >> $GITHUB_STEP_SUMMARY - fi - - if [[ -n "${{ steps.packages.outputs.version }}" ]]; then - echo "- **Version**: ${{ steps.packages.outputs.version }}" >> $GITHUB_STEP_SUMMARY - fi - echo "" >> $GITHUB_STEP_SUMMARY - echo "Builds will appear once Launchpad processes the uploads." >> $GITHUB_STEP_SUMMARY diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 291c7bdd..40622581 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,11 +5,13 @@ repos: - id: trailing-whitespace - id: check-yaml - id: end-of-file-fixer - - repo: https://github.com/shellcheck-py/shellcheck-py - rev: v0.10.0.1 + - repo: local hooks: - id: shellcheck - args: [-e, SC2164, -e, SC2001, -e, SC2012, -e, SC2317] + name: shellcheck + entry: shellcheck -e SC2164 -e SC2001 -e SC2012 -e SC2317 + language: system + types: [shell] - repo: local hooks: - id: go-mod-tidy diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 60bfcde8..873f2cac 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,7 +22,7 @@ nix develop This will provide: -- Go 1.24 toolchain (go, gopls, delve, go-tools) and GNU Make +- Go 1.25+ toolchain (go, gopls, delve, go-tools) and GNU Make - Quickshell and required QML packages - Properly configured QML2_IMPORT_PATH diff --git a/core/README.md b/core/README.md index 7cdd6cef..f955ad43 100644 --- a/core/README.md +++ b/core/README.md @@ -96,7 +96,7 @@ The on-screen preview displays the selected format. JSON output includes hex, RG ## Building -Requires Go 1.24+ +Requires Go 1.25+ **Development build:** diff --git a/flake.nix b/flake.nix index 7053490d..c77d9dfd 100644 --- a/flake.nix +++ b/flake.nix @@ -181,7 +181,7 @@ buildInputs = with pkgs; [ - go_1_24 + go_1_25 gopls delve go-tools @@ -189,6 +189,7 @@ prek uv # for prek + shellcheck # Nix development tools nixd