summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/pkg123
1 files changed, 65 insertions, 58 deletions
diff --git a/bin/pkg b/bin/pkg
index d864179..878e71c 100755
--- a/bin/pkg
+++ b/bin/pkg
@@ -58,7 +58,7 @@ function say {
}
function check_installed {
- [[ -n $1 && -d $PDIR/$1 ]] || die "Package not installed: '$1'\n"
+ [[ -n $1 && -d $PKG_DIR/$1 ]] || die "Package not installed: '$1'\n"
}
function check_valid {
@@ -84,7 +84,7 @@ while [[ $1 == --* ]] {
--auto-update) AUTOUPDATE=1 ;;
--no-auto-update) AUTOUPDATE=0 ;;
--checklinks-options) CL_OPTIONS+=$2; shift ;;
- --packagedir) PDIR=$2; shift ;;
+ --packagedir) PKG_DIR=$2; shift ;;
--packageroot) PKG_ROOT=$2; shift ;;
*) die "Unknown argument: '$1'\n" ;;
esac
@@ -96,15 +96,22 @@ shift
# Default values... or not
[[ -n $PKG_ROOT ]] || die "No PKG_ROOT specified. Please edit ~/.pkg.conf\n"
-: ${PDIR:="$HOME/packages"}
+: ${PKG_DIR:="$HOME/packages"}
: ${CL_OPTIONS:=-q}
: ${SILENT=0}
: ${DEBUG=0}
: ${AUTOUPDATE=1}
: ${GIT_USE_ORIGIN=1}
-export PDIR
+export PKG_DIR
export PKG_ROOT
+# Legacy crap (XXX remove before 1.0 release)
+if [[ -n $PDIR ]] {
+ warn "LEGACY WARNING: use PKG_DIR instead of PDIR (fix your config)\n"
+ PKG_DIR=$PDIR
+ unset PDIR
+}
+
# Avoid calling debug without debug mode... just in case one needs more speed
if (( !DEBUG )) {
unalias debug
@@ -125,8 +132,8 @@ if (( SILENT )) {
## Warn otherwise
##
-if [[ ! -d $PDIR ]] {
- die "Error: Package directory '$PDIR' not found\n"
+if [[ ! -d $PKG_DIR ]] {
+ die "Error: Package directory '$PKG_DIR' not found\n"
}
@@ -171,7 +178,7 @@ if ((DEBUG)) {
echo " PKG_USER $PKG_USER"
echo " PKG_HOST $PKG_HOST"
echo " PKGLIST_PATH $PKGLIST_PATH"
- echo " PDIR $PDIR"
+ echo " PKG_DIR $PKG_DIR"
echo " CL_OPTIONS $CL_OPTIONS"
echo " SILENT $SILENT"
echo " AUTOUPDATE $AUTOUPDATE"
@@ -232,13 +239,13 @@ function progress {
## VCS Wrappers
function vcs_setup {
- export GIT_DIR=$PDIR/$1/.git
- export GIT_WORK_TREE=$PDIR/$1
+ export GIT_DIR=$PKG_DIR/$1/.git
+ export GIT_WORK_TREE=$PKG_DIR/$1
}
function vcs_to_list {
vcs_setup $1
- if [[ -d $PDIR/$1/.git ]] {
+ if [[ -d $PKG_DIR/$1/.git ]] {
echo -n "$1 git "
echo ${$(git log -n 1 master)[2]}
} else {
@@ -312,19 +319,19 @@ function vcs_fix_origin {
## List stuff
function list_is_installed {
- grep "^$1 " $PDIR/.list &> /dev/null
+ grep "^$1 " $PKG_DIR/.list &> /dev/null
}
function list_exists {
- grep "^$1 " $PDIR/.list-remote &> /dev/null
+ grep "^$1 " $PKG_DIR/.list-remote &> /dev/null
}
function list_packages_local {
- cut -d ' ' -f 1 $PDIR/.list
+ cut -d ' ' -f 1 $PKG_DIR/.list
}
function list_packages_remote {
- cut -d ' ' -f 1 $PDIR/.list-remote
+ cut -d ' ' -f 1 $PKG_DIR/.list-remote
}
function list_incoming {
@@ -332,19 +339,19 @@ function list_incoming {
}
function list_type {
- echo ${$(grep "^$1 " $PDIR/.list-remote)[2]}
+ echo ${$(grep "^$1 " $PKG_DIR/.list-remote)[2]}
}
function list_type_local {
- echo ${$(grep "^$1 " $PDIR/.list)[2]}
+ echo ${$(grep "^$1 " $PKG_DIR/.list)[2]}
}
function list_update_remote {
typeset tmpfile=$(mktemp -t pkglist.XXXXXX)
typeset -i ret=0
- export PDIR
+ export PKG_DIR
if [[ $PKG_PROTO == 'ssh' ]] {
- ssh $PKG_USER@$PKG_HOST "PDIR='$PDIR' $PKGLIST_PATH $PKG_PATH" > $tmpfile
+ ssh $PKG_USER@$PKG_HOST "PKG_DIR='$PKG_DIR' $PKGLIST_PATH $PKG_PATH" > $tmpfile
} elif [[ $PKG_PROTO == 'file' ]] {
$PKGLIST_PATH $PKG_PATH > $tmpfile
}
@@ -354,7 +361,7 @@ function list_update_remote {
die "remote list update failed\n" \
"-- note --\n" \
"There were recent changes in pkg involving the package root\n\n" \
- "You might want to copy the pkglist script ($PDIR/core/include/pkglist)\n" \
+ "You might want to copy the pkglist script ($PKG_DIR/core/include/pkglist)\n" \
"into the package root, so that it's available as\n" \
"$PKG_HOST:$PKG_PATH/pkglist\n"
"alternatively, set PKGLIST_PATH to the correct value (see pkg.conf(5))\n"
@@ -363,36 +370,36 @@ function list_update_remote {
}
function list_update_local {
- typeset all=${#$(echo $PDIR/*(/))}
+ typeset all=${#$(echo $PKG_DIR/*(/))}
typeset -i current=0
typeset i
- rm -f $PDIR/.list
+ rm -f $PKG_DIR/.list
for package in *(-/); {
(( current++ ))
progress $current $all 'Updating package list' $package
- vcs_to_list $package >> $PDIR/.list
+ vcs_to_list $package >> $PKG_DIR/.list
}
}
function list_package_update {
typeset list
- list=$(grep -v "^$1 " $PDIR/.list)
- echo $list > $PDIR/.list
- vcs_to_list $1 >> $PDIR/.list
+ list=$(grep -v "^$1 " $PKG_DIR/.list)
+ echo $list > $PKG_DIR/.list
+ vcs_to_list $1 >> $PKG_DIR/.list
}
function list_package_remove {
typeset list
- list=$(grep -v "^$1 " $PDIR/.list)
- echo $list > $PDIR/.list
+ list=$(grep -v "^$1 " $PKG_DIR/.list)
+ echo $list > $PKG_DIR/.list
}
function list_version_local {
- echo ${$(grep "^$1 " $PDIR/.list)[3]}
+ echo ${$(grep "^$1 " $PKG_DIR/.list)[3]}
}
function list_version_remote {
- echo ${$(grep "^$1 " $PDIR/.list-remote)[3]}
+ echo ${$(grep "^$1 " $PKG_DIR/.list-remote)[3]}
}
@@ -413,15 +420,15 @@ function real_priority {
function exec_hook {
typeset package=$1
typeset hook=$2
- if [[ -r $PDIR/$package/hooks/$hook ]] {
+ if [[ -r $PKG_DIR/$package/hooks/$hook ]] {
info "$package: executing hook $hook\n"
- cd $PDIR/$package
+ cd $PKG_DIR/$package
(source hooks/$hook)
}
}
function global_hook {
- cd $PDIR/$1
+ cd $PKG_DIR/$1
case $2 in
post-add)
exec_hook $1 post-add
@@ -460,13 +467,13 @@ function check_prereqs {
typeset -a -U install maybe_install
typeset warn info i
typeset package=$1
- [[ -r $PDIR/$package/prereqs ]] || return 0
- cd $PDIR/$package
+ [[ -r $PKG_DIR/$package/prereqs ]] || return 0
+ cd $PKG_DIR/$package
wrap_info $1
info "checking prerequisites\n"
function is_installed {
- [[ -d $PDIR/$1 ]]
+ [[ -d $PKG_DIR/$1 ]]
}
function perlmodule {
perl -M$1 < /dev/null 2> /dev/null
@@ -540,7 +547,7 @@ function check_prereqs {
# Write a package's documentation to .collected
# and symlink its binaries from ~/bin
function populate_collected {
- cd $PDIR/$1 || return
+ cd $PKG_DIR/$1 || return
typeset -i bins=0 bino=0 mans=0 mano=0
typeset i
@@ -550,7 +557,7 @@ function populate_collected {
section=${man:h:t}
manpage=${man:t}
if podchecker man/$section/$manpage &> /dev/null; then
- pod2man -u -s $section -c "$1 package" -r $HOME man/$section/$manpage > $PDIR/.collected/man/man$section/$manpage.$section
+ pod2man -u -s $section -c "$1 package" -r $HOME man/$section/$manpage > $PKG_DIR/.collected/man/man$section/$manpage.$section
say -n "+"
(( mans++ ))
else
@@ -560,7 +567,7 @@ function populate_collected {
}
for file in bin/*(N); {
if podchecker $file &> /dev/null; then
- pod2man -u $file > $PDIR/.collected/man/man1/${file:t}.1
+ pod2man -u $file > $PKG_DIR/.collected/man/man1/${file:t}.1
say -n "+"
(( bins++ ))
else
@@ -584,12 +591,12 @@ function populate_collected {
}
for file in bin/*(-*N); {
if [[ -L $HOME/$file || ! -e $HOME/$file ]] {
- if [[ $(readlink $HOME/$file) != (../${PDIR//$HOME\/}|$PDIR)/$1/$file ]] {
+ if [[ $(readlink $HOME/$file) != (../${PKG_DIR//$HOME\/}|$PKG_DIR)/$1/$file ]] {
rm -f $HOME/$file
- if [[ $PDIR == ${HOME}* ]] {
- ln -s ../${PDIR//$HOME\/}/$1/$file $HOME/$file
+ if [[ $PKG_DIR == ${HOME}* ]] {
+ ln -s ../${PKG_DIR//$HOME\/}/$1/$file $HOME/$file
} else {
- ln -s $PDIR/$1/$file $HOME/$file
+ ln -s $PKG_DIR/$1/$file $HOME/$file
}
}
} else {
@@ -602,22 +609,22 @@ function populate_collected {
# Assuming there are no packages with colliding files
function genocide_collected {
typeset i
- cd $PDIR/$1 || return
+ cd $PKG_DIR/$1 || return
wrap_info $1
info "Removing documentation"
for man in man/*/*(N); {
section=${man:h:t}
manual=${man:t}
- if [[ -e $PDIR/.collected/man/man$section/$manual.$section ]] {
- rm $PDIR/.collected/man/man$section/$manual.$section
+ if [[ -e $PKG_DIR/.collected/man/man$section/$manual.$section ]] {
+ rm $PKG_DIR/.collected/man/man$section/$manual.$section
}
}
for file in bin/*(N); {
- rm -f $PDIR/.collected/man/man1/${file:t}.1
+ rm -f $PKG_DIR/.collected/man/man1/${file:t}.1
}
clear_line
for file in bin/*(-*N); {
- if [[ $(readlink $HOME/$file) == (../${PDIR//$HOME\/}|$PDIR)/$1/$file ]] {
+ if [[ $(readlink $HOME/$file) == (../${PKG_DIR//$HOME\/}|$PKG_DIR)/$1/$file ]] {
rm -f $HOME/$file
}
}
@@ -625,8 +632,8 @@ function genocide_collected {
function update_provides {
typeset package
- for package in $PDIR/$1/provides/*(N:t); {
- if [[ -d $PDIR/$package ]] {
+ for package in $PKG_DIR/$1/provides/*(N:t); {
+ if [[ -d $PKG_DIR/$package ]] {
triggers+=$package
}
}
@@ -657,7 +664,7 @@ function wrap {
[[ -n $progress ]] && all=$(list_packages_local | wc -l)
[[ -n $progress ]] && current=0
for package in *(-/); {
- cd $PDIR
+ cd $PKG_DIR
(( current++ ))
[[ -n $progress ]] && progress $current $all $progress $package
$function $package
@@ -671,7 +678,7 @@ function wrap {
##
function pkg_add {
- if [[ -d $PDIR/$1 ]] {
+ if [[ -d $PKG_DIR/$1 ]] {
info "Package '$1' is already installed!\n"
exit 1
}
@@ -695,13 +702,13 @@ function pkg_push {
function pkg_remove {
check_installed $1
- if [[ -r $PDIR/$1/priority ]] {
- if (( $(cat $PDIR/$1/priority) > 3 )) {
- confirm_no "Package '$1' is $(real_priority $(cat $PDIR/$1/priority)). Really remove?" || return
+ if [[ -r $PKG_DIR/$1/priority ]] {
+ if (( $(cat $PKG_DIR/$1/priority) > 3 )) {
+ confirm_no "Package '$1' is $(real_priority $(cat $PKG_DIR/$1/priority)). Really remove?" || return
}
}
global_hook $1 pre-remove
- rm -rf $PDIR/$1
+ rm -rf $PKG_DIR/$1
info "Package removed.\n"
}
@@ -754,8 +761,8 @@ function pkg_status {
function pkg_refresh {
check_installed $1
global_hook $1 pre-update
- if [[ -r $PDIR/$1/Makefile ]] (
- cd $PDIR/$1
+ if [[ -r $PKG_DIR/$1/Makefile ]] (
+ cd $PKG_DIR/$1
wrap_info $1
info "Cleaning build diroctery\n"
make clean
@@ -844,7 +851,7 @@ function pkg_log {
## Now what shall we do...
##
-cd $PDIR || die "Cannot cd $PDIR"
+cd $PKG_DIR || die "Cannot cd $PKG_DIR"
# Note:
# wrap foobar "$1" <- the "" are neccessary here, since $1 is optional (and therefore may be empty)