summaryrefslogtreecommitdiff
path: root/src/toru
diff options
context:
space:
mode:
Diffstat (limited to 'src/toru')
-rw-r--r--src/toru/Makefile4
-rwxr-xr-xsrc/toru/toru-info43
-rwxr-xr-xsrc/toru/toru-path92
-rwxr-xr-xsrc/toru/toru-where25
4 files changed, 164 insertions, 0 deletions
diff --git a/src/toru/Makefile b/src/toru/Makefile
new file mode 100644
index 0000000..2903f4a
--- /dev/null
+++ b/src/toru/Makefile
@@ -0,0 +1,4 @@
+include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk
+include $(topsrcdir)/automake.head.mk
+
+include $(topsrcdir)/automake.tail.mk
diff --git a/src/toru/toru-info b/src/toru/toru-info
new file mode 100755
index 0000000..a7081cb
--- /dev/null
+++ b/src/toru/toru-info
@@ -0,0 +1,43 @@
+#!/usr/bin/env bash
+# Prints info about a given pkgname
+
+# Copyright (C) 2012 Nicolás Reynolds <fauno@parabola.nu>
+#
+# License: GNU GPLv3+
+#
+# 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 3 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 Affero 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)"
+
+for _pkg in "$@"; do
+ _pkgbuild="$(toru-where $_pkg)"
+
+ if [ -f "$_pkgbuild/PKGBUILD" ]; then
+ if ! load_PKGBUILD "$_pkgbuild/PKGBUILD" 2>/dev/null; then
+ warning "Errors on %s" "$_pkg"
+ continue
+ fi
+
+ deps=("${depends[@]}" "${makedepends[@]}" "${checkdepends[@]}")
+ repo="$(basename -- "$(dirname -- "$_pkgbuild")")"
+
+ msg "%s/%s %s-%s" "$repo" "$_pkg" "$pkgver" "$pkgrel"
+ msg2 '%s' "$pkgdesc"
+ msg2 '%s' "$url"
+ msg2 'Depends: %s' "${deps[*]}"
+ else
+ warning "%s doesn't exist" "$_pkg"
+ fi
+done
diff --git a/src/toru/toru-path b/src/toru/toru-path
new file mode 100755
index 0000000..4600a5c
--- /dev/null
+++ b/src/toru/toru-path
@@ -0,0 +1,92 @@
+#!/usr/bin/env bash
+
+# Copyright (C) 2011-2012 Nicolás Reynolds <fauno@parabola.nu>
+# Copyright (C) 2012 Michał Masłowski <mtjm@mtjm.eu>
+# Copyright (C) 2012 Joshua Ismael Haase Hernández (xihh) <hahj87@gmail.com>
+# Copyright (C) 2014 Luke Shumaker <lukeshu@sbcglobal.net>
+#
+# License: GNU GPLv3+
+#
+# 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 3 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 Affero 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
+setup_traps
+
+# TODO: better option parsing
+TORUPATH=${T:-${TORUPATH}}
+VERBOSE=${V:-false}
+FORCE=${F:-false}
+
+. "$(librelib conf.sh)"
+load_files libretools
+check_vars libretools TORUPATH REPOS || exit 1
+load_files abs
+check_vars abs ABSROOT || exit 1
+
+if [ ! -w "$TORUPATH" ]; then
+ error "Toru's path isn't writable. Please check $TORUPATH"
+ exit 1
+fi
+
+lastsyncfile=${TORUPATH}/lastsync.paths
+pathfile=${TORUPATH}/paths.tch
+
+if [ ! -e "${pathfile}" ]; then
+ tcamgr create "${pathfile}"
+fi
+
+# TODO: ability to use flags to pass in other directories to fullrepos
+
+# This loops over ${REPOS[@]} backward. This is because early entries
+# in REPOS have higher precidence, but the way this is implemented,
+# the later entries have precedence, so we need to flip the order.
+fullrepos=()
+for (( i = ${#REPOS[@]}-1 ; i >= 0 ; i-- )); do
+ $VERBOSE && msg "Processing [%s]" "${REPOS[$i]}"
+
+ # ABSROOT has trailing slash
+ if [ -d "${ABSROOT}${REPOS[$i]}" ]; then
+ fullrepos+=("${ABSROOT}${REPOS[$i]}")
+ fi
+done
+
+# Find PKGBUILDs in ${fullrepos[@]}
+find_args=("${fullrepos[@]}" -mindepth 2 -maxdepth 3 -type f -name PKGBUILD)
+if ! $FORCE && [[ -e $lastsyncfile ]]; then
+ # if lastfilesync exists, only look at things that have
+ # changed since then (unless $FORCE is on)
+ find_args+=(-newer "${lastsyncfile}")
+fi
+IFS=$'\n'
+pkgbuilds=($(find "${find_args[@]}"))
+
+# Add information from each of the PKGBUILDs to the toru cache.
+msg "Updating path cache"
+msg2 "%d PKGBUILDs to update" ${#pkgbuilds[@]}
+for pkgbuild in "${pkgbuilds[@]}"; do
+ # plain "$_pkgbuild"
+ if ! load_PKGBUILD "${_pkgbuild}" >/dev/null 2>&1; then
+ error "%q contains errors, skipping" "${_pkgbuild}"
+ continue
+ fi
+
+ fullpath="$(dirname -- "${_pkgbuild}")"
+
+ for _pkg in "${pkgbase}" "${pkgname[@]}" "${provides[@]}"; do
+ $VERBOSE && msg2 '%s -> %s' "${_pkg}" "${fullpath}"
+ tcamgr put "${pathfile}" "${_pkg%%[<>=]*}" "${fullpath}"
+ done
+done
+
+date +%s > "${lastsyncfile}"
diff --git a/src/toru/toru-where b/src/toru/toru-where
new file mode 100755
index 0000000..f6df15f
--- /dev/null
+++ b/src/toru/toru-where
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+# Locates a PKGBUILD dir on toru's path cache
+
+# Copyright (C) 2012 Nicolás Reynolds <fauno@parabola.nu>
+#
+# License: GNU GPLv3+
+#
+# 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 3 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 Affero 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/>.
+
+. "$(librelib conf.sh)"
+load_files libretools
+check_vars libretools TORUPATH || exit 1
+
+tcamgr get "${TORUPATH}/paths.tch" "$1" 2>/dev/null || echo ""