fix(ci): resolve nix-update workflow issues

- Remove --use-update-script flag that breaks with flake-only repos
  (nix-update-script expects default.nix at repo root)
- Fix GitHub API jq filter for detecting prereleases
- Fix Summary step bash syntax for handling input variables
- Format lib/ files that were failing formatting check
This commit is contained in:
m3tm3re
2026-02-20 08:30:26 +01:00
parent 3b99d1215e
commit 2e37c16ac7
3 changed files with 64 additions and 54 deletions

View File

@@ -82,13 +82,13 @@ jobs:
echo "::group::Checking $INPUT_NAME ($OWNER/$REPO)" echo "::group::Checking $INPUT_NAME ($OWNER/$REPO)"
# Get latest stable release (exclude prereleases) # Get latest stable release (exclude prereleases)
LATEST=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ # The /releases/latest endpoint already returns the latest non-prerelease, non-draft release
"https://api.github.com/repos/$OWNER/$REPO/releases/latest" | \ LATEST=$(curl -sf "https://api.github.com/repos/$OWNER/$REPO/releases/latest" | \
jq -r 'select(.prerelease == false) | .tag_name // empty') jq -r 'if .prerelease == false then .tag_name else empty end')
if [ -z "$LATEST" ]; then if [ -z "$LATEST" ]; then
echo "⚠️ No stable release found for $INPUT_NAME" echo "⚠️ No stable release found for $INPUT_NAME (repo may only have prereleases)"
FAILED_INPUTS="$FAILED_INPUTS $INPUT_NAME(no-release)" FAILED_INPUTS="$FAILED_INPUTS $INPUT_NAME(no-stable-release)"
echo "::endgroup::" echo "::endgroup::"
continue continue
fi fi
@@ -181,7 +181,7 @@ jobs:
echo "::group::Updating $pkg" echo "::group::Updating $pkg"
local args=("--flake" "--commit" "--use-github-releases" "--use-update-script") local args=("--flake" "--commit" "--use-github-releases")
args+=("$pkg") args+=("$pkg")
@@ -395,15 +395,19 @@ jobs:
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
echo "## Updated Flake Inputs" >> $GITHUB_STEP_SUMMARY echo "## Updated Flake Inputs" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
for input in ${{ steps.update-flake-inputs.outputs.updated_inputs }}; do UPDATED_INPUTS="${{ steps.update-flake-inputs.outputs.updated_inputs }}"
echo "- **$input**" >> $GITHUB_STEP_SUMMARY if [ -n "$UPDATED_INPUTS" ]; then
echo "$UPDATED_INPUTS" | tr ' ' '\n' | while read -r input; do
[ -n "$input" ] && echo "- **$input**" >> $GITHUB_STEP_SUMMARY
done done
if [ -n "${{ steps.update-flake-inputs.outputs.failed_inputs }}" ]; then fi
FAILED_INPUTS="${{ steps.update-flake-inputs.outputs.failed_inputs }}"
if [ -n "$FAILED_INPUTS" ]; then
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
echo "### Failed Inputs" >> $GITHUB_STEP_SUMMARY echo "### Failed Inputs" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
for input in ${{ steps.update-flake-inputs.outputs.failed_inputs }}; do echo "$FAILED_INPUTS" | tr ' ' '\n' | while read -r input; do
echo "- $input" >> $GITHUB_STEP_SUMMARY [ -n "$input" ] && echo "- $input" >> $GITHUB_STEP_SUMMARY
done done
fi fi
fi fi

View File

@@ -3,10 +3,10 @@
# let # let
# m3taLib = inputs.m3ta-nixpkgs.lib.${system}; # m3taLib = inputs.m3ta-nixpkgs.lib.${system};
# in ... # in ...
{ lib }: { {lib}: {
# Port management utilities # Port management utilities
ports = import ./ports.nix { inherit lib; }; ports = import ./ports.nix {inherit lib;};
# OpenCode rules injection utilities # OpenCode rules injection utilities
opencode-rules = import ./opencode-rules.nix { inherit lib; }; opencode-rules = import ./opencode-rules.nix {inherit lib;};
} }

View File

@@ -30,7 +30,7 @@
# #
# The instructions list contains paths relative to the project root, all prefixed # The instructions list contains paths relative to the project root, all prefixed
# with `.opencode-rules/`, making them portable across different project locations. # with `.opencode-rules/`, making them portable across different project locations.
{ lib }: { {lib}: {
# Create Opencode rules configuration from AGENTS repository # Create Opencode rules configuration from AGENTS repository
# #
# Args: # Args:
@@ -69,20 +69,26 @@
# # ".opencode-rules/frameworks/fastapi.md" # # ".opencode-rules/frameworks/fastapi.md"
# # ]; # # ];
# # } # # }
mkOpencodeRules = { agents, languages ? [ ], concerns ? [ mkOpencodeRules = {
agents,
languages ? [],
concerns ? [
"coding-style" "coding-style"
"naming" "naming"
"documentation" "documentation"
"testing" "testing"
"git-workflow" "git-workflow"
"project-structure" "project-structure"
], frameworks ? [ ], extraInstructions ? [ ] }: ],
let frameworks ? [],
extraInstructions ? [],
}: let
rulesDir = ".opencode-rules"; rulesDir = ".opencode-rules";
# Build instructions list by mapping concerns, languages, frameworks to their file paths # Build instructions list by mapping concerns, languages, frameworks to their file paths
# All paths are relative to project root via the rulesDir symlink # All paths are relative to project root via the rulesDir symlink
instructions = (map (c: "${rulesDir}/concerns/${c}.md") concerns) instructions =
(map (c: "${rulesDir}/concerns/${c}.md") concerns)
++ (map (l: "${rulesDir}/languages/${l}.md") languages) ++ (map (l: "${rulesDir}/languages/${l}.md") languages)
++ (map (f: "${rulesDir}/frameworks/${f}.md") frameworks) ++ (map (f: "${rulesDir}/frameworks/${f}.md") frameworks)
++ extraInstructions; ++ extraInstructions;