mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-20 03:16:46 -07:00
chore: prepare v0.6.4 release
This commit is contained in:
@@ -54,6 +54,7 @@ fi
|
||||
|
||||
version="${version#v}"
|
||||
pkgbuild="${pkg_dir}/PKGBUILD"
|
||||
srcinfo="${pkg_dir}/.SRCINFO"
|
||||
|
||||
if [[ ! -f "$pkgbuild" ]]; then
|
||||
echo "Missing PKGBUILD at $pkgbuild" >&2
|
||||
@@ -118,7 +119,96 @@ awk \
|
||||
' "$pkgbuild" > "$tmpfile"
|
||||
mv "$tmpfile" "$pkgbuild"
|
||||
|
||||
(
|
||||
cd "$pkg_dir"
|
||||
makepkg --printsrcinfo > .SRCINFO
|
||||
)
|
||||
if [[ ! -f "$srcinfo" ]]; then
|
||||
echo "Missing .SRCINFO at $srcinfo" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
tmpfile="$(mktemp)"
|
||||
awk \
|
||||
-v version="$version" \
|
||||
-v sum_appimage="${sha256sums[0]}" \
|
||||
-v sum_wrapper="${sha256sums[1]}" \
|
||||
-v sum_assets="${sha256sums[2]}" \
|
||||
'
|
||||
BEGIN {
|
||||
sha_index = 0
|
||||
found_pkgver = 0
|
||||
found_provides = 0
|
||||
found_noextract = 0
|
||||
found_source_appimage = 0
|
||||
found_source_wrapper = 0
|
||||
found_source_assets = 0
|
||||
}
|
||||
/^\tpkgver = / {
|
||||
print "\tpkgver = " version
|
||||
found_pkgver = 1
|
||||
next
|
||||
}
|
||||
/^\tprovides = subminer=/ {
|
||||
print "\tprovides = subminer=" version
|
||||
found_provides = 1
|
||||
next
|
||||
}
|
||||
/^\tnoextract = SubMiner-.*\.AppImage$/ {
|
||||
print "\tnoextract = SubMiner-" version ".AppImage"
|
||||
found_noextract = 1
|
||||
next
|
||||
}
|
||||
/^\tsource = SubMiner-.*\.AppImage::https:\/\/github\.com\/ksyasuda\/SubMiner\/releases\/download\/v.*\/SubMiner-.*\.AppImage$/ {
|
||||
print "\tsource = SubMiner-" version ".AppImage::https://github.com/ksyasuda/SubMiner/releases/download/v" version "/SubMiner-" version ".AppImage"
|
||||
found_source_appimage = 1
|
||||
next
|
||||
}
|
||||
/^\tsource = subminer::https:\/\/github\.com\/ksyasuda\/SubMiner\/releases\/download\/v.*\/subminer$/ {
|
||||
print "\tsource = subminer::https://github.com/ksyasuda/SubMiner/releases/download/v" version "/subminer"
|
||||
found_source_wrapper = 1
|
||||
next
|
||||
}
|
||||
/^\tsource = subminer-assets\.tar\.gz::https:\/\/github\.com\/ksyasuda\/SubMiner\/releases\/download\/v.*\/subminer-assets\.tar\.gz$/ {
|
||||
print "\tsource = subminer-assets.tar.gz::https://github.com/ksyasuda/SubMiner/releases/download/v" version "/subminer-assets.tar.gz"
|
||||
found_source_assets = 1
|
||||
next
|
||||
}
|
||||
/^\tsha256sums = / {
|
||||
sha_index += 1
|
||||
if (sha_index == 1) {
|
||||
print "\tsha256sums = " sum_appimage
|
||||
next
|
||||
}
|
||||
if (sha_index == 2) {
|
||||
print "\tsha256sums = " sum_wrapper
|
||||
next
|
||||
}
|
||||
if (sha_index == 3) {
|
||||
print "\tsha256sums = " sum_assets
|
||||
next
|
||||
}
|
||||
}
|
||||
{
|
||||
print
|
||||
}
|
||||
END {
|
||||
if (!found_pkgver) {
|
||||
print "Missing pkgver entry in .SRCINFO" > "/dev/stderr"
|
||||
exit 1
|
||||
}
|
||||
if (!found_provides) {
|
||||
print "Missing provides entry in .SRCINFO" > "/dev/stderr"
|
||||
exit 1
|
||||
}
|
||||
if (!found_noextract) {
|
||||
print "Missing noextract entry in .SRCINFO" > "/dev/stderr"
|
||||
exit 1
|
||||
}
|
||||
if (!found_source_appimage || !found_source_wrapper || !found_source_assets) {
|
||||
print "Missing source entry in .SRCINFO" > "/dev/stderr"
|
||||
exit 1
|
||||
}
|
||||
if (sha_index < 3) {
|
||||
print "Missing sha256sums entries in .SRCINFO" > "/dev/stderr"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
' "$srcinfo" > "$tmpfile"
|
||||
mv "$tmpfile" "$srcinfo"
|
||||
|
||||
67
scripts/update-aur-package.test.ts
Normal file
67
scripts/update-aur-package.test.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import { execFileSync } from 'node:child_process';
|
||||
import fs from 'node:fs';
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
import test from 'node:test';
|
||||
|
||||
function createWorkspace(name: string): string {
|
||||
return fs.mkdtempSync(path.join(os.tmpdir(), `${name}-`));
|
||||
}
|
||||
|
||||
test('update-aur-package updates PKGBUILD and .SRCINFO without makepkg', () => {
|
||||
const workspace = createWorkspace('subminer-aur-package');
|
||||
const pkgDir = path.join(workspace, 'aur-subminer-bin');
|
||||
const appImagePath = path.join(workspace, 'SubMiner-0.6.3.AppImage');
|
||||
const wrapperPath = path.join(workspace, 'subminer');
|
||||
const assetsPath = path.join(workspace, 'subminer-assets.tar.gz');
|
||||
|
||||
fs.mkdirSync(pkgDir, { recursive: true });
|
||||
fs.copyFileSync('packaging/aur/subminer-bin/PKGBUILD', path.join(pkgDir, 'PKGBUILD'));
|
||||
fs.copyFileSync('packaging/aur/subminer-bin/.SRCINFO', path.join(pkgDir, '.SRCINFO'));
|
||||
fs.writeFileSync(appImagePath, 'appimage');
|
||||
fs.writeFileSync(wrapperPath, 'wrapper');
|
||||
fs.writeFileSync(assetsPath, 'assets');
|
||||
|
||||
try {
|
||||
execFileSync(
|
||||
'bash',
|
||||
[
|
||||
'scripts/update-aur-package.sh',
|
||||
'--pkg-dir',
|
||||
pkgDir,
|
||||
'--version',
|
||||
'v0.6.3',
|
||||
'--appimage',
|
||||
appImagePath,
|
||||
'--wrapper',
|
||||
wrapperPath,
|
||||
'--assets',
|
||||
assetsPath,
|
||||
],
|
||||
{
|
||||
cwd: process.cwd(),
|
||||
encoding: 'utf8',
|
||||
},
|
||||
);
|
||||
|
||||
const pkgbuild = fs.readFileSync(path.join(pkgDir, 'PKGBUILD'), 'utf8');
|
||||
const srcinfo = fs.readFileSync(path.join(pkgDir, '.SRCINFO'), 'utf8');
|
||||
const expectedSums = [appImagePath, wrapperPath, assetsPath].map((filePath) =>
|
||||
execFileSync('sha256sum', [filePath], { encoding: 'utf8' }).split(/\s+/)[0],
|
||||
);
|
||||
|
||||
assert.match(pkgbuild, /^pkgver=0\.6\.3$/m);
|
||||
assert.match(srcinfo, /^\tpkgver = 0\.6\.3$/m);
|
||||
assert.match(srcinfo, /^\tprovides = subminer=0\.6\.3$/m);
|
||||
assert.match(
|
||||
srcinfo,
|
||||
/^\tsource = SubMiner-0\.6\.3\.AppImage::https:\/\/github\.com\/ksyasuda\/SubMiner\/releases\/download\/v0\.6\.3\/SubMiner-0\.6\.3\.AppImage$/m,
|
||||
);
|
||||
assert.match(srcinfo, new RegExp(`^\\tsha256sums = ${expectedSums[0]}$`, 'm'));
|
||||
assert.match(srcinfo, new RegExp(`^\\tsha256sums = ${expectedSums[1]}$`, 'm'));
|
||||
assert.match(srcinfo, new RegExp(`^\\tsha256sums = ${expectedSums[2]}$`, 'm'));
|
||||
} finally {
|
||||
fs.rmSync(workspace, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user