From 524ff12aea11e3aa31608f042a823d2bdd1163c1 Mon Sep 17 00:00:00 2001 From: Nathan Wagner Date: Tue, 17 Feb 2015 03:47:31 +0000 Subject: [PATCH] initial commit --- zpm | 49 ++++++++++++++++++++++++++++++++++ zpm-note | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++ zpm-sequence | 47 +++++++++++++++++++++++++++++++++ 3 files changed, 170 insertions(+) create mode 100755 zpm create mode 100755 zpm-note create mode 100755 zpm-sequence diff --git a/zpm b/zpm new file mode 100755 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 + - repackage an installed package + +install: install a package, - 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 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]// +# +# note: list notes +# note ack - moves note to "acknowledged" spool +# note list [package] show notes for a given package, or all notes +# note delete - delete a note from the system +# note edit [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 index 0000000..7abe18c --- /dev/null +++ b/zpm-sequence @@ -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 <