index : devtools32 | |
Archlinux32 fork of devtools | gitolite user |
summaryrefslogtreecommitdiff |
author | Levente Polyak <anthraxx@archlinux.org> | 2022-05-18 02:31:26 +0200 |
---|---|---|
committer | Levente Polyak <anthraxx@archlinux.org> | 2022-06-22 01:05:02 +0200 |
commit | d94badcd0be4f1f0bdc85a9e17f622373fcc42b2 (patch) | |
tree | 09755c43df16dd47d8f99c15213c49315219cb71 /archrelease.in | |
parent | e1a51770b26f3b36f24dc5668253eda23a8c8bcf (diff) |
-rw-r--r-- | archrelease.in | 87 |
diff --git a/archrelease.in b/archrelease.in deleted file mode 100644 index 3490ee2..0000000 --- a/archrelease.in +++ /dev/null @@ -1,87 +0,0 @@ -#!/bin/bash -# -# SPDX-License-Identifier: GPL-3.0-or-later - -m4_include(lib/common.sh) -m4_include(lib/valid-tags.sh) - -# parse command line options -FORCE= -while getopts ':f' flag; do - case $flag in - f) FORCE=1 ;; - :) die "Option requires an argument -- '%s'" "$OPTARG" ;; - \?) die "Invalid option -- '%s'" "$OPTARG" ;; - esac -done -shift $(( OPTIND - 1 )) - -if ! (( $# )); then - echo 'Usage: archrelease [-f] <repo>...' - exit 1 -fi - -# validate repo is really repo-arch -if [[ -z $FORCE ]]; then - for tag in "$@"; do - if ! in_array "$tag" "${_tags[@]}"; then - die "archrelease: Invalid tag: '%s' (use -f to force release)" "$tag" - fi - done -fi - -if [[ ! -f PKGBUILD ]]; then - die 'archrelease: PKGBUILD not found' -fi - -trunk=${PWD##*/} - -# Normally this should be trunk, but it may be something -# such as 'gnome-unstable' -IFS='/' read -r -d '' -a parts <<< "$PWD" -if [[ "${parts[*]:(-2):1}" == "repos" ]]; then - die 'archrelease: Should not be in repos dir (try from trunk/)' -fi -unset parts - -if [[ $(svn status -q) ]]; then - die 'archrelease: You have not committed your changes yet!' -fi - -pushd .. >/dev/null -mapfile -t known_files < <(svn ls -r HEAD "$trunk") -wait $! || die "failed to discover committed files" - -# gracefully handle files containing an "@" character -known_files=("${known_files[@]/%/@}") - -# update repo directory first to avoid a commit failure -svn up repos - -for tag in "$@"; do - stat_busy "Copying %s to %s" "${trunk}" "${tag}" - - if [[ -d repos/$tag ]]; then - mapfile -t trash < <(svn ls --recursive "repos/$tag") - wait $! || die "failed to discover existing files" - if (( ${#trash[@]} )); then - trash=("${trash[@]/#/repos/$tag/}") - svn rm -q "${trash[@]/%/@}" - fi - else - mkdir -p "repos/$tag" - svn add --parents -q "repos/$tag" - fi - - # copy all files at once from trunk to the subdirectory in repos/ - svn copy -q -r HEAD "${known_files[@]/#/$trunk/}" "repos/$tag/" - - stat_done -done - -stat_busy "Releasing package" -printf -v tag_list ", %s" "$@"; tag_list="${tag_list#, }" -svn commit -q -m "archrelease: copy ${trunk} to $tag_list" || abort -stat_done - -popd >/dev/null |