Skip to content
seblu-push 1.84 KiB
Newer Older
Seblu's avatar
Seblu committed
#!/bin/bash

# Copyright © Sébastien Luttringer
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# 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 General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Seblu's avatar
Seblu committed
repourl=${REPO_URL:-archlinux@white.v.seblu.net:2222}
repodir=${REPO_DIR:-incoming}
Seblu's avatar
Seblu committed

shopt -s nullglob

Seblu's avatar
Seblu committed
declare -a to_commit

Seblu's avatar
Seblu committed
if [[ -t 0 && -t 2 ]]; then
Seblu's avatar
Seblu committed
	RED=$'\e''[1;31m'
	GREEN=$'\e''[1;32m'
	BLUE=$'\e''[1;34m'
	BOLD=$'\e''[0;1m'
	RESET=$'\e''[m'
Seblu's avatar
Seblu committed
msg() {
Seblu's avatar
Seblu committed
	printf "$GREEN==>$BOLD $1$RESET\n" "${@:1}"
Seblu's avatar
Seblu committed
}

msg2() {
Seblu's avatar
Seblu committed
	printf "$BLUE  ->$BOLD $1$RESET\n" "${@:1}"
Seblu's avatar
Seblu committed
}


# push package to remote repository
push_pkg() {
	(( $# > 0 )) || return
	msg "Pushing packages into $repourl"
	# copy files
	for _pkg; do
		msg2 "Copying $_pkg"
		scp -p "./$_pkg" "scp://$repourl/$repodir" || exit 2
Seblu's avatar
Seblu committed
	done
}

# push packages on command line, otherwise all packages in the current directory
Seblu's avatar
Seblu committed
if (( $# > 0 )); then
	for _pkg; do
Seblu's avatar
Seblu committed
		[[ "$_pkg" =~ .*\.pkg\.tar\.(xz|zst) ]] && to_commit+=("$_pkg")
Seblu's avatar
Seblu committed
	done
else
Seblu's avatar
Seblu committed
	if (( ${#to_commit[@]} == 0 )); then
		to_commit=(*\.pkg\.tar\.{xz,zst})
	fi
fi

# exit early when no job
Seblu's avatar
Seblu committed
if (( ${#to_commit[@]} == 0 )); then
Seblu's avatar
Seblu committed
	echo -e "${RED}No package to add${RESET}" >&2
Seblu's avatar
Seblu committed
	exit 2
fi

Seblu's avatar
Seblu committed
push_pkg "${to_commit[@]}"
Seblu's avatar
Seblu committed

ssh "ssh://$repourl" -- "cd $repodir && seblu-commit" '-r' "${to_commit[@]}"
Seblu's avatar
Seblu committed

# vim:set ts=2 sw=2 ft=sh noet: