From b7baff2c2bd86402d2645828af30d2f46bd68edb Mon Sep 17 00:00:00 2001
From: Luke Shumaker <LukeShu@sbcglobal.net>
Date: Fri, 29 Nov 2013 17:56:21 -0500
Subject: initial implementations of xbs and xbs-abslibre

---
 src/xbs/Makefile |   2 +
 src/xbs/xbs      | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/xbs/xbs.conf |   1 +
 3 files changed, 141 insertions(+)
 create mode 100644 src/xbs/Makefile
 create mode 100755 src/xbs/xbs
 create mode 100644 src/xbs/xbs.conf

(limited to 'src/xbs')

diff --git a/src/xbs/Makefile b/src/xbs/Makefile
new file mode 100644
index 0000000..fcb8ac2
--- /dev/null
+++ b/src/xbs/Makefile
@@ -0,0 +1,2 @@
+pkgconfdir = $(sysconfdir)
+include ../../common.mk
diff --git a/src/xbs/xbs b/src/xbs/xbs
new file mode 100755
index 0000000..099e1a1
--- /dev/null
+++ b/src/xbs/xbs
@@ -0,0 +1,138 @@
+#!/bin/bash
+
+#   Copyright (c) 2013 Luke Shumaker <lukeshu@sbcglobal.net>
+#
+#   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, see <http://www.gnu.org/licenses/>.
+
+. libremessages
+. $(librelib conf)
+
+errusage() {
+	if [[ $# -gt 0 ]]; then
+		error "$@"
+	fi
+	usage >&2
+	exit 1
+}
+
+usage() {
+	print 'Usage: %s [-b SYSTEM|-h] COMMAND [ARGUMENTS]' "${0##*/}"
+	print 'Tool for working with arbitrary ABS-like build systems'
+	echo
+	print 'This is a pluggable tool. The BUILDSYSTEM it uses is configured in:'
+	print '  - /etc/xbs.conf'
+	print '  - ${XDG_CONFIG_HOME}/xbs.conf'
+	print '  - with the `-b` flag'
+	print 'Later items take precidence over earlier ones.'
+	print 'It looks for a helper program at `/lib/xbs/helper-${BUILDSYSTEM}`.'
+	echo
+	print 'Options:'
+	print '  -b BUILDSYSTEM             Use BUILDSYSTEM instead of the'
+	print '                             BUILDSYSTEM configured in xbs.conf'
+	print '  -h                         Show this message'
+	echo
+	print 'Commands:'
+	print '  status                         Are there uncommited changes in `.`?'
+	print '  download                       Download or update the tree'
+	print '  release REPO ARCH              Release `.`'
+	print '  unrelease PKGBASE REPO ARCH    Unrelease'
+	print '  move FROMREPO TOREPO PKGBASE'
+	print '  releasepath PKGBASE REPO ARCH  Path to staged version'
+}
+
+status() {
+	if [[ ! -f PKGBUILD ]]; then
+		error 'PKGBUILD not found'
+		exit 1
+	fi
+	"$HELPER" status "$@"
+}
+
+download() {
+	"$HELPER" download "$@"
+}
+
+release() {
+	if [[ ! -f PKGBUILD ]]; then
+		error 'PKGBUILD not found'
+		exit 1
+	fi
+	if ! status; then
+		error 'You have not committed your changes yet!'
+		exit 1
+	fi
+	"$HELPER" release "$@"
+}
+
+unrelease() {
+	"$HELPER" unrelease "$@"
+}
+
+move() {
+	"$HELPER" move "$@"
+}
+
+releasepath() {
+	"$HELPER" releasepath "$@"
+}
+
+main() {
+	BUILDSYSTEM=''
+	while getopts 'b:h' arg; do
+		case $arg in
+			b) BUILDSYSTEM=$OPTARG;;
+			h) usage; return 0;;
+			*) errusage;;
+		esac
+	done
+	shift $(($OPTIND - 1))
+
+	if [[ -z $BUILDSYSTEM ]]; then
+		load_files xbs || return 1
+		check_vars xbs BUILDSYSTEM || return 1
+	fi
+	
+	HELPER="/lib/xbs/helper-${BUILDSYSTEM}"
+	if [[ ! -x "$HELPER" ]]; then
+		error 'No helper for build system found: %s' "$BUILDSYSTEM"
+		return 1;
+	fi
+
+	if [[ $# -lt 1 ]]; then
+		errusage "Must specify a command"
+	fi
+
+	if [[ -w / ]]; then
+		error 'Run as a normal user'
+	fi
+
+	local cmd=$1; shift
+	case "$cmd" in
+		status|download)
+			[[ $# -eq 0 ]] || errusage 'bad number of argments'
+			$cmd "$@"
+			;;
+		release)
+			[[ $# -eq 2 ]] || errusage 'bad number of argments'
+			$cmd "$@"
+			;;
+		move|unrelease|releasepath)
+			[[ $# -eq 3 ]] || errusage 'bad number of argments'
+			$cmd "$@"
+			;;
+		*) errusage 'unknown command: %s' "$cmd";;
+	esac
+}
+
+main "$@"
diff --git a/src/xbs/xbs.conf b/src/xbs/xbs.conf
new file mode 100644
index 0000000..caf8d8b
--- /dev/null
+++ b/src/xbs/xbs.conf
@@ -0,0 +1 @@
+BUILDSYSTEM=abs
-- 
cgit v1.2.3-54-g00ecf