Files
apidash/doc/dev_guide/packaging.md

7.6 KiB

Packaging API Dash

Windows

Packaging and Distributing Flutter Desktop Apps : Creating Windows .exe installer

macOS

Packaging and Distributing Flutter Desktop Apps: Creating macOS .app & .dmg

Linux Debian (.deb) & RPM (.rpm)

Packaging and Distributing Flutter Desktop Apps: Creating Linux Debian (.deb) & RPM (.rpm) builds

Arch Linux (PKGBUILD)

Steps to update and release the Arch Linux package

  1. Install required packages:
sudo pacman -S base-devel
  1. Clone the ApiDash AUR repository:
git clone https://aur.archlinux.org/apidash-bin.git
cd apidash-bin
  1. Get the recent .deb release from the releases page

  2. Generate new checksums:

sha512sum apidash-linux-amd64.deb LICENSE
  1. Update the PKGBUILD file:
  • Change pkgver to the new version
  • Reset pkgrel to 1
  • Update sha512sums with the new checksums
  1. Build the package
# Clean build files (if they exist from previous builds)
# rm -rf pkg/ src/

# Build and install the package
makepkg -si
  1. Update .SRCINFO:
makepkg --printsrcinfo > .SRCINFO
  1. Commit and push the changes:
git add PKGBUILD .SRCINFO
git commit -m "Update to v[NEW_VERSION]"
git push

FlatHub (Flatpak)

Steps to generate .flatpak package of API Dash:

  1. Clone and build API Dash:

Follow the How to run API Dash locally guide.

Stay in the root folder of the project directory.

  1. Install Required Packages (Debian/Ubuntu):
sudo apt install flatpak
flatpak install -y flathub org.flatpak.Builder
flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo

*if using another linux distro, download flatpak and follow the rest of the steps.

  1. Build API Dash project:
flutter build linux --release
  1. Create flatpak manifest file:
touch apidash-flatpak.yaml

in this file, add:

app-id: io.github.foss42.apidash
runtime: org.freedesktop.Platform
runtime-version: "23.08"
sdk: org.freedesktop.Sdk

command: /app/bundle/apidash
finish-args:
  - --share=ipc
  - --socket=fallback-x11
  - --socket=wayland
  - --device=dri
  - --socket=pulseaudio
  - --share=network
  - --filesystem=home
modules:
  - name: apidash
    buildsystem: simple
    build-commands:
      - cp -a build/linux/x64/release/bundle /app/bundle
    sources:
      - type: dir
        path: .
  1. Create the .flatpak file:
flatpak run org.flatpak.Builder --force-clean --sandbox --user --install --install-deps-from=flathub --ccache --mirror-screenshots-url=https://dl.flathub.org/media/ --repo=repo builddir apidash-flatpak.yaml

flatpak build-bundle repo apidash.flatpak io.github.foss42.apidash

The apidash.flatpak file should be the project root folder.

To test it:

flatpak install --user apidash.flatpak

flatpak run io.github.foss42.apidash

To uninstall it:

flatpak uninstall io.github.foss42.apidash

Homebrew

Homebrew Formula Submission

1. Prepare Tap Repository

# Create Homebrew tap
gh repo create homebrew-tap --public --clone
mkdir -p homebrew-tap/Formula
cd homebrew-tap

2. Package apidash

# Build macOS bundle
flutter build macos

# Create versioned tarball
tar -czvf apidash-v1.0.0.tar.gz \
  -C build/macos/Build/Products/Release/ \
  Apidash.app

# Generate SHA256 checksum
shasum -a 256 apidash-v1.0.0.tar.gz

3. Create Formula File

Formula/apidash.rb:

class Apidash < Formula
  desc "Modern API dashboard for developers"
  homepage "https://apidash.dev"
  url "https://github.com/<user>/<repo>/releases/download/v1.0.0/apidash-v1.0.0.tar.gz"
  sha256 "PASTE_YOUR_SHA256_HERE"

  def install
    prefix.install "Apidash.app"
    bin.write_exec_script prefix/"Apidash.app/Contents/MacOS/Apidash"
  end

  test do
    system "#{bin}/Apidash", "--version"
  end
end

4. Local Validation

# Check formula syntax
brew audit --strict Formula/apidash.rb

# Test installation
brew install --build-from-source Formula/apidash.rb

# Verify execution
brew test apidash

5. Custom Tap Submission

# Commit formula to your tap repo
git add Formula/Apidash.rb
git commit -m "added apidash formula"
git push

# Create release for tarball
gh release create v1.0.0 apidash-v1.0.0.tar.gz

6. Installation

brew tap homebrew-tap/Formula
brew install apidash

Chocolatey

Step 1: Setup Skeleton

First step towards making a choco package is initializing a base.

The command choco new -h can teach you more about the new command, its usage, options, switches, and exit codes.

Run the following command to setup the base

choco new --name="apidash" --version="0.3.0" maintainername="foss42" maintainerrepo="https://github.com/foss42/apidash" --built-in-template

choco folder structure

This creates the following folder structure

apidash
├── ReadMe.md
├── _TODO.txt
├── apidash.nuspec
└── tools
    ├── chocolateybeforemodify.ps1
    ├── chocolateyinstall.ps1
    ├── chocolateyuninstall.ps1
    ├── LICENSE.txt
    └── VERIFICATION.txt

The files ReadMe.md and _TODO.md can be deleted before pushing.

The files of our main interest are chocolateyinstall.ps1 and apidash.nuspec.

Step 2: Editing chocolateyinstall.ps1

Take a look at chocolateyinstall.ps1 file. There are many comments stating the use case of each line itself. chocolatelyinstall.ps1

Comments can bre remoed using the following command.

$f='apidash\tools\chocolateyinstall.ps1'
gc $f | ? {$_ -notmatch "^\s*#"} | % {$_ -replace '(^.*?)\s*? [^``]#.*','$1'} | Out-File $f+".~" -en utf8; mv -fo $f+".~" $f

Now our chocolateyinstall.ps1 file is ready.

Step 3: Editing apidash.nuspec

final apidash.nuspec

Step 4: Build the package

All our files are ready, we just need to pack out files in a choco package with the extension .nupkg.

Run the following command from the root of your directory:

choco pack 

This command generates the apidash.0.3.0.nupkg file.

Step 5: Test the Package Locally

Install the package locally using Chocolatey:

choco install apidash -s .

Ensure the application installs correctly.

Shell output

Step 6: Pre-Publishing - Update LICENSE.txt & VERIFICATION.txt

Update LICENSE.txt with the actual **LICENSE **and VERIFICATION.txt accordingly.

Step 7: Publish the Package (Optional)

To share the package, you can push it to a Chocolatey repository. For the official Chocolatey Community Repository, follow these steps:

  1. Create an account on the Chocolatey Community.
  2. Get an API key by navigating to your profile.
  3. Use the following command to push your package:
choco push apidash.0.3.0.nupkg --source="https://push.chocolatey.org/" --api-key="YOUR_API_KEY"

WinGet

TODo Instructions