diff --git a/pkgquery b/pkgquery
index eea1b1b..a6266ba 100755
--- a/pkgquery
+++ b/pkgquery
@@ -18,342 +18,6 @@
# along with this program. If not, see .
#
-msg() {
- echo "==> $1"
-}
+echo "*** ${0##*/} is deprecated, please use 'scratch' instead ***"
-msgerr() {
- msg "ERROR: $*"
-}
-
-msgwarn() {
- msg "WARNING: $*"
-}
-
-msginst() {
- echo "[i] $1"
-}
-
-msgmiss() {
- echo "[m] $1"
-}
-
-msgnoinst() {
- echo "[-] $1"
-}
-
-needarg() {
- [ "$*" ] || {
- msgerr "This operation required an arguments!"
- exit 1
- }
-}
-
-isinstalled() {
- if [ -s "$INDEX_DIR/$1/.pkginfo" ] && [ "$(grep $1 $INDEX_DIR/$1/.pkginfo)" ]; then
- return 0
- else
- return 1
- fi
-}
-
-allinstalled() {
- grep ^name "$INDEX_DIR"/*/.pkginfo | awk '{print $3}'
-}
-
-installed_pkg_info() {
- if isinstalled $1; then
- grep ^$2 "$INDEX_DIR/$1/.pkginfo" | cut -d " " -f3-
- fi
-}
-
-deps_alias() {
- [ -f $ALIAS_FILE ] || {
- echo $@
- return
- }
- while [ "$1" ]; do
- getalias=$(grep -w ^$1 $ALIAS_FILE | awk '{print $2}')
- echo ${getalias:-$1}
- shift
- done
- unset getalias
-}
-
-getdepends() {
- ppath=$(getportpath $1) || return 0
- deps=$(grep "^# depends[[:blank:]]*:" $ppath/$BUILD_SCRIPT \
- | sed 's/^# depends[[:blank:]]*:[[:blank:]]*//' \
- | tr ' ' '\n' \
- | awk '!a[$0]++' \
- | sed 's/,//')
- deps_alias $deps
-}
-
-getportpath() {
- for repo in $REPO; do
- if [ -f $repo/$1/$BUILD_SCRIPT ]; then
- dirname $repo/$1/$BUILD_SCRIPT
- return 0
- fi
- done
- return 1
-}
-
-pkg_dependent() {
- needarg $@
- if [ "$(getportpath $1)" ]; then
- grep -R "# depends[[:blank:]]*:" $REPO \
- | sed "s,:# depends[[:blank:]]*:[[:blank:]]*,#|,;s, ,|,g;s,$,|,g" \
- | grep "|$1|" \
- | awk -F "#" '{print $1}' \
- | rev \
- | awk -F / '{print $2}' \
- | rev
- else
- msgerr "Port '$1' not exist."
- return 1
- fi
-}
-
-pkg_orphan() {
- tmpallpkg="/tmp/.pkgquery_allpkg.$$"
- tmpalldep="/tmp/.pkgquery_alldep.$$"
- for pkg in $(allinstalled); do
- echo $pkg >> $tmpallpkg
- dep="$dep $(getdepends $pkg)"
- done
- echo $dep | tr ' ' '\n' | sort | uniq > "$tmpalldep"
- grep -xvF -f "$tmpalldep" "$tmpallpkg"
- rm "$tmpalldep" "$tmpallpkg"
-}
-
-pkg_dup() {
- dup=$(find $REPO -type d -print | grep -Exv "($(echo $REPO | tr ' ' '|'))" | \
- rev | cut -d '/' -f1 | rev | sort | uniq -d)
-
- if [ "$dup" ]; then
- for dp in $dup; do
- for repo in $REPO; do
- [ -d $repo/$dp ] && echo "$repo/$dp"
- done
- done
- else
- msg "No duplicate ports found."
- fi
-}
-
-pkg_foreign() {
- for pkg in $(allinstalled); do
- if ! getportpath $pkg >/dev/null; then
- iname=$(installed_pkg_info $pkg name)
- iversion=$(installed_pkg_info $pkg version)
- irelease=$(installed_pkg_info $pkg release)
- echo "$iname $iversion-$irelease"
- fi
- unset iname iversion irelease
- done
-}
-
-pkg_search() {
- needarg $@
- arg=$*
- for repo in $REPO; do
- out=$(grep -R "# description" $repo | grep $BUILD_SCRIPT | grep "$arg" | awk -F : '{print $1}' | sort)
- [ "$out" ] || continue
- for line in $out; do
- repo=$(echo $line | rev | awk -F / '{print $3}' | rev)
- desc=$(grep "^# description[[:blank:]]*:" $line | sed 's/^# description[[:blank:]]*:[[:blank:]]*//')
- . $line
- echo "($repo) $name $version-$release: $desc"
- unset repo desc name version release build
- done
- unset out
- done
-}
-
-pkg_locked() {
- for pkg in $(allinstalled); do
- [ -f "$INDEX_DIR/$pkg/.lock" ] && echo "$pkg"
- done
-}
-
-pkg_installed() {
- for all in $(allinstalled); do
- printf "%s" "$all "
- grep -e ^version -e ^release $INDEX_DIR/$all/.pkginfo | awk '{print $3}' | tr '\n' '-' | sed 's:\-$::'
- echo
- done
-}
-
-pkg_missingdep() {
- for pkg in $(allinstalled); do
- if getportpath "$pkg" >/dev/null; then
- depends=$(getdepends $pkg)
- fi
- if [ "$depends" ]; then
- for d in $depends; do
- if ! isinstalled $d; then
- if [ -z "$msd" ]; then
- msd="$d"
- else
- msd="$msd $d"
- fi
- fi
- done
- fi
- [ "$msd" ] && echo "$pkg: $msd"
- unset depends msd
- done
-}
-
-pkg_info() {
- needarg $@
- ppath=$(getportpath $1) || return 1
-
- . $ppath/$BUILD_SCRIPT
- desc=$(grep "^# description[[:blank:]]*:" $ppath/$BUILD_SCRIPT | sed 's/^# description[[:blank:]]*:[[:blank:]]*//')
- url=$(grep "^# homepage[[:blank:]]*:" $ppath/$BUILD_SCRIPT | sed 's/^# homepage[[:blank:]]*:[[:blank:]]*//')
- maint=$(grep "^# maintainer[[:blank:]]*:" $ppath/$BUILD_SCRIPT | sed 's/^# maintainer[[:blank:]]*:[[:blank:]]*//')
- deps=$(getdepends $1 | tr '\n' ' ')
-
- echo "Name: $1"
- echo "Path: $ppath"
- echo "Version: $version"
- echo "Release: $release"
- echo "Description: $desc"
- echo "Homepage: $url"
- echo "Maintainer: $maint"
- echo "Dependencies: $deps"
-}
-
-pkg_depends() {
- needarg $@
- if getportpath "$1" >/dev/null; then
- depends=$(getdepends $1)
- else
- msgerr "Port '$1' not exist."
- return 1
- fi
-
- for dep in $depends; do
- if isinstalled $dep; then
- msginst "$dep"
- elif getportpath $dep >/dev/null; then
- msgnoinst "$dep"
- else
- msgmiss "$dep"
- fi
- done
-}
-
-pkg_path() {
- needarg $@
- if PPATH=$(getportpath "$1"); then
- echo "$PPATH"
- else
- msgerr "Port '$1' not exist."
- return 1
- fi
-}
-
-pkg_provide() {
- needarg $@
- arg=$(echo $1 | sed "s/^\///")
- grep -R "$arg" $INDEX_DIR/*/.files \
- | sed "s:$INDEX_DIR/::" \
- | sed "s:/.files::" \
- | tr : " " \
- | column -t
-}
-
-pkg_readme() {
- needarg $@
- if PPATH=$(getportpath "$1"); then
- if [ -f "$PPATH/readme" ]; then
- cat "$PPATH/readme"
- else
- msgerr "Port '$1' does not have readme."
- fi
- else
- msgerr "Port '$1' not exist."
- exit 1
- fi
-}
-
-pkg_files() {
- needarg $@
- if isinstalled $1; then
- cat "$INDEX_DIR/$1/.files"
- else
- msg "Package '$1' not installed."
- fi
-}
-
-pkg_cat() {
- needarg $@
- if PPATH=$(getportpath "$1"); then
- cat "$PPATH/$BUILD_SCRIPT"
- else
- msgerr "Port '$1' not exist."
- return 1
- fi
-}
-
-pkg_help() {
- cat << EOF
-Usage:
- $(basename $0) []
-
-Options:
- search find ports in repo
- cat print spkgbuild
- depends print dependencies
- dependent print dependent
- path print path in repo
- provide print port's provided files
- readme print readme file, if exist
- files print files installed
- info print information
- dup print duplicate ports in repo
- installed print all installed ports
- locked print loacked ports
- missingdep print missing dependencies
- orphan print orphan installed ports
- foreign print foreign ports
- help print this help msg
-
-EOF
-}
-
-print_runhelp_msg() {
- echo "Run '$(basename $0) help' to see available options."
- exit 2
-}
-
-BUILD_SCRIPT="spkgbuild"
-INDEX_DIR="/var/lib/scratchpkg/index"
-REPO_FILE="/etc/scratchpkg.repo"
-ALIAS_FILE="/etc/scratchpkg.alias"
-
-if [ -f "$REPO_FILE" ]; then
- for repodir in $(grep -Ev '^(#|$)' "$REPO_FILE" | awk '{print $1}'); do
- REPO="$REPO $repodir"
- done
-fi
-
-opts=$1
-
-if [ -z "$opts" ]; then
- print_runhelp_msg
-fi
-
-shift
-
-if [ $(command -v pkg_$opts) ]; then
- pkg_$opts "$@"
-else
- print_runhelp_msg
-fi
-
-exit $?
+exit 0
diff --git a/scratch b/scratch
index 5b09089..ade0d59 100755
--- a/scratch
+++ b/scratch
@@ -1131,6 +1131,189 @@ deplist() {
CHECK=$(echo $CHECK | sed "s/$1//")
}
+scratch_cat() {
+ needarg $@
+ if PPATH=$(getportpath "$1"); then
+ cat "$PPATH/$BUILD_SCRIPT"
+ else
+ msgerr "Port '$1' not exist."
+ return 1
+ fi
+}
+
+scratch_dependent() {
+ needarg $@
+ if [ "$(getportpath $1)" ]; then
+ grep -R "# depends[[:blank:]]*:" $PORT_REPO \
+ | sed "s,:# depends[[:blank:]]*:[[:blank:]]*,#|,;s, ,|,g;s,$,|,g" \
+ | grep "|$1|" \
+ | awk -F "#" '{print $1}' \
+ | rev \
+ | awk -F / '{print $2}' \
+ | rev
+ else
+ msgerr "Port '$1' not exist."
+ return 1
+ fi
+}
+
+scratch_depends() {
+ needarg $@
+ if getportpath "$1" >/dev/null; then
+ depends=$(get_depends $1)
+ else
+ msgerr "Port '$1' not exist."
+ return 1
+ fi
+
+ for dep in $depends; do
+ if isinstalled $dep; then
+ msginst "$dep"
+ elif getportpath $dep >/dev/null; then
+ msgnoinst "$dep"
+ else
+ msgmiss "$dep"
+ fi
+ done
+}
+
+scratch_dup() {
+ dup=$(find $PORT_REPO -type d -print | grep -Exv "($(echo $PORT_REPO | tr ' ' '|'))" | \
+ rev | cut -d '/' -f1 | rev | sort | uniq -d)
+
+ if [ "$dup" ]; then
+ for dp in $dup; do
+ for repo in $PORT_REPO; do
+ [ -d $repo/$dp ] && echo "$repo/$dp"
+ done
+ done
+ else
+ msg "No duplicate ports found."
+ fi
+}
+
+scratch_foreign() {
+ for pkg in $(allinstalled); do
+ if ! getportpath $pkg >/dev/null; then
+ iname=$(installed_pkg_info name $pkg)
+ iversion=$(installed_pkg_info version $pkg)
+ irelease=$(installed_pkg_info release $pkg)
+ echo "$iname $iversion-$irelease"
+ fi
+ unset iname iversion irelease
+ done
+}
+
+scratch_info() {
+ needarg $@
+ ppath=$(getportpath $1) || return 1
+
+ . $ppath/$BUILD_SCRIPT
+ desc=$(grep "^# description[[:blank:]]*:" $ppath/$BUILD_SCRIPT | sed 's/^# description[[:blank:]]*:[[:blank:]]*//')
+ url=$(grep "^# homepage[[:blank:]]*:" $ppath/$BUILD_SCRIPT | sed 's/^# homepage[[:blank:]]*:[[:blank:]]*//')
+ maint=$(grep "^# maintainer[[:blank:]]*:" $ppath/$BUILD_SCRIPT | sed 's/^# maintainer[[:blank:]]*:[[:blank:]]*//')
+ deps=$(get_depends $1 | tr '\n' ' ')
+
+ echo "Name: $1"
+ echo "Path: $ppath"
+ echo "Version: $version"
+ echo "Release: $release"
+ echo "Description: $desc"
+ echo "Homepage: $url"
+ echo "Maintainer: $maint"
+ echo "Dependencies: $deps"
+}
+
+scratch_installed() {
+ for all in $(allinstalled); do
+ printf "%s" "$all "
+ grep -e ^version -e ^release $INDEX_DIR/$all/.pkginfo | awk '{print $3}' | tr '\n' '-' | sed 's:\-$::'
+ echo
+ done
+}
+
+scratch_missingdep() {
+ for pkg in $(allinstalled); do
+ if getportpath "$pkg" >/dev/null; then
+ depends=$(get_depends $pkg)
+ fi
+ if [ "$depends" ]; then
+ for d in $depends; do
+ if ! isinstalled $d; then
+ if [ -z "$msd" ]; then
+ msd="$d"
+ else
+ msd="$msd $d"
+ fi
+ fi
+ done
+ fi
+ [ "$msd" ] && echo "$pkg: $msd"
+ unset depends msd
+ done
+}
+
+scratch_locked() {
+ for pkg in $(allinstalled); do
+ [ -f "$INDEX_DIR/$pkg/.lock" ] && echo "$pkg"
+ done
+}
+
+scratch_orphan() {
+ tmpallpkg="/tmp/.pkgquery_allpkg.$$"
+ tmpalldep="/tmp/.pkgquery_alldep.$$"
+ for pkg in $(allinstalled); do
+ echo $pkg >> $tmpallpkg
+ dep="$dep $(get_depends $pkg)"
+ done
+ echo $dep | tr ' ' '\n' | sort | uniq > "$tmpalldep"
+ grep -xvF -f "$tmpalldep" "$tmpallpkg"
+ rm "$tmpalldep" "$tmpallpkg"
+}
+
+scratch_path() {
+ needarg $@
+ if PPATH=$(getportpath "$1"); then
+ echo "$PPATH"
+ else
+ msgerr "Port '$1' not exist."
+ return 1
+ fi
+}
+
+scratch_provide() {
+ needarg $@
+ arg=$(echo $1 | sed "s/^\///")
+ grep -R "$arg" $INDEX_DIR/*/.files \
+ | sed "s:$INDEX_DIR/::" \
+ | sed "s:/.files::" \
+ | tr : " " \
+ | column -t
+}
+
+scratch_readme() {
+ needarg $@
+ if PPATH=$(getportpath "$1"); then
+ if [ -f "$PPATH/readme" ]; then
+ cat "$PPATH/readme"
+ else
+ msgerr "Port '$1' does not have readme."
+ fi
+ else
+ msgerr "Port '$1' not exist."
+ exit 1
+ fi
+}
+
+scratch_files() {
+ needarg $@
+ if isinstalled $1; then
+ cat "$INDEX_DIR/$1/.files"
+ else
+ msg "Package '$1' not installed."
+ fi
+}
+
scratch_help() {
cat << EOF
Usage:
@@ -1162,14 +1345,28 @@ Options:
build build ports (use pkgbuild arg, except '-i', '-u', '-r', '-g', & '-p')
- lock locking ports prevent upgrade
- unlock unlock locked ports
- trigger [ports] run system trigger
+ lock locking ports prevent upgrade
+ unlock unlock locked ports
+ trigger [ports] run system trigger
+ search find ports in repo
+ cat print spkgbuild
+ depends print dependencies
+ dependent print dependent
+ path print path in repo
+ provide print port's provided files
+ readme print readme file, if exist
+ files print files installed
+ info print information
sync update ports database
- search find ports in repo
outdate print outdated ports
cache print and clear old pkg and src caches
integrity check installed port integrity
+ dup print duplicate ports in repo
+ installed print all installed ports
+ locked print loacked ports
+ missingdep print missing dependencies
+ orphan print orphan installed ports
+ foreign print foreign ports
help print this help msg
Global options: