]> pd.if.org Git - zpackage/commitdiff
initial commit
authorNathan Wagner <nw@hydaspes.if.org>
Tue, 17 Feb 2015 03:47:31 +0000 (03:47 +0000)
committerNathan Wagner <nw@hydaspes.if.org>
Tue, 17 Feb 2015 03:47:31 +0000 (03:47 +0000)
zpm [new file with mode: 0755]
zpm-note [new file with mode: 0755]
zpm-sequence [new file with mode: 0755]

diff --git a/zpm b/zpm
new file mode 100755 (executable)
index 0000000..90059fe
--- /dev/null
+++ b/zpm
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+PATH="$PATH:/home/nw/src/zpackage"
+export PATH
+
+cmd="$1"
+shift
+
+die() {
+       echo $*
+       exit 1;
+}
+
+case $cmd in
+       help)
+               ecmd=$(command -v "zpm-$cmd") && { exec "$ecmd" "$@" || die "$0: unknown command zpm help"; }
+               find $(echo $PATH | tr ':' ' ') -maxdepth 1 -type f -name 'zpm-*' -executable -printf '%P\n'
+               ;;
+       *)
+               ecmd=$(command -v "zpm-$cmd") || die "$0: unknown command $cmd"
+               exec "$ecmd" "$@" || die "$0: could not exec $ecmd"
+               ;;
+esac
+
+exit 0
+
+note: add/edit a note file, - from stdin, list if none
+ack: acknowledge a note file
+
+build:
+       build a package from source
+       - take file names on stdin and build package from them
+       - <name> repackage an installed package
+
+install: install a package, - <name> for from a file
+
+remove: remove a package
+
+db: edit package databases used for finding packages
+
+info: get information on a package
+
+track: add a package to config tracked packages
+
+add: add to a repository/database
+
+clean: clean a repository/database
+
+update: update a package, or all if no name
diff --git a/zpm-note b/zpm-note
new file mode 100755 (executable)
index 0000000..2ca9a69
--- /dev/null
+++ b/zpm-note
@@ -0,0 +1,74 @@
+#!/bin/sh
+
+# Admin notes:
+# 
+# Each note is just a file.  Stored under /var/spool/admin/notes/[open|ack]/<package>/<note>
+# 
+# note: list notes
+# note ack <note> - moves note to "acknowledged" spool
+# note list [package] show notes for a given package, or all notes
+# note delete <note> - delete a note from the system
+# note edit <package> [file] - edit or create a note
+
+SPOOL=/var/spool/admin/notes
+OPEN=$SPOOL/open
+
+#umask 007
+
+cd $SPOOL || { echo "can't chdir to $SPOOL" ; exit 1; }
+
+[ -z "$1" ] && set list
+
+cmd=$1
+shift
+
+findnote() {
+       file=$(find $SPOOL -type f -name "$1")
+       if [ -z "$file" ] ; then
+               printf "no such note $1\n"
+               exit 1
+       fi
+       echo $file
+}
+
+case $cmd in
+       list)
+               find $SPOOL/open -type f -printf '%P\n'
+               ;;
+       ack)
+               file=$(findnote $1)
+               mkdir -p $SPOOL/ack/$1
+               mv $SPOOL/open/$1/$2 $SPOOL/ack/$1/$2
+               ;;
+       new)
+               if [ $# -eq 1 ]; then set general $1; fi
+               pkg=$1 ; shift
+               mkdir -p $SPOOL/open/$pkg
+               case $1 in
+                       '-')
+                               tmp=$(mktemp -p $SPOOL/open)
+                               cat - > $tmp
+                               file=$(zpm sequence notes)
+                               mv $tmp $SPOOL/open/$pkg/$file
+                               echo created $file
+                               ;;
+                       *)
+                               tmp=$(mktemp -p $SPOOL/open)
+                               flock -n -E3 $tmp vim $tmp
+                               if [ $? -eq 3 ]; then echo already editing $1; exit 1; fi
+                               file=$(zpm sequence notes)
+                               mv $tmp $SPOOL/open/$pkg/$file
+                               rm -f $tmp
+                               ;;
+               esac
+               ;;
+       edit)
+               file=$(findnote $1)
+               flock -n -E3 $file vim $file
+               if [ $? -eq 3 ]; then echo already editing $1; exit 1; fi
+               ;;
+       show)
+               file=$(findnote $1)
+               ${PAGER:-less} $file
+               ;;
+esac
diff --git a/zpm-sequence b/zpm-sequence
new file mode 100755 (executable)
index 0000000..7abe18c
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+set -e
+
+SPOOL=/var/spool/admin/notes
+DB=$SPOOL/.sequence.db
+SQL="sqlite3 $DB"
+
+#rm -f $DB
+test -f $DB || {
+sqlite3 $DB <<EOS
+create table sequence ( sequence text not null primary key, val integer not null default 0);
+EOS
+}
+
+case $1 in
+       -c)
+               $SQL "insert into sequence (sequence) values ('$2')"
+               exit 0
+               ;;
+       -d)
+               $SQL "delete from sequence where sequence = '$2'"
+               exit 0
+               ;;
+       -v)
+               val=$($SQL "select val from sequence where sequence = '$2'")
+               echo $val
+               exit 0
+               ;;
+       -l)
+               $SQL 'select * from sequence'
+               exit 0
+               ;;
+       -s)
+               $SQL "begin;update sequence set val = $3 where sequence = '$seq'; commit;"
+               exit 0
+               ;;
+       -n)
+               shift
+               ;;
+esac
+
+seq=$1
+
+num=$(sqlite3 $DB "begin; update sequence set val = val + 1 where sequence = '$seq'; commit;select val from sequence where sequence = '$seq';")
+
+echo $num