Skip to content
Snippets Groups Projects
release 3.58 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/bin/sh
    
    
    # Usage: ./release NEW_VERSION [ dev | SINCE_COMMITISH ]
    
    # 
    # If "dev" is supplied as the second argument, a development snapshot
    # is done rather than a real release, i.e.:
    
    #    * the --snapshot --auto options are passed to gbp-dch
    
    #    * no commit or tag is created
    
    # else, the second argument is passed to gbp-dch's --since option.
    
    ### source the configuration files
    
    . config/amnesia
    if [ -e config/amnesia.local ] ; then
       . config/amnesia.local
    fi
    
    
    ### init variables
    
    NEW_VERSION="$1"
    if [ "$2" = dev ]; then
       SNAPSHOT=yes
    else
       SNAPSHOT=no
    
    fi
    
    ### helper functions
    
    fatal () {
       echo "Fatal: $@" >&2
       exit 2
    }
    
    ### sanity checks
    
    
    [ -n "${NEW_VERSION}" ] \
       || fatal "the new version must be supplied on the command-line."
    
    amnesia's avatar
    amnesia committed
    [ -n "${AMNESIA_DEV_FULLNAME}" ] \
       || fatal "AMNESIA_DEV_FULLNAME must be set in config/amnesia"
    [ -n "${AMNESIA_DEV_EMAIL}" ] \
       || fatal "AMNESIA_DEV_EMAIL must be set in config/amnesia"
    [ -n "${AMNESIA_DEV_KEYID}" ] \
       || fatal "AMNESIA_DEV_KEYID must be set in config/amnesia"
    
    [ -x "`which git`" ] \
       || fatal "could not find git, please apt-get install git-core"
    
    [ -x "`which gbp`" ] \
       || fatal "could not find gbp, please apt-get install git-buildpackage"
    
    export DEBFULLNAME="${AMNESIA_DEV_FULLNAME}"
    export DEBEMAIL="${AMNESIA_DEV_EMAIL}"
    
    
    # update the Changelog
    echo "Updating debian/changelog from Git history..."
    
       `if [ ${SNAPSHOT} = yes ]; then echo '--snapshot --auto' ; fi` \
    
       `if [ ${SNAPSHOT} = no -a -n ${SINCE} ]; then echo "--since=${SINCE}" ; fi` \
       `if [ ${SNAPSHOT} = no -a -z ${SINCE} ]; then echo "--auto" ; fi` \
    
       --new-version="${NEW_VERSION}" \
    
       --dch-opt=--force-bad-version \
    
    anonym's avatar
    anonym committed
       -- '*' ':!wiki' \
    
       || fatal "gbp dch failed."
    
    # cleanup some parts of the changelog
    perl -pi'' -e 's/\A  \[ IkiWiki::Plugin::po::change \]\n//' debian/changelog
    perl -pi'' -e 's/\A  \* update[d]? PO file[s]?[.]?\n//' debian/changelog
    perl -pi'' -e 's/\A  \* \n//' debian/changelog
    perl -pi'' -e 's/\A  \[ 127\.0\.0\.1 \]\n//' debian/changelog
    perl -pi'' -e 's/\A  \[ amnesia \]\n//' debian/changelog
    perl -pi'' -e 's/\A  \[ anonym \]\n//' debian/changelog
    
    perl -pi'' -e 's/\A  \[ bertagaz \]\n//' debian/changelog
    perl -pi'' -e 's/\A  \[ BitingBird \]\n//' debian/changelog
    perl -pi'' -e 's/\A  \[ intrigeri \]\n//' debian/changelog
    perl -pi'' -e 's/\A  \[ kytv \]\n//' debian/changelog
    perl -pi'' -e 's/\A  \[ sajolida \]\n//' debian/changelog
    
    perl -pi'' -e 's/\A  \[ T\(A\)ILS developers \]\n//' debian/changelog
    perl -pi'' -e 's/\A  \[ Tails developers \]\n//' debian/changelog
    perl -pi'' -e 's/\A  \[ Tails \]\n//' debian/changelog
    perl -pi'' -e 's/\A  \* Added a comment\n//' debian/changelog
    perl -pi'' -e 's/\A  \* Added a comment:.*\n//' debian/changelog
    
    perl -pi'' -e 's/\A  \* Remove spam\.\n//' debian/changelog
    
    perl -pi'' -e 's/\A  \* todo\+\+\n//i' debian/changelog
    perl -pi'' -e 's/\A  \* todo--\n//i' debian/changelog
    perl -pi'' -e 's/\A  \* TODO update[.]?\n//i' debian/changelog
    
    perl -pi'' -e 's/\A  \* Update ticket[.]?\n//i' debian/changelog
    
    perl -pi'' -e 's/\A  \* Now pending[.]?\n//i' debian/changelog
    perl -pi'' -e 's/\A  \* Done[.]?\n//i' debian/changelog
    perl -pi'' -e 's/\A  \* Upcoming release\n//' debian/changelog
    
    
    # if [ "${SNAPSHOT}" = no ]; then
    #    echo "Commit'ing debian/changelog..."
    #    git commit -m "releasing version ${NEW_VERSION}" debian/changelog \
    #       || fatal "failed to commit debian/changelog"
    #    echo "Tagging new version..."
    #    git tag -u "${AMNESIA_DEV_KEYID}" -m "tagging version ${NEW_VERSION}" "${NEW_VERSION}"
    # fi
    
    amnesia's avatar
    amnesia committed
    
    echo "done."