diff --git a/.github/workflows/release-winget.yml b/.github/workflows/release-winget.yml index 71fefef..14a0b96 100644 --- a/.github/workflows/release-winget.yml +++ b/.github/workflows/release-winget.yml @@ -36,7 +36,7 @@ permissions: env: REPO: SplitFireAI/splitfire-agent - PACKAGE_IDENTIFIER: SplitFireAI.splitfire-agent + PACKAGE_IDENTIFIER: SplitFireAI.Agent jobs: submit-winget-manifest: @@ -92,7 +92,7 @@ jobs: GH_TOKEN: ${{ github.token }} run: | # Manifests are filed under the lowercased first letter of the - # publisher, e.g. manifests/s/SplitFireAI/splitfire-agent. + # publisher, e.g. manifests/s/SplitFireAI/Agent. PUBLISHER="${PACKAGE_IDENTIFIER%%.*}" NAME="${PACKAGE_IDENTIFIER#*.}" FIRST=$(echo "${PUBLISHER:0:1}" | tr '[:upper:]' '[:lower:]') @@ -101,13 +101,29 @@ jobs: if gh api "repos/microsoft/winget-pkgs/contents/${PATH_IN_REPO}" >/dev/null 2>&1; then echo "Found ${PACKAGE_IDENTIFIER} at ${PATH_IN_REPO}; submitting an update." echo "found=true" >> "$GITHUB_OUTPUT" + echo "pending=false" >> "$GITHUB_OUTPUT" + exit 0 + fi + + echo "found=false" >> "$GITHUB_OUTPUT" + + # Until the first New-package PR merges the folder check above is + # always false, so without this every release would open another + # PR and Package Request issue for the same package. + OPEN_PR=$(gh pr list --repo microsoft/winget-pkgs --state open \ + --search "New package: ${PACKAGE_IDENTIFIER} in:title" \ + --json number,url --jq '.[0].url // empty') + + if [ -n "$OPEN_PR" ]; then + echo "No ${PACKAGE_IDENTIFIER} at ${PATH_IN_REPO}, but ${OPEN_PR} is already open; not submitting again." + echo "pending=true" >> "$GITHUB_OUTPUT" else echo "No ${PACKAGE_IDENTIFIER} at ${PATH_IN_REPO}; submitting it as a new package." - echo "found=false" >> "$GITHUB_OUTPUT" + echo "pending=false" >> "$GITHUB_OUTPUT" fi - name: Render manifests for a first submission - if: steps.exists.outputs.found == 'false' + if: steps.exists.outputs.found == 'false' && steps.exists.outputs.pending != 'true' shell: bash run: | TAG="${{ steps.release.outputs.tag }}" @@ -150,6 +166,7 @@ jobs: # scope error without them. - name: File the winget Package Request issue id: issue + if: steps.exists.outputs.pending != 'true' shell: bash env: GH_TOKEN: ${{ secrets.WINGET_ISSUE_TOKEN }} @@ -197,7 +214,7 @@ jobs: - name: Submit new package id: submit_new - if: steps.exists.outputs.found == 'false' + if: steps.exists.outputs.found == 'false' && steps.exists.outputs.pending != 'true' shell: pwsh env: WINGET_CREATE_GITHUB_TOKEN: ${{ secrets.WINGET_PR_TOKEN }} diff --git a/packaging/winget/SplitFireAI.splitfire-agent.installer.yaml.in b/packaging/winget/SplitFireAI.Agent.installer.yaml.in similarity index 93% rename from packaging/winget/SplitFireAI.splitfire-agent.installer.yaml.in rename to packaging/winget/SplitFireAI.Agent.installer.yaml.in index 8d728c5..8a58b54 100644 --- a/packaging/winget/SplitFireAI.splitfire-agent.installer.yaml.in +++ b/packaging/winget/SplitFireAI.Agent.installer.yaml.in @@ -1,5 +1,5 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.12.0.schema.json -PackageIdentifier: SplitFireAI.splitfire-agent +PackageIdentifier: SplitFireAI.Agent PackageVersion: @VERSION@ InstallerType: zip # `NestedInstallerType` and `NestedInstallerFiles` tell winget where to find diff --git a/packaging/winget/SplitFireAI.splitfire-agent.locale.en-US.yaml.in b/packaging/winget/SplitFireAI.Agent.locale.en-US.yaml.in similarity index 96% rename from packaging/winget/SplitFireAI.splitfire-agent.locale.en-US.yaml.in rename to packaging/winget/SplitFireAI.Agent.locale.en-US.yaml.in index 46de6e0..0275781 100644 --- a/packaging/winget/SplitFireAI.splitfire-agent.locale.en-US.yaml.in +++ b/packaging/winget/SplitFireAI.Agent.locale.en-US.yaml.in @@ -1,5 +1,5 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.12.0.schema.json -PackageIdentifier: SplitFireAI.splitfire-agent +PackageIdentifier: SplitFireAI.Agent PackageVersion: @VERSION@ PackageLocale: en-US Publisher: SplitFireAI diff --git a/packaging/winget/SplitFireAI.splitfire-agent.yaml.in b/packaging/winget/SplitFireAI.Agent.yaml.in similarity index 79% rename from packaging/winget/SplitFireAI.splitfire-agent.yaml.in rename to packaging/winget/SplitFireAI.Agent.yaml.in index 0d8db63..dda2d2d 100644 --- a/packaging/winget/SplitFireAI.splitfire-agent.yaml.in +++ b/packaging/winget/SplitFireAI.Agent.yaml.in @@ -1,5 +1,5 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.12.0.schema.json -PackageIdentifier: SplitFireAI.splitfire-agent +PackageIdentifier: SplitFireAI.Agent PackageVersion: @VERSION@ DefaultLocale: en-US ManifestType: version