7.6 KiB
Packaging API Dash
- Windows
- macOS
- Linux Debian (.deb) & RPM (.rpm)
- Arch Linux (PKGBUILD)
- FlatHub (Flatpak)
- Homebrew
- Chocolatey
- WinGet
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
- Install required packages:
sudo pacman -S base-devel
- Clone the ApiDash AUR repository:
git clone https://aur.archlinux.org/apidash-bin.git
cd apidash-bin
-
Get the recent
.deb
release from the releases page -
Generate new checksums:
sha512sum apidash-linux-amd64.deb LICENSE
- Update the
PKGBUILD
file:
- Change
pkgver
to the new version - Reset
pkgrel
to 1 - Update
sha512sums
with the new checksums
- Build the package
# Clean build files (if they exist from previous builds)
# rm -rf pkg/ src/
# Build and install the package
makepkg -si
- Update .SRCINFO:
makepkg --printsrcinfo > .SRCINFO
- 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:
- Clone and build API Dash:
Follow the How to run API Dash locally guide.
Stay in the root folder of the project directory.
- 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.
- Build API Dash project:
flutter build linux --release
- 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: .
- 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
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.
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
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.
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:
- Create an account on the Chocolatey Community.
- Get an API key by navigating to your profile.
- 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