Skip to content

Commit df50009

Browse files
feat(packaging): update packaging for version 1.1.1 across multiple formats
1 parent 18c9a65 commit df50009

15 files changed

Lines changed: 451 additions & 0 deletions

.github/workflows/release.yml

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,163 @@ jobs:
7272
with:
7373
generate_release_notes: true
7474
files: mdterm-*
75+
76+
publish-packages:
77+
needs: release
78+
runs-on: ubuntu-latest
79+
80+
steps:
81+
- uses: actions/checkout@v4
82+
83+
- name: Download release artifacts
84+
uses: actions/download-artifact@v4
85+
with:
86+
path: ./artifacts
87+
88+
- name: Package artifacts
89+
run: |
90+
cd artifacts
91+
[ -d mdterm-win-x64 ] && zip -r ../mdterm-win-x64.zip mdterm-win-x64/
92+
[ -d mdterm-linux-x64 ] && tar czf ../mdterm-linux-x64.tar.gz mdterm-linux-x64/
93+
[ -d mdterm-osx-x64 ] && tar czf ../mdterm-osx-x64.tar.gz mdterm-osx-x64/
94+
[ -d mdterm-osx-arm64 ] && tar czf ../mdterm-osx-arm64.tar.gz mdterm-osx-arm64/
95+
96+
- name: Extract version
97+
id: version
98+
run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
99+
100+
- name: Compute SHA256 hashes
101+
id: hashes
102+
run: |
103+
echo "win_x64=$(sha256sum mdterm-win-x64.zip | awk '{print $1}')" >> "$GITHUB_OUTPUT"
104+
echo "linux_x64=$(sha256sum mdterm-linux-x64.tar.gz | awk '{print $1}')" >> "$GITHUB_OUTPUT"
105+
echo "osx_x64=$(sha256sum mdterm-osx-x64.tar.gz | awk '{print $1}')" >> "$GITHUB_OUTPUT"
106+
echo "osx_arm64=$(sha256sum mdterm-osx-arm64.tar.gz | awk '{print $1}')" >> "$GITHUB_OUTPUT"
107+
108+
- name: Render packaging templates
109+
run: |
110+
VERSION="${{ steps.version.outputs.version }}"
111+
112+
render() {
113+
sed \
114+
-e "s/VERSION_PLACEHOLDER/${VERSION}/g" \
115+
-e "s/SHA256_PLACEHOLDER/${{ steps.hashes.outputs.win_x64 }}/g" \
116+
-e "s/SHA256_ARM64_PLACEHOLDER/${{ steps.hashes.outputs.osx_arm64 }}/g" \
117+
-e "s/SHA256_X64_PLACEHOLDER/${{ steps.hashes.outputs.osx_x64 }}/g" \
118+
-e "s/SHA256_LINUX_PLACEHOLDER/${{ steps.hashes.outputs.linux_x64 }}/g" \
119+
"$1"
120+
}
121+
122+
# Winget
123+
mkdir -p rendered/winget
124+
for f in packaging/winget/*; do
125+
render "$f" > "rendered/winget/$(basename "$f")"
126+
done
127+
128+
# Scoop
129+
mkdir -p rendered/scoop
130+
render packaging/scoop/mdterm.json > rendered/scoop/mdterm.json
131+
132+
# Chocolatey
133+
mkdir -p rendered/chocolatey/tools
134+
render packaging/chocolatey/mdterm.nuspec > rendered/chocolatey/mdterm.nuspec
135+
render packaging/chocolatey/tools/chocolateyInstall.ps1 > rendered/chocolatey/tools/chocolateyInstall.ps1
136+
137+
# Homebrew
138+
mkdir -p rendered/homebrew
139+
render packaging/homebrew/mdterm.rb > rendered/homebrew/mdterm.rb
140+
141+
# AUR
142+
mkdir -p rendered/aur
143+
render packaging/aur/PKGBUILD > rendered/aur/PKGBUILD
144+
render packaging/aur/.SRCINFO > rendered/aur/.SRCINFO
145+
146+
- name: Commit rendered packaging
147+
run: |
148+
git config user.name "github-actions[bot]"
149+
git config user.email "github-actions[bot]@users.noreply.github.com"
150+
cp -r rendered/* packaging/
151+
git add packaging/
152+
git diff --cached --quiet || git commit -m "chore: update packaging for v${{ steps.version.outputs.version }}"
153+
git push
154+
155+
# ── Winget ──────────────────────────────────────────────
156+
- name: Publish to Winget
157+
uses: vedantmgoyal9/winget-releaser@v2
158+
with:
159+
identifier: fasterinnerlooper.mdterm
160+
installers-regex: '\.zip$'
161+
token: ${{ secrets.WINGET_TOKEN }}
162+
continue-on-error: true
163+
164+
# ── Scoop ───────────────────────────────────────────────
165+
- name: Publish to Scoop bucket
166+
if: ${{ secrets.SCOOP_BUCKET_TOKEN != '' }}
167+
run: |
168+
git clone "https://x-access-token:${{ secrets.SCOOP_BUCKET_TOKEN }}@github.com/fasterinnerlooper/scoop-bucket.git" scoop-bucket
169+
cp rendered/scoop/mdterm.json scoop-bucket/bucket/
170+
cd scoop-bucket
171+
git config user.name "github-actions[bot]"
172+
git config user.email "github-actions[bot]@users.noreply.github.com"
173+
git add bucket/mdterm.json
174+
git commit -m "mdterm: update to v${{ steps.version.outputs.version }}"
175+
git push
176+
continue-on-error: true
177+
178+
# ── Chocolatey ──────────────────────────────────────────
179+
- name: Publish to Chocolatey
180+
if: ${{ secrets.CHOCOLATEY_API_KEY != '' }}
181+
run: |
182+
sudo apt-get update && sudo apt-get install -y mono-devel nuget
183+
nuget pack rendered/chocolatey/mdterm.nuspec -OutputDirectory rendered/chocolatey
184+
nuget push rendered/chocolatey/mdterm.*.nupkg \
185+
-Source "https://push.chocolatey.org/" \
186+
-ApiKey "${{ secrets.CHOCOLATEY_API_KEY }}"
187+
continue-on-error: true
188+
189+
# ── Homebrew ────────────────────────────────────────────
190+
- name: Publish to Homebrew tap
191+
if: ${{ secrets.HOMEBREW_TAP_TOKEN != '' }}
192+
run: |
193+
git clone "https://x-access-token:${{ secrets.HOMEBREW_TAP_TOKEN }}@github.com/fasterinnerlooper/homebrew-tap.git" homebrew-tap
194+
cp rendered/homebrew/mdterm.rb homebrew-tap/Formula/
195+
cd homebrew-tap
196+
git config user.name "github-actions[bot]"
197+
git config user.email "github-actions[bot]@users.noreply.github.com"
198+
git add Formula/mdterm.rb
199+
git commit -m "mdterm: update to v${{ steps.version.outputs.version }}"
200+
git push
201+
continue-on-error: true
202+
203+
# ── Snap Store ──────────────────────────────────────────
204+
- name: Prepare Snap build
205+
if: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS != '' }}
206+
run: mkdir -p snap && cp packaging/snap/snapcraft.yaml snap/snapcraft.yaml
207+
- name: Build Snap package
208+
if: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS != '' }}
209+
id: snap_build
210+
uses: snapcore/action-build@v1
211+
- name: Publish to Snap Store
212+
if: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS != '' }}
213+
uses: snapcore/action-publish@v1
214+
with:
215+
store: stable
216+
snap: ${{ steps.snap_build.outputs.snap }}
217+
release: stable
218+
env:
219+
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
220+
continue-on-error: true
221+
222+
# ── AUR ─────────────────────────────────────────────────
223+
- name: Publish to AUR
224+
if: ${{ secrets.AUR_SSH_PRIVATE_KEY != '' }}
225+
uses: KSXGitHub/github-actions-deploy-aur@v4.1.1
226+
with:
227+
pkgname: mdterm
228+
pkgbuild: ./rendered/aur/PKGBUILD
229+
srcinfo: ./rendered/aur/.SRCINFO
230+
commit_username: "mdterm-bot"
231+
commit_email: "bot@mdterm.dev"
232+
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
233+
commit_message: "Update to v${{ steps.version.outputs.version }}"
234+
continue-on-error: true
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Created using wingetcreate 1.12.8.0
2+
# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.12.0.schema.json
3+
4+
PackageIdentifier: fasterinnerlooper.mdterm
5+
PackageVersion: 1.1.1
6+
InstallerType: zip
7+
NestedInstallerType: exe
8+
NestedInstallerFiles:
9+
- RelativeFilePath: mdterm-win-x64\MdTerm.exe
10+
InstallerSwitches:
11+
Silent: unzip
12+
SilentWithProgress: unzip
13+
Installers:
14+
- Architecture: x64
15+
InstallerUrl: https://github.com/fasterinnerlooper/mdterm/releases/download/v1.1.1/mdterm-win-x64.zip
16+
InstallerSha256: 64ECC03E36DAD0E6B7BC505F5B62EB3D80C0281785A4158DFD1E5414DF4CCC1A
17+
ManifestType: installer
18+
ManifestVersion: 1.12.0
19+
ReleaseDate: 2026-03-28
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Created using wingetcreate 1.12.8.0
2+
# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.12.0.schema.json
3+
4+
PackageIdentifier: fasterinnerlooper.mdterm
5+
PackageVersion: 1.1.1
6+
PackageLocale: en
7+
Publisher: FasterInnerLooper
8+
PublisherUrl: https://github.com/fasterinnerlooper
9+
PublisherSupportUrl: https://github.com/fasterinnerlooper/mdterm/issues
10+
PackageName: MDTerm
11+
PackageUrl: https://github.com/fasterinnerlooper/mdterm
12+
License: MIT
13+
ShortDescription: A terminal renderer for markdown files
14+
ReleaseNotesUrl: https://github.com/fasterinnerlooper/mdterm/releases/tag/v1.1.1
15+
Documentations:
16+
- DocumentLabel: Wiki
17+
DocumentUrl: https://github.com/fasterinnerlooper/mdterm/wiki
18+
ManifestType: defaultLocale
19+
ManifestVersion: 1.12.0
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Created using wingetcreate 1.12.8.0
2+
# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.12.0.schema.json
3+
4+
PackageIdentifier: fasterinnerlooper.mdterm
5+
PackageVersion: 1.1.1
6+
DefaultLocale: en
7+
ManifestType: version
8+
ManifestVersion: 1.12.0

packaging/aur/.SRCINFO

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
pkgbase = mdterm
2+
pkgdesc = Render Markdown files beautifully in the terminal
3+
pkgver = VERSION_PLACEHOLDER
4+
pkgrel =1
5+
url = https://github.com/fasterinnerlooper/mdterm
6+
arch = x86_64
7+
license = MIT
8+
depends = glibc
9+
source = https://github.com/fasterinnerlooper/mdterm/releases/download/vVERSION_PLACEHOLDER/mdterm-linux-x64.tar.gz
10+
sha256sums = SHA256_PLACEHOLDER
11+
12+
pkgname = mdterm

packaging/aur/PKGBUILD

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Maintainer: fasterinnerlooper
2+
pkgname=mdterm
3+
pkgver=VERSION_PLACEHOLDER
4+
pkgrel=1
5+
pkgdesc="Render Markdown files beautifully in the terminal"
6+
arch=('x86_64')
7+
url="https://github.com/fasterinnerlooper/mdterm"
8+
license=('MIT')
9+
depends=('glibc')
10+
source=("https://github.com/fasterinnerlooper/mdterm/releases/download/v${pkgver}/mdterm-linux-x64.tar.gz")
11+
sha256sums=('SHA256_PLACEHOLDER')
12+
13+
package() {
14+
install -Dm755 "$srcdir/mdterm-linux-x64/mdterm" "$pkgdir/usr/bin/mdterm"
15+
}

packaging/chocolatey/mdterm.nuspec

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<package xmlns="http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd">
3+
<metadata>
4+
<id>mdterm</id>
5+
<version>VERSION_PLACEHOLDER</version>
6+
<title>MdTerm</title>
7+
<authors>fasterinnerlooper</authors>
8+
<projectUrl>https://github.com/fasterinnerlooper/mdterm</projectUrl>
9+
<licenseUrl>https://github.com/fasterinnerlooper/mdterm/blob/main/LICENSE</licenseUrl>
10+
<requireLicenseAcceptance>false</requireLicenseAcceptance>
11+
<description>MdTerm renders Markdown files as formatted, styled output directly in your terminal. Supports headings, code blocks, tables, lists, and multiple ASCII art styles.</description>
12+
<summary>Render Markdown files beautifully in the terminal</summary>
13+
<tags>markdown terminal cli renderer tui</tags>
14+
<packageSourceUrl>https://github.com/fasterinnerlooper/mdterm</packageSourceUrl>
15+
<bugTrackerUrl>https://github.com/fasterinnerlooper/mdterm/issues</bugTrackerUrl>
16+
</metadata>
17+
<files>
18+
<file src="tools\**" target="tools" />
19+
</files>
20+
</package>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
$ErrorActionPreference = 'Stop'
2+
3+
$packageName = 'mdterm'
4+
$url64 = 'https://github.com/fasterinnerlooper/mdterm/releases/download/vVERSION_PLACEHOLDER/mdterm-win-x64.zip'
5+
$checksum64 = 'SHA256_PLACEHOLDER'
6+
7+
$packageArgs = @{
8+
packageName = $packageName
9+
unzipLocation = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
10+
url64bit = $url64
11+
checksum64 = $checksum64
12+
checksumType64 = 'sha256'
13+
}
14+
15+
Install-ChocolateyZipPackage @packageArgs
16+
17+
$installPath = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
18+
Install-ChocolateyPath -PathToInstall $installPath -PathType 'User'

packaging/homebrew/mdterm.rb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Mdterm < Formula
2+
desc "Render Markdown files beautifully in the terminal"
3+
homepage "https://github.com/fasterinnerlooper/mdterm"
4+
license "MIT"
5+
6+
on_macos do
7+
on_arm do
8+
url "https://github.com/fasterinnerlooper/mdterm/releases/download/vVERSION_PLACEHOLDER/mdterm-osx-arm64.tar.gz"
9+
sha256 "SHA256_ARM64_PLACEHOLDER"
10+
end
11+
12+
on_intel do
13+
url "https://github.com/fasterinnerlooper/mdterm/releases/download/vVERSION_PLACEHOLDER/mdterm-osx-x64.tar.gz"
14+
sha256 "SHA256_X64_PLACEHOLDER"
15+
end
16+
end
17+
18+
on_linux do
19+
url "https://github.com/fasterinnerlooper/mdterm/releases/download/vVERSION_PLACEHOLDER/mdterm-linux-x64.tar.gz"
20+
sha256 "SHA256_LINUX_PLACEHOLDER"
21+
end
22+
23+
def install
24+
bin.install "mdterm"
25+
end
26+
27+
test do
28+
assert_match "mdterm", shell_output("#{bin}/mdterm --version")
29+
end
30+
end

packaging/scoop/mdterm.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"version": "VERSION_PLACEHOLDER",
3+
"description": "Render Markdown files beautifully in the terminal",
4+
"homepage": "https://github.com/fasterinnerlooper/mdterm",
5+
"license": "MIT",
6+
"architecture": {
7+
"64bit": {
8+
"url": "https://github.com/fasterinnerlooper/mdterm/releases/download/vVERSION_PLACEHOLDER/mdterm-win-x64.zip",
9+
"hash": "SHA256_PLACEHOLDER",
10+
"extract_dir": "mdterm-win-x64"
11+
}
12+
},
13+
"bin": "mdterm.exe",
14+
"checkver": {
15+
"github": "https://github.com/fasterinnerlooper/mdterm"
16+
},
17+
"autoupdate": {
18+
"architecture": {
19+
"64bit": {
20+
"url": "https://github.com/fasterinnerlooper/mdterm/releases/download/v$version/mdterm-win-x64.zip"
21+
}
22+
}
23+
}
24+
}

0 commit comments

Comments
 (0)