mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-12 23:45:18 +00:00
release workflow configuration init
This commit is contained in:
parent
d2b4a81029
commit
465135edae
@ -1,11 +1,13 @@
|
||||
pkgbase = spotube-bin
|
||||
pkgdesc = A lightweight free Spotify crossplatform-client which handles playback manually, streams music using Youtube & no Spotify premium account is needed
|
||||
pkgver = 2.0.0
|
||||
pkgrel = 2
|
||||
pkgrel = 3
|
||||
url = https://github.com/KRTirtho/spotube/
|
||||
arch = x86_64
|
||||
license = BSD-4-Clause
|
||||
depends = libkeybinder3
|
||||
depends = gst-plugins-good
|
||||
depends = webkit2gtk
|
||||
source = https://github.com/KRTirtho/spotube/releases/download/v2.0.0/Spotube-linux-x86_64.tar.xz
|
||||
md5sums = 55955fb42d7e3f960392d68d45e2030a
|
||||
|
||||
|
21
bin/verify-pkgbuild.dart
Normal file
21
bin/verify-pkgbuild.dart
Normal file
@ -0,0 +1,21 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
void main() {
|
||||
Process.run("sh", ["-c", '"./scripts/pkgbuild2json.sh aur-struct/PKGBUILD"'])
|
||||
.then((result) {
|
||||
try {
|
||||
final pkgbuild = jsonDecode(result.stdout);
|
||||
if (pkgbuild["version"] !=
|
||||
Platform.environment["RELEASE_VERSION"]?.substring(1)) {
|
||||
throw Exception(
|
||||
"PKGBUILD version doesn't match current RELEASE_VERSION");
|
||||
}
|
||||
if (pkgbuild["release"] != "1") {
|
||||
throw Exception("In new releases pkgrel should be 1");
|
||||
}
|
||||
} catch (e) {
|
||||
print("[Failed to parse PKGBUILD] $e");
|
||||
}
|
||||
});
|
||||
}
|
169
scripts/pkgbuild2json.sh
Executable file
169
scripts/pkgbuild2json.sh
Executable file
@ -0,0 +1,169 @@
|
||||
#!/bin/bash
|
||||
|
||||
# pkgbuild2json: Parses and converts Arch Linux PKGBUILDS into JSON
|
||||
# Copyright (C) 2020 Michael Connor Buchan
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
usage() {
|
||||
cat <<EOF >&2
|
||||
usage: $0 <pkgbuild>
|
||||
Convert the metadata in a pkgbuild file to json.
|
||||
Positional Arguments:
|
||||
pkgbuild: Path to a PKGBUILD file.
|
||||
EOF
|
||||
}
|
||||
|
||||
error() {
|
||||
echo "$0: error: $*" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Trim whitespace from strings.
|
||||
trim() {
|
||||
echo -e "${1}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
|
||||
}
|
||||
|
||||
# Convert a Bash array to a JSON array.
|
||||
toArray() {
|
||||
# Make $arr a reference to the variabl named by $1
|
||||
declare -n arr="$1"
|
||||
if [ "$arr" = "" ]; then
|
||||
# Variable is empty
|
||||
echo '[]'
|
||||
else
|
||||
printf "%s\n" "${arr[@]}" | jq -R . | jq -s .
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
if [ "$#" -lt 1 ]; then
|
||||
usage
|
||||
exit 1
|
||||
elif [ -f "$1" ] && [ -r "$1" ]; then
|
||||
PKGBUILD="$1"
|
||||
# PKGBUILD is readable
|
||||
# Read the maintainer info (if any)
|
||||
declare -a maintainers=()
|
||||
while read maintainer_text; do
|
||||
maintainer_name="$(echo "$maintainer_text" | cut -d: -f2 | cut -d '<' -f1)"
|
||||
maintainer_email="$(echo "$maintainer_text" | cut -d '<' -f2 | cut -d '>' -f1)"
|
||||
maintainers+=("$(jq -n \
|
||||
--arg name "$(trim "$maintainer_name")" \
|
||||
--arg email "$(trim "$maintainer_email")" \
|
||||
'{"name": $name, "email": $email}')")
|
||||
done < <(grep '\# Maintainer: .\+ <.\+@.\+>' "$PKGBUILD")
|
||||
if [ "${#maintainers[@]}" -gt 0 ]; then
|
||||
maintainers_json="$(printf "%s\n" "${maintainers[@]}" | jq -s .)"
|
||||
else
|
||||
maintainers_json='[]'
|
||||
fi
|
||||
|
||||
# Source the PKGBUILD to get the rest of the variables
|
||||
source "$PKGBUILD" || error "Failed to source $1."
|
||||
|
||||
# Convert the arrays to json
|
||||
pkg_name="$(toArray pkgname)"
|
||||
pkg_arch="$(toArray arch)"
|
||||
pkg_license="$(toArray license)"
|
||||
pkg_groups="$(toArray groups)"
|
||||
pkg_depends="$(toArray depends)"
|
||||
pkg_makedepends="$(toArray makedepends)"
|
||||
pkg_checkdepends="$(toArray checkdepends)"
|
||||
pkg_optdepends="$(toArray optdepends)"
|
||||
pkg_provides="$(toArray provides)"
|
||||
pkg_conflicts="$(toArray conflicts)"
|
||||
pkg_replaces="$(toArray replaces)"
|
||||
pkg_backup="$(toArray backup)"
|
||||
pkg_options="$(toArray options)"
|
||||
pkg_source="$(toArray source)"
|
||||
pkg_noextract="$(toArray noextract)"
|
||||
pkg_md5sums="$(toArray md5sums)"
|
||||
pkg_sha1sums="$(toArray sha1sums)"
|
||||
pkg_sha224sums="$(toArray sha224sums)"
|
||||
pkg_sha256sums="$(toArray sha224sums)"
|
||||
pkg_sha512sums="$(toArray sha512sums)"
|
||||
pkg_b2sums="$(toArray b2sums)"
|
||||
pkg_validpgpkeys="$(toArray validpgpkeys)"
|
||||
|
||||
# Output the converted JSON
|
||||
jq -n \
|
||||
--argjson maintainers "$maintainers_json" \
|
||||
--argjson name "$pkg_name" \
|
||||
--arg version "$pkgver" \
|
||||
--arg release "$pkgrel" \
|
||||
--arg epoch "$epoch" \
|
||||
--arg desc "$pkgdesc" \
|
||||
--argjson arch "$pkg_arch" \
|
||||
--argjson license "$pkg_license" \
|
||||
--arg url "$url" \
|
||||
--argjson groups "$pkg_groups" \
|
||||
--argjson depends "$pkg_depends" \
|
||||
--argjson makedepends "$pkg_makedepends" \
|
||||
--argjson checkdepends "$pkg_checkdepends" \
|
||||
--argjson optdepends "$pkg_optdepends" \
|
||||
--argjson provides "$pkg_provides" \
|
||||
--argjson conflicts "$pkg_conflicts" \
|
||||
--argjson replaces "$pkg_replaces" \
|
||||
--argjson backup "$pkg_backup" \
|
||||
--argjson options "$pkg_options" \
|
||||
--arg install "$install" \
|
||||
--arg changelog "$changelog" \
|
||||
--argjson source "$pkg_source" \
|
||||
--argjson noextract "$pkg_noextract" \
|
||||
--argjson md5sums "$pkg_md5sums" \
|
||||
--argjson sha1sums "$pkg_sha1sums" \
|
||||
--argjson sha224sums "$pkg_sha224sums" \
|
||||
--argjson sha256sums "$pkg_sha256sums" \
|
||||
--argjson sha512sums "$pkg_sha512sums" \
|
||||
--argjson b2sums "$pkg_b2sums" \
|
||||
--argjson validpgpkeys "$pkg_validpgpkeys" \
|
||||
'{
|
||||
"maintainers": $maintainers,
|
||||
"name": $name,
|
||||
"version": $version,
|
||||
"release": $release,
|
||||
"epoch": $epoch,
|
||||
"desc": $desc,
|
||||
"arch": $arch,
|
||||
"url": $url,
|
||||
"license": $license,
|
||||
"groups": $groups,
|
||||
"depends": $depends,
|
||||
"makedepends": $makedepends,
|
||||
"checkdepends": $checkdepends,
|
||||
"optdepends": $optdepends,
|
||||
"provides": $provides,
|
||||
"conflicts": $conflicts,
|
||||
"replaces": $replaces,
|
||||
"backup": $backup,
|
||||
"options": $options,
|
||||
"install": $install,
|
||||
"changelog": $changelog,
|
||||
"source": $source,
|
||||
"noextract": $noextract,
|
||||
"md5sums": $md5sums,
|
||||
"sha1sums": $sha1sums,
|
||||
"sha224sums": $sha224sums,
|
||||
"sha256sums": $sha256sums,
|
||||
"sha512sums": $sha512sums,
|
||||
"b2sums": $b2sums,
|
||||
"validpgpkeys": $validpgpkeys
|
||||
}'
|
||||
else
|
||||
error "$1 is not a readable file."
|
||||
fi
|
||||
}
|
||||
|
||||
main $*
|
Loading…
Reference in New Issue
Block a user