diff --git a/.github/actions/deploy-aur/action.yml b/.github/actions/deploy-aur/action.yml new file mode 100644 index 0000000..d4cdadb --- /dev/null +++ b/.github/actions/deploy-aur/action.yml @@ -0,0 +1,118 @@ +name: 'Deploy AUR Package' +description: > + Publishes a PKGBUILD to AUR. Tries KSXGitHub/github-actions-deploy-aur first, + falls back to a manual clone-and-push with .SRCINFO regeneration via Docker. + +inputs: + pkgname: + description: 'AUR package name' + required: true + pkgbuild: + description: 'Path to the PKGBUILD file' + required: true + ssh_private_key: + description: 'SSH private key with AUR access' + required: true + commit_username: + description: 'Git commit username' + required: true + commit_email: + description: 'Git commit email' + required: true + commit_message: + description: 'Git commit message' + required: true + force_push: + description: 'Force push to AUR' + required: false + default: 'false' + regenerate_srcinfo: + description: 'Regenerate .SRCINFO via Docker in the manual fallback (needed for -git packages)' + required: false + default: 'false' + updpkgsums: + description: 'Run updpkgsums after copying PKGBUILD (requires pacman-contrib in the Action environment)' + required: false + default: 'false' + +runs: + using: composite + steps: + - name: Deploy via AUR Action (primary) + id: aur_action + continue-on-error: true + uses: KSXGitHub/github-actions-deploy-aur@v4.1.3 + with: + pkgname: ${{ inputs.pkgname }} + pkgbuild: ${{ inputs.pkgbuild }} + commit_username: ${{ inputs.commit_username }} + commit_email: ${{ inputs.commit_email }} + ssh_private_key: ${{ inputs.ssh_private_key }} + commit_message: ${{ inputs.commit_message }} + force_push: ${{ inputs.force_push }} + ssh_keyscan_types: rsa,ecdsa,ed25519 + updpkgsums: ${{ inputs.updpkgsums }} + + - name: Setup SSH key for fallback + if: steps.aur_action.outcome == 'failure' + shell: bash + run: | + mkdir -p ~/.ssh + echo "${{ inputs.ssh_private_key }}" > ~/.ssh/aur_key + chmod 600 ~/.ssh/aur_key + cat >> ~/.ssh/config << 'EOF' + Host aur.archlinux.org + IdentityFile ~/.ssh/aur_key + User aur + StrictHostKeyChecking no + EOF + + - name: Deploy via manual push (fallback) + id: aur_manual + continue-on-error: true + if: steps.aur_action.outcome == 'failure' + shell: bash + run: | + set -euo pipefail + echo "::warning::AUR Action failed, falling back to manual push" + + PKGBUILD_DIR="$(dirname "${{ inputs.pkgbuild }}")" + + cd /tmp + rm -rf aur-deploy + mkdir aur-deploy + cd aur-deploy + git clone ssh://aur@aur.archlinux.org/${{ inputs.pkgname }}.git . + git checkout -B master origin/master + + cp "$GITHUB_WORKSPACE/${{ inputs.pkgbuild }}" ./PKGBUILD + + if [[ "${{ inputs.regenerate_srcinfo }}" == "true" ]]; then + docker run --rm -v "$(pwd)":/pkg archlinux:latest \ + bash -c "useradd -m builder \ + && cp /pkg/PKGBUILD /home/builder/ \ + && su builder -c 'cd /home/builder && makepkg --printsrcinfo >> /pkg/.SRCINFO'" + fi + + git config user.name "${{ inputs.commit_username }}" + git config user.email "${{ inputs.commit_email }}" + + git add PKGBUILD + if [[ "${{ inputs.regenerate_srcinfo }}" == "true" ]]; then + git add .SRCINFO + fi + + git commit -m "${{ inputs.commit_message }}" || true + + if [[ "${{ inputs.force_push }}" == "true" ]]; then + git push origin master --force + else + git push origin master + fi + + - name: Verify deployment succeeded + if: steps.aur_action.outcome == 'failure' && steps.aur_manual.outcome == 'failure' + shell: bash + run: | + echo "::error::Both deployment paths failed for ${{ inputs.pkgname }}" + exit 1 \ No newline at end of file diff --git a/.github/actions/determine-version/action.yml b/.github/actions/determine-version/action.yml index 573f13a..ae0f8e9 100644 --- a/.github/actions/determine-version/action.yml +++ b/.github/actions/determine-version/action.yml @@ -1,6 +1,18 @@ name: Determine Version description: Extract and validate a semantic version from Directory.Build.props and optionally validate against a branch or tag name +inputs: + file-name: + description: The filename where the dotnet msbuild command can extract the version. Provide the full path from repo root! + required: false + default: 'Directory.Build.props' + + property: + description: The property where the dotnet msbuild command must look for the verison + required: false + default: 'BaseVersion' + + outputs: version: description: Extracted semantic version without leading v @@ -19,22 +31,22 @@ runs: run: | set -euo pipefail - FILE="Directory.Build.props" + FILE="${{ inputs.file-name }}" if [[ ! -f "$FILE" ]]; then echo "::error::$FILE not found" exit 1 fi - VERSION="$(dotnet msbuild "$FILE" -nologo -getProperty:BaseVersion | tr -d '\r')" + VERSION="$(dotnet msbuild "$FILE" -nologo -getProperty:${{ inputs.property }} | tr -d '\r')" if [[ -z "$VERSION" ]]; then - echo "::error::BaseVersion not found in $FILE" + echo "::error::${{ inputs.property }} not found in $FILE" exit 1 fi if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "::error::Invalid BaseVersion: $VERSION" + echo "::error::Invalid Property ${{ inputs.property }}: $VERSION" exit 1 fi diff --git a/.github/actions/dotnet-setup/action.yml b/.github/actions/dotnet-setup/action.yml index ac20840..fa575f3 100644 --- a/.github/actions/dotnet-setup/action.yml +++ b/.github/actions/dotnet-setup/action.yml @@ -3,16 +3,6 @@ description: > Checks out the repository, auto-detects the TargetFramework from Directory.Build.props, sets up the .NET SDK, and restores the NuGet cache. -inputs: - fetch-depth: - description: 'Number of commits to fetch (0 = full history, 1 = shallow)' - required: false - default: '1' - token: - description: 'GitHub token used for checkout' - required: false - default: ${{ github.token }} - outputs: dotnet-version: description: 'Resolved .NET version string, e.g. "10.0.x"' @@ -21,12 +11,6 @@ outputs: runs: using: composite steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: ${{ inputs.fetch-depth }} - token: ${{ inputs.token }} - - name: Detect TargetFramework from Directory.Build.props id: detect-tfm shell: bash @@ -46,12 +30,12 @@ runs: echo "::notice::Resolved .NET version: ${TFM}.x" - name: Setup .NET SDK - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: dotnet-version: ${{ steps.detect-tfm.outputs.version }} - name: Restore NuGet cache - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ~/.nuget/packages key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', '**/Directory.Packages.props', '**/Directory.Build.props') }} diff --git a/.github/actions/install-komac/action.yml b/.github/actions/install-komac/action.yml deleted file mode 100644 index 84cd3a0..0000000 --- a/.github/actions/install-komac/action.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: 'Install Komac' -description: > - Resolves and downloads the latest Komac (linux-amd64) release from GitHub - and makes it executable in the current working directory. - -outputs: - komac-path: - description: 'Absolute path to the komac binary' - value: ${{ steps.install.outputs.komac-path }} - -runs: - using: composite - steps: - - name: Resolve and download Komac - id: install - shell: bash - run: | - set -euo pipefail - - KOMAC_URL=$(curl -fsSL \ - https://api.github.com/repos/russellbanks/Komac/releases/latest \ - | grep -o '"browser_download_url": "[^"]*linux-amd64[^"]*"' \ - | grep -v '\.sha' \ - | head -1 \ - | cut -d'"' -f4) - - if [[ -z "$KOMAC_URL" ]]; then - echo "::error::Failed to resolve Komac download URL from GitHub Releases API" - exit 1 - fi - - echo "::notice::Downloading Komac from: $KOMAC_URL" - curl -fsSL "$KOMAC_URL" -o komac - chmod +x komac - ./komac --version - - echo "komac-path=$(pwd)/komac" >> "$GITHUB_OUTPUT" \ No newline at end of file diff --git a/.github/workflows/auto-tag.yml b/.github/workflows/auto-tag.yml index 58731cb..36e9f4a 100644 --- a/.github/workflows/auto-tag.yml +++ b/.github/workflows/auto-tag.yml @@ -2,17 +2,16 @@ name: Auto-Tag on Release Merge on: pull_request: - types: [ closed ] + types: [closed] branches: - master - - main permissions: contents: write pull-requests: write concurrency: - group: auto-tag-${{ github.ref }} + group: auto-tag-${{ github.event.pull_request.base.ref }} cancel-in-progress: false jobs: @@ -23,34 +22,21 @@ jobs: timeout-minutes: 10 steps: - - name: Checkout repository - uses: actions/checkout@v4 + - name: Checkout merge commit + uses: actions/checkout@v6 with: fetch-depth: 0 + ref: ${{ github.event.pull_request.merge_commit_sha }} token: ${{ secrets.PAT_TOKEN }} - name: Extract and validate version id: version uses: ./.github/actions/determine-version - - - name: Check if tag already exists - id: check - run: | - set -euo pipefail - if git rev-parse "refs/tags/${{ steps.version.outputs.tag }}" >/dev/null 2>&1; then - echo "exists=true" >> "$GITHUB_OUTPUT" - echo "::warning::Tag ${{ steps.version.outputs.tag }} already exists, skipping." - else - echo "exists=false" >> "$GITHUB_OUTPUT" - fi - - - name: Create and push tag - if: steps.check.outputs.exists == 'false' - run: | - set -euo pipefail - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - git tag -a "${{ steps.version.outputs.tag }}" \ - -m "Release ${{ steps.version.outputs.version }}" - git push origin "${{ steps.version.outputs.tag }}" - echo "::notice::Tag ${{ steps.version.outputs.tag }} pushed successfully." \ No newline at end of file + + - name: Create Tag Action + id: create_tag_action + uses: rickstaa/action-create-tag@v1 + with: + commit_sha: ${{ github.event.pull_request.merge_commit_sha }} + github_token: ${{ secrets.PAT_TOKEN }} + tag: ${{ steps.version.outputs.tag }} \ No newline at end of file diff --git a/.github/workflows/build-and-package.yml b/.github/workflows/build-and-package.yml index b058645..d1981cf 100644 --- a/.github/workflows/build-and-package.yml +++ b/.github/workflows/build-and-package.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 30 strategy: - fail-fast: false # One failing target must not kill the others + fail-fast: true # One failing target must kill the others matrix: include: - target: linux-x64 @@ -33,7 +33,7 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup .NET environment uses: ./.github/actions/dotnet-setup @@ -88,7 +88,7 @@ jobs: - name: Upload AppImage if: matrix.target == 'linux-x64' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: ${{ steps.appimage.outputs.appimage-name }} path: ${{ steps.appimage.outputs.appimage-name }} @@ -96,7 +96,7 @@ jobs: - name: Upload .desktop file if: matrix.target == 'linux-x64' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: io.github.frequency403.openssh_gui.desktop path: AppDir/usr/share/applications/io.github.frequency403.openssh_gui.desktop @@ -104,14 +104,14 @@ jobs: - name: Upload app icon if: matrix.target == 'linux-x64' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: appicon path: AppDir/appicon.png if-no-files-found: error - name: Upload platform binary - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: ${{ steps.rename.outputs.ASSET_NAME }} path: ./publish/${{ steps.rename.outputs.ASSET_NAME }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d4f2800..556f3a8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,7 +27,10 @@ jobs: tag: ${{ steps.version.outputs.tag }} steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 + with: + fetch-depth: '1' + ref: ${{ github.ref }} - name: Determine Version id: version @@ -49,10 +52,10 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Download all build artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: path: artifacts/ @@ -94,106 +97,8 @@ jobs: ls -lah release-assets/ - name: Publish GitHub Release - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@v3 with: tag_name: ${{ needs.prepare.outputs.tag }} files: release-assets/* - generate_release_notes: true - - deploy-aur: - name: Update AUR Packages - runs-on: ubuntu-latest - timeout-minutes: 15 - needs: [ test, prepare, release ] - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - - name: Download build artifacts - uses: actions/download-artifact@v4 - with: - path: artifacts/ - - - name: Prepare AUR assets and update PKGBUILDs - run: | - set -euo pipefail - rm -rf aur-assets - mkdir -p aur-assets - - find artifacts -type f | while read -r FILE; do - DEST="aur-assets/$(basename "$FILE")" - if [[ -f "$DEST" ]]; then - echo "::error::AUR artifact name collision: $(basename "$FILE")" - exit 1 - fi - cp "$FILE" "$DEST" - done - - # Assert all required AUR files are present - test -f aur-assets/OpenSSH-GUI-linux-x64 \ - || { echo "::error::Missing linux binary"; exit 1; } - test -f aur-assets/appicon.png \ - || { echo "::error::Missing appicon.png"; exit 1; } - test -f "aur-assets/io.github.frequency403.openssh_gui.desktop" \ - || { echo "::error::Missing .desktop file"; exit 1; } - test -f LICENSE \ - || { echo "::error::Missing LICENSE"; exit 1; } - - VERSION="${{ needs.prepare.outputs.version }}" - SHA_BIN=$(sha256sum aur-assets/OpenSSH-GUI-linux-x64 | cut -d' ' -f1) - SHA_ICON=$(sha256sum aur-assets/appicon.png | cut -d' ' -f1) - SHA_DESKTOP=$(sha256sum "aur-assets/io.github.frequency403.openssh_gui.desktop" | cut -d' ' -f1) - SHA_LICENSE=$(sha256sum LICENSE | cut -d' ' -f1) - - sed -i "s/^pkgver=.*/pkgver=$VERSION/" openssh-gui-bin/PKGBUILD - sed -i "s/^pkgrel=.*/pkgrel=1/" openssh-gui-bin/PKGBUILD - sed -i "s/^sha256sums=.*/sha256sums=('$SHA_BIN' '$SHA_ICON' '$SHA_DESKTOP' '$SHA_LICENSE')/" \ - openssh-gui-bin/PKGBUILD - - sed -i "s/^pkgver=.*/pkgver=$VERSION/" openssh-gui-git/PKGBUILD - sed -i "s/^pkgrel=.*/pkgrel=1/" openssh-gui-git/PKGBUILD - - echo "Updated PKGBUILDs:" - grep -E '^(pkgver=|pkgrel=|sha256sums=)' openssh-gui-bin/PKGBUILD - - - name: Publish AUR (openssh-gui-bin) - uses: KSXGitHub/github-actions-deploy-aur@v4.1.1 - with: - pkgname: openssh-gui-bin - pkgbuild: ./openssh-gui-bin/PKGBUILD - commit_username: ${{ github.repository_owner }} - commit_email: ${{ github.repository_owner }}@users.noreply.github.com - ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} - commit_message: "Update to ${{ needs.prepare.outputs.tag }}" - - - name: Publish AUR (openssh-gui-git) - uses: KSXGitHub/github-actions-deploy-aur@v4.1.1 - with: - pkgname: openssh-gui-git - pkgbuild: ./openssh-gui-git/PKGBUILD - commit_username: ${{ github.repository_owner }} - commit_email: ${{ github.repository_owner }}@users.noreply.github.com - ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} - commit_message: "Update to ${{ needs.prepare.outputs.tag }}" - - winget: - name: Update Winget Package - runs-on: ubuntu-slim - timeout-minutes: 10 - needs: [ test, prepare, release ] - - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - - - name: Update Winget manifest - uses: vedantmgoyal9/winget-releaser@main - with: - identifier: frequency403.OpenSSHGUI - version: ${{ needs.prepare.outputs.version }} - release-tag: ${{ needs.prepare.outputs.tag }} - installers-regex: 'win-x64\.exe$' - token: ${{ secrets.WINGET_GITHUB_TOKEN }} + generate_release_notes: true \ No newline at end of file diff --git a/.github/workflows/deploy-release.yml b/.github/workflows/deploy-release.yml new file mode 100644 index 0000000..56bab68 --- /dev/null +++ b/.github/workflows/deploy-release.yml @@ -0,0 +1,85 @@ +name: Deploy release to consumers + +on: + release: + types: [released] + +permissions: + contents: read + +jobs: + get_version: + name: Extract Version + runs-on: ubuntu-latest + outputs: + version: ${{ steps.parse.outputs.version }} + tag: ${{ steps.parse.outputs.tag }} + + steps: + - name: Parse release metadata + id: parse + run: | + set -euo pipefail + + TAG="${{ github.event.release.tag_name }}" + VERSION="${TAG#v}" + + echo "version=$VERSION" >> "$GITHUB_OUTPUT" + echo "tag=$TAG" >> "$GITHUB_OUTPUT" + + aur_publish: + name: Publish AUR packages + runs-on: ubuntu-latest + timeout-minutes: 10 + needs: get_version + + steps: + - name: Checkout PKGBUILD only + uses: actions/checkout@v6 + with: + ref: ${{ github.event.release.tag_name }} + fetch-depth: 1 + sparse-checkout-cone-mode: false + sparse-checkout: | + openssh-gui-bin/PKGBUILD + + - name: Update PKGBUILD version + run: | + set -euo pipefail + + VERSION="${{ needs.get_version.outputs.version }}" + + sed -i "s/^pkgver=.*/pkgver=$VERSION/" openssh-gui-bin/PKGBUILD + sed -i "s/^pkgrel=.*/pkgrel=1/" openssh-gui-bin/PKGBUILD + + - name: Deploy to AUR + uses: ./.github/actions/deploy-aur + with: + pkgname: openssh-gui-bin + pkgbuild: openssh-gui-bin/PKGBUILD + ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} + commit_username: ${{ github.repository_owner }} + commit_email: ${{ github.repository_owner }}@users.noreply.github.com + commit_message: "Update to ${{ needs.get_version.outputs.tag }}" + force_push: 'false' + regenerate_srcinfo: 'false' + updpkgsums: 'true' + + winget_publish: + name: Update Winget Package + runs-on: ubuntu-slim + needs: get_version + timeout-minutes: 10 + steps: + - name: Checkout repository + uses: actions/checkout@v6 + + - name: Update Winget manifest + uses: vedantmgoyal9/winget-releaser@main + with: + max-versions-to-keep: 5 + identifier: frequency403.OpenSSHGUI + version: ${{ needs.get_version.outputs.version }} + release-tag: ${{ needs.get_version.outputs.tag }} + installers-regex: 'win-x64\.exe$' + token: ${{ secrets.WINGET_GITHUB_TOKEN }} diff --git a/.github/workflows/staging.yml b/.github/workflows/staging.yml index 06cd6a8..f953da4 100644 --- a/.github/workflows/staging.yml +++ b/.github/workflows/staging.yml @@ -10,7 +10,7 @@ permissions: concurrency: group: staging-${{ github.ref }} - cancel-in-progress: true # Supersede previous run on rapid pushes + cancel-in-progress: true jobs: test: @@ -28,7 +28,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Determine Version id: version @@ -42,30 +42,31 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: - fetch-depth: 1 + fetch-depth: 0 - - name: Update openssh-gui-git PKGBUILD + - name: Update PKGBUILD run: | set -euo pipefail DATE=$(date +%Y%m%d) HASH=$(git rev-parse --short HEAD) - # pkgver must only contain [a-zA-Z0-9._] — no + or - AUR_VERSION="${{ needs.prepare.outputs.version }}.${DATE}.${HASH}" sed -i "s/^pkgver=.*/pkgver=$AUR_VERSION/" openssh-gui-git/PKGBUILD - sed -i "s/^pkgrel=.*/pkgrel=1/" openssh-gui-git/PKGBUILD + sed -i "s/^pkgrel=.*/pkgrel=1/" openssh-gui-git/PKGBUILD echo "Updated PKGBUILD:" grep -E '^(pkgver=|pkgrel=)' openssh-gui-git/PKGBUILD - - name: Publish AUR (openssh-gui-git) - uses: KSXGitHub/github-actions-deploy-aur@v4.1.1 + - name: Deploy to AUR + uses: ./.github/actions/deploy-aur with: pkgname: openssh-gui-git - pkgbuild: ./openssh-gui-git/PKGBUILD + pkgbuild: openssh-gui-git/PKGBUILD + ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} commit_username: ${{ github.repository_owner }} commit_email: ${{ github.repository_owner }}@users.noreply.github.com - ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} commit_message: "Development update ${{ needs.prepare.outputs.tag }}" + force_push: 'true' + regenerate_srcinfo: 'true' \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 060c411..124ee6a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup .NET environment uses: ./.github/actions/dotnet-setup diff --git a/Directory.Build.props b/Directory.Build.props index 9965a13..68eec9f 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -5,7 +5,7 @@ enable default https://github.com/frequency403/OpenSSH-GUI - 3.1.6 + 3.1.7 true diff --git a/openssh-gui-bin/PKGBUILD b/openssh-gui-bin/PKGBUILD index 34b33f6..28501eb 100644 --- a/openssh-gui-bin/PKGBUILD +++ b/openssh-gui-bin/PKGBUILD @@ -12,28 +12,11 @@ options=('!strip') provides=('openssh-gui') conflicts=('openssh-gui' 'openssh-gui-git' 'openssh-gui-nightly') -_relurl="https://github.com/frequency403/OpenSSH-GUI/releases/download/v${pkgver}" -_rawurl="https://raw.githubusercontent.com/frequency403/OpenSSH-GUI/v${pkgver}" - source=( - "${pkgname}-${pkgver}::${_relurl}/OpenSSH-GUI-linux-x64" - "${pkgname}-icon-${pkgver}.png::${_relurl}/appicon.png" - "${pkgname}-desktop-${pkgver}.desktop::${_relurl}/io.github.frequency403.openssh_gui.desktop" - "${pkgname}-license-${pkgver}::${_rawurl}/LICENSE" + "openssh-gui::https://github.com/frequency403/OpenSSH-GUI/releases/download/v${pkgver}/OpenSSH-GUI-linux-x64" + "openssh-gui-icon::https://github.com/frequency403/OpenSSH-GUI/releases/download/v${pkgver}/appicon.png" + "openssh-gui-desktop::https://github.com/frequency403/OpenSSH-GUI/releases/download/v${pkgver}/io.github.frequency403.openssh_gui.desktop" + "LICENSE::https://raw.githubusercontent.com/frequency403/OpenSSH-GUI/v${pkgver}/LICENSE" ) -sha256sums=('SKIP' 'SKIP' 'SKIP' 'SKIP') - -package() { - install -Dm755 "${srcdir}/${pkgname}-${pkgver}" \ - "${pkgdir}/usr/bin/openssh-gui" - - install -Dm644 "${srcdir}/${pkgname}-icon-${pkgver}.png" \ - "${pkgdir}/usr/share/icons/hicolor/256x256/apps/openssh-gui.png" - - install -Dm644 "${srcdir}/${pkgname}-desktop-${pkgver}.desktop" \ - "${pkgdir}/usr/share/applications/io.github.frequency403.openssh_gui.desktop" - - install -Dm644 "${srcdir}/${pkgname}-license-${pkgver}" \ - "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" -} \ No newline at end of file +sha256sums=('SKIP' 'SKIP' 'SKIP' 'SKIP') \ No newline at end of file