diff options
Diffstat (limited to 'bin/repoman.sh')
-rwxr-xr-x | bin/repoman.sh | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/bin/repoman.sh b/bin/repoman.sh new file mode 100755 index 0000000..25d36b1 --- /dev/null +++ b/bin/repoman.sh @@ -0,0 +1,66 @@ +#!/usr/bin/env bash +set -o errexit -o nounset -o pipefail +[[ $(whoami) == 'root' ]] || exit 1 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +function ENV_SETUP() { + if [[ ! -d $SCRIPT_DIR/ci-logs/ ]]; then + mkdir "$SCRIPT_DIR/ci-logs" + fi +} + +function SETUP() { + mkdir -p "$SCRIPT_DIR/overlay" + mkdir -p "$SCRIPT_DIR/overlay/$CATEGORY/$NAME" + cp "/usr/portage/$CATEGORY/$NAME/$NAME-$VERSION.ebuild" "$SCRIPT_DIR/overlay/$CATEGORY/$NAME" + cp "/usr/portage/$CATEGORY/$NAME/metadata.xml" "$SCRIPT_DIR/overlay/$CATEGORY/$NAME" +} + +function REPOMAN() { + cd "$SCRIPT_DIR/overlay/$CATEGORY/$NAME" + repoman scan || true + repoman manifest + repoman full > /tmp/repoman_log_current || true + + sed -i -e "/^USE_RUBY/s/$CURR_TARGET/$CURR_TARGET $NEXT_TARGET/" "$NAME-$VERSION.ebuild" + repoman manifest + repoman full > /tmp/repoman_log_next || true + + LOG +} + +function LOG() { + DATE=$(date +%s) + SHA1=$(sha1sum "/usr/portage/$CATEGORY/$NAME/$NAME-$VERSION.ebuild" | awk '{print $1}') + mkdir -p "$SCRIPT_DIR/ci-logs/$SHA1/current_target/repomans/$DATE" + mkdir -p "$SCRIPT_DIR/ci-logs/$SHA1/next_target/repomans/$DATE" + + cp /tmp/repoman_log_current "$SCRIPT_DIR/ci-logs/$SHA1/current_target/repomans/$DATE/repoman_log" + cp /tmp/repoman_log_next "$SCRIPT_DIR/ci-logs/$SHA1/next_target/repomans/$DATE/repoman_log" + + chmod 755 -R "$SCRIPT_DIR/ci-logs" +} + +function CLEANUP() { + rm /tmp/repoman_log_current + rm /tmp/repoman_log_next + rm -r "$SCRIPT_DIR/overlay" +} + +ENV_SETUP + +PKG_ARR=($(qatom $1)) +CATEGORY="${PKG_ARR[0]}" +NAME="${PKG_ARR[1]}" +if [[ ${PKG_ARR[3]:=foo} == 'foo' ]]; then + VERSION="${PKG_ARR[2]}" +else + VERSION="${PKG_ARR[2]}-${PKG_ARR[3]}" +fi + +PACKAGE=$1 +CURR_TARGET=$2 +NEXT_TARGET=$3 +SETUP +REPOMAN +CLEANUP |