# HG changeset patch # User Christophe Lincoln # Date 1337084423 -7200 # Node ID b9ca2ddbafa1620f0e5685e5cef8390b92957902 # Parent e5d4c5d3ccf4bdbffc354c7a646ee97eec947735 add: spk and some improvments diff -r e5d4c5d3ccf4 -r b9ca2ddbafa1 Makefile --- a/Makefile Tue May 15 12:46:12 2012 +0200 +++ b/Makefile Tue May 15 14:20:23 2012 +0200 @@ -38,9 +38,11 @@ install: install-lib install -m 0755 -d $(DESTDIR)$(PREFIX)/bin + install -m 0755 -d $(DESTDIR)$(PREFIX)/sbin install -m 0755 -d $(DESTDIR)$(PREFIX)/share/doc/spk + install -m 0755 spk $(DESTDIR)$(PREFIX)/bin install -m 0755 spk-ls $(DESTDIR)$(PREFIX)/bin - install -m 0755 spk-rm $(DESTDIR)$(PREFIX)/bin + install -m 0755 spk-rm $(DESTDIR)$(PREFIX)/sbin # Clean source diff -r e5d4c5d3ccf4 -r b9ca2ddbafa1 lib/libspk.sh --- a/lib/libspk.sh Tue May 15 12:46:12 2012 +0200 +++ b/lib/libspk.sh Tue May 15 14:20:23 2012 +0200 @@ -16,10 +16,19 @@ pkgsdesc="${root}${PKGS_DB}/packages.desc" pkgsmd5="${root}${PKGS_DB}/packages.md5" # ????do we need packages.equiv???? -blocked="${root}${PKGS_DB}/blocked-packages.list" +blocked="${root}${PKGS_DB}/blocked.list" activity="${root}${PKGS_DB}/activity" # +# Sanity checks +# + +if [ ! -d "${root}${PKGS_DB}" ]; then + gettext "Can't find DB:"; echo " ${root}${PKGS_DB}" + exit 1 +fi + +# # Functions # @@ -45,13 +54,13 @@ # Used by: list count_installed() { local count=$(ls $installed | wc -l) - gettext "Installed packages"; echo ": $count" + gettext "Installed :"; echo " $count" } # Used by: list count_mirrored() { local count=$(cat $pkgsmd5 | wc -l) - gettext "Mirrored packages"; echo ": $count" + gettext "Mirrored :"; echo " $count" } is_package_mirrored() { @@ -72,7 +81,7 @@ esac } -# Assume package_name is valid +# Assume package name is valid # There may be a more efficient way to do this... full_package() { local name=$1 diff -r e5d4c5d3ccf4 -r b9ca2ddbafa1 spk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spk Tue May 15 14:20:23 2012 +0200 @@ -0,0 +1,126 @@ +#!/bin/sh +# +# Spk - The SliTaz Packages toolset. Read the README before adding or +# modifing any code in spk! +# +# Copyright (C) SliTaz GNU/Linux - BSD License +# Author: See AUTHORS files +# +#. /usr/lib/slitaz/libspk.sh +. lib/libspk.sh + +# +# Functions +# + +# Help and usage +usage() { + name=$(basename $0) + cat << EOT + +$(boldify $(gettext "Usage:")) $name [packages|--options] + +$(gettext "SliTaz Packages toolset") + +$(boldify $(gettext "Commands:")) + info $(gettext "Display path, mirror and other stats") + activity $(gettext "Display packages activities") + +$(boldify $(gettext "Options:")) + --block $(gettext "TODO") + --root $(gettext "Set the root file system path") + --debug $(gettext "Display some usefull debug information") + +$(boldify $(gettext "Examples:")) + $name package1 package2 packageN + $name package --block + +EOT + exit 0 +} + +# +# Commands and exit +# + +case "$1" in + ""|*usage|*help) usage ;; + info) + newline + boldify "Spk Info" + separator + gettext "Database :"; echo " $installed" + gettext "Mirror URL :"; echo " $(cat $mirrorurl)" + count_installed + count_mirrored + separator + newline && exit 0 ;; + activity) + newline + boldify "Spk Activity" + separator + cat $activity + separator && newline + exit 0 ;; + ls|add) + # Sort of helper on wrong commands or --option ? Or have better + # usage/help: spk help [command] ? + gettext "Did you mean ?"; echo " spk-$@" + exit 0 ;; +esac + +# +# Handle packages: spk package1 ... packageN +# + +[ "$debug" ] && echo "DEBUG: cmdline: $0 $@" +count=0 + +for pkg in $@ +do + # Handle: --options + case " $@ " in + *\ --rm\ *) + spk-rm $pkg --count=$count + count=$(($count + 1)) + continue ;; + esac + count=$(($count + 1)) + # Installed ? + if [ -d "$installed/$pkg" ]; then + [ "$count" == 1 ] && newline + unset_receipt + . $installed/$pkg/receipt + boldify "$(gettext "Package") $pkg" + separator + gettext "Status : installed"; newline + receipt_info + separator && newline + continue + fi + # Mirrored ? + mirrored=$(grep "^$pkg |" $pkgsdesc) + if [ "$mirrored" ]; then + # Handle: --add + if [ "$add" ]; then + echo "TODO: test 'spk-add $pkg'" + else + [ "$count" == 1 ] && newline + boldify "$(gettext "Package") $pkg" + separator + gettext "Status : not installed"; echo "" + echo "$mirrored" | awk 'BEGIN { FS = "|" } ; { print \ + "Version :" $2 "\n" \ + "Short desc :" $3 "\n" \ + "Category :" $4 }' + separator && newline + fi + continue + fi + # Skip options such as --confirm or unknow package + case "$pkg" in + --*) continue ;; + *) gettext "Unknow package"; echo ": $pkg" + esac +done +exit 0 diff -r e5d4c5d3ccf4 -r b9ca2ddbafa1 spk-rm --- a/spk-rm Tue May 15 12:46:12 2012 +0200 +++ b/spk-rm Tue May 15 14:20:23 2012 +0200 @@ -6,8 +6,7 @@ # Copyright (C) SliTaz GNU/Linux - BSD License # Author: See AUTHORS files # -#. /usr/lib/slitaz/libspk.sh -. lib/libspk.sh +. /usr/lib/slitaz/libspk.sh # # Functions @@ -168,7 +167,7 @@ # Handle packages # -count=0 +: ${count=0} check_root for pkg in $@