ab01b57
#!/bin/bash
ab01b57
set -euo pipefail
ab01b57
ab01b57
KEEP_V_R=
ab01b57
while [ $# -gt 0 ]; do
ab01b57
    case "$1" in
ab01b57
        -h | --help)
ab01b57
            echo "Usage: $0 [--keep-v-r]" >&2
ab01b57
            exit 0
ab01b57
            ;;
ab01b57
        --keep-v-r)
ab01b57
            KEEP_V_R=1
ab01b57
            ;;
ab01b57
        *)
ab01b57
            echo "$0: unrecognized option: $1" >&2
ab01b57
            exit 1
ab01b57
            ;;
ab01b57
    esac
ab01b57
    shift
ab01b57
done
ab01b57
ab01b57
main() {
ab01b57
    local upstream
ab01b57
    upstream=$(get_parsed_spec_field URL)
41d9f72
    curl -Lo rpm-ostree.spec.new "$upstream/raw/main/packaging/rpm-ostree.spec.in"
8f463db
    # remove dummy changelog from upstream spec
8f463db
    sed -i -e '/%changelog/Q' rpm-ostree.spec.new
8f463db
    # append real changelog to upstream spec
ab01b57
    sed -ne '/%changelog/,$ p' rpm-ostree.spec >> rpm-ostree.spec.new
ab01b57
ab01b57
    if [ -n "${KEEP_V_R}" ]; then
ab01b57
        local version release
ab01b57
        version=$(get_raw_spec_field Version)
ab01b57
        release=$(get_raw_spec_field Release)
ab01b57
ab01b57
        sed -ie "s/^Version:.*/Version: $version/" rpm-ostree.spec.new
ab01b57
        sed -ie "s/^Release:.*/Release: $release/" rpm-ostree.spec.new
ab01b57
    fi
ab01b57
ab01b57
    if git diff --quiet --exit-code rpm-ostree.spec; then
ab01b57
        mv rpm-ostree.spec.new rpm-ostree.spec
ab01b57
        echo "Updated rpm-ostree.spec" >&2
ab01b57
    else
ab01b57
        echo "Refusing to overwrite dirty rpm-ostree.spec" >&2
ab01b57
        echo "Updated rpm-ostree.spec.new" >&2
ab01b57
    fi
ab01b57
}
ab01b57
ab01b57
get_parsed_spec_field() {
ab01b57
    rpmspec -P rpm-ostree.spec | grep "^${1}: " | head -n1 | cut -d ' ' -f 2
ab01b57
}
ab01b57
ab01b57
get_raw_spec_field() {
ab01b57
    grep "^${1}: " rpm-ostree.spec | head -n1 | cut -d ' ' -f 2
ab01b57
}
ab01b57
ab01b57
main "$@"