spk rev 138 1.2

Add spk-dialog (small ncurses/gui to spk tools)
author Christophe Lincoln <pankso@slitaz.org>
date Wed Apr 02 00:06:09 2014 +0200 (2014-04-02)
parents b70363c4c5e2
children b1e6edfdb9b7
files Makefile spk-dialog
line diff
     1.1 --- a/Makefile	Sun Mar 30 18:34:55 2014 +0200
     1.2 +++ b/Makefile	Wed Apr 02 00:06:09 2014 +0200
     1.3 @@ -49,6 +49,7 @@
     1.4  	install -m 0755 spk $(DESTDIR)$(PREFIX)/bin
     1.5  	install -m 0755 spk-ls $(DESTDIR)$(PREFIX)/bin
     1.6  	install -m 0755 spk-find $(DESTDIR)$(PREFIX)/bin
     1.7 +	install -m 0755 spk-dialog $(DESTDIR)$(PREFIX)/sbin
     1.8  	install -m 0755 spk-rm $(DESTDIR)$(PREFIX)/sbin
     1.9  	install -m 0755 spk-add $(DESTDIR)$(PREFIX)/sbin
    1.10  	install -m 0755 spk-mirror $(DESTDIR)$(PREFIX)/sbin
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/spk-dialog	Wed Apr 02 00:06:09 2014 +0200
     2.3 @@ -0,0 +1,129 @@
     2.4 +#!/bin/sh
     2.5 +#
     2.6 +# Spk-dialog - SliTaz Packages toolset Ncurses GUI.
     2.7 +#
     2.8 +# Copyright (C) 2014 SliTaz GNU/Linux - BSD License
     2.9 +# Author: See AUTHORS files
    2.10 +#
    2.11 +. /usr/lib/slitaz/libspk.sh
    2.12 +check_root
    2.13 +
    2.14 +title="{ Spk }"
    2.15 +oklab="Spk dialog"
    2.16 +tmpdir="/tmp/spk-dialog"
    2.17 +tmp="$tmpdir/$$"
    2.18 +height="20"
    2.19 +width="72"
    2.20 +
    2.21 +# Use a tmp directory
    2.22 +mkdir -p ${tmpdir}
    2.23 +
    2.24 +# Small built-in help
    2.25 +help() {
    2.26 +	cat << EOT
    2.27 +
    2.28 +$(boldify "$(gettext 'Usage:')") $(basename $0)
    2.29 +
    2.30 +EOT
    2.31 +}
    2.32 +
    2.33 +spk_read() {
    2.34 +	gettext "Press ENTER to go back to Spk dialog"; read
    2.35 +}
    2.36 +
    2.37 +#
    2.38 +# GUI Functions. Some in --> /usr/lib/slitaz/libdialog.sh ???
    2.39 +#
    2.40 +
    2.41 +# Usage: msg_box "title" "message"
    2.42 +msg_box() {
    2.43 +	dialog --title "{ $1 }" --cr-wrap \
    2.44 +		--ok-label "$oklab" --msgbox "\n$2" ${height} ${width}
    2.45 +}
    2.46 +
    2.47 +# Usage: text_box "file"
    2.48 +text_box() {
    2.49 +	local file="$1"
    2.50 +	if [ -f "$file" ]; then
    2.51 +		dialog --cr-wrap \
    2.52 +			--title " $(gettext 'Viewing file:') $file " \
    2.53 +			--extra-button \
    2.54 +			--extra-label "Edit file" \
    2.55 +			--ok-label "$oklab" \
    2.56 +			--textbox ${file} ${height} ${width}
    2.57 +	else
    2.58 +		dialog --title "$title" \
    2.59 +			--msgbox "\nERROR: $file does not exist" 10 ${width}
    2.60 +	fi
    2.61 +	# Handle options
    2.62 +	case "$?" in
    2.63 +		3) editor ${file} ;;
    2.64 +	esac
    2.65 +}
    2.66 +
    2.67 +# Packages info and spk-up button
    2.68 +spk_info_box() {
    2.69 +	out="$tmpdir/spk-info.txt"
    2.70 +	spk info --output=raw > ${out}
    2.71 +	dialog --cr-wrap \
    2.72 +		--title "{ Spk Info }" \
    2.73 +		--exit-label "$oklab" \
    2.74 +		--textbox "$out" ${height} ${width}
    2.75 +}
    2.76 +
    2.77 +# Main Dialog menu
    2.78 +main_box() {
    2.79 +	dialog \
    2.80 +		--clear \
    2.81 +		--title "$title" \
    2.82 +		--ok-label "Exec" \
    2.83 +		--cancel-label "Quit" \
    2.84 +		--menu "" ${height} ${width} 14 \
    2.85 +"info"         "$(gettext 'Packages information')" \
    2.86 +"list"         "$(gettext 'List installed packages')" \
    2.87 +"upgrade"      "$(gettext 'Upgrade installed packages')" \
    2.88 +"clean"        "$(gettext 'Clean-up packages cache')" \
    2.89 +"quit"         "$(gettext 'Exit Spk dialog')" 2>${tmp}
    2.90 +	
    2.91 +	# Handle options
    2.92 +	opt=${?}
    2.93 +	case "$opt" in
    2.94 +		1|255) rm -rf ${tmpdir} && exit 0 ;;
    2.95 +	esac
    2.96 +	
    2.97 +	# Handle actions
    2.98 +	action=$(cat $tmp)
    2.99 +	case "$action" in
   2.100 +		info)
   2.101 +			spk_info_box ;;
   2.102 +		list)
   2.103 +			spk-ls --short && spk_read ;;
   2.104 +		upgrade)
   2.105 +			spk-up && spk_read ;;
   2.106 +		clean)
   2.107 +			spk clean && spk_read ;;
   2.108 +		quit)
   2.109 +			rm -rf ${tmpdir} && exit 0 ;;
   2.110 +	esac
   2.111 +}
   2.112 +
   2.113 +#
   2.114 +# Handle commands
   2.115 +#
   2.116 +
   2.117 +case "$1" in
   2.118 +	
   2.119 +	"")
   2.120 +		# No args: display Ncurses dialog
   2.121 +		while true; do
   2.122 +			main_box
   2.123 +		done ;;
   2.124 +	
   2.125 +	*|*help|-h)
   2.126 +		# Display help
   2.127 +		help ;;
   2.128 +esac
   2.129 +
   2.130 +# Clean exit
   2.131 +rm -rf ${tmpdir}
   2.132 +exit 0