This commit is contained in:
emmett1
2019-07-10 17:38:22 +08:00
parent 1d82a53384
commit 33db7d1a3e
2 changed files with 62 additions and 43 deletions

70
pkginfo
View File

@@ -4,8 +4,16 @@ msg() {
echo "$CMD: $*"
}
get_info() {
echo -ne "$1 "
grep -e ^version -e ^release "$INDEX_DIR"/$1/.pkginfo | awk '{print $3}' | tr '\n' '-' | sed 's:\-$::'
echo
}
pkg_installed() {
grep version "$INDEX_DIR"/*/.pkginfo | sed "s:$INDEX_DIR::" | tr '/' ' ' | awk '{print $1,$4}'
for pkg in $(grep ^name "$INDEX_DIR"/*/.pkginfo | awk '{print $3}'); do
get_info $pkg
done
}
pkg_listfiles() {
@@ -47,49 +55,53 @@ pkg_query() {
return
}
get_repo() {
if [ ! -f "$REPOFILE" ]; then
msg "repo file not exist. ($REPOFILE)"
exit 1
else
while read -r repodir repourl junk; do
case $repodir in
""|"#"*) continue ;;
esac
PORT_REPO+=($repodir)
done < "$REPOFILE"
fi
}
usage() {
cat << EOF
Usage:
$(basename $0) help <operation>
$(basename $0) <option> [arg]
Operation:
build build package
install install packages
upgrade upgrade packages
sysup full system upgrades
remove remove packages
extra various extra options
Options:
-i,--installed print all installed ports
-p,--ports print all existing ports
-d,--diff print outdate ports
-l,--listfiles <port> print files for ports
-o,--owner <file> print files owner
-q,--query <port> print ports details
EOF
}
main() {
get_repo
case $1 in
-i|--installed) pkg_installed $2 ;;
-i|--installed) pkg_installed ;;
-l|--listfiles) pkg_listfiles $2 ;;
-o|--own) pkg_own $2 ;;
-p|--ports) pkg_port ;;
-d|--diff) pkg_diff ;;
-q|--query) pkg_query $2 ;;
*) usage ;;
-o|--owner) pkg_own $2 ;;
-p|--ports) pkg_port ;;
-d|--diff) pkg_diff ;;
-q|--query) pkg_query $2 ;;
*) usage ;;
esac
}
INDEX_DIR=/var/lib/scratchpkg/index
INDEX_DIR="/var/lib/scratchpkg/index"
REPOFILE="/etc/scratchpkg.repo"
CMD=$(basename $0)
REPOFILE=/etc/scratchpkg.repo
if [ ! -f "$REPOFILE" ]; then
msg "repo file not exist. ($REPOFILE)"
exit 1
else
while read -r repodir repourl junk; do
case $repodir in
""|"#"*) continue ;;
esac
PORT_REPO+=($repodir)
done < "$REPOFILE"
fi
main $@

35
scratch
View File

@@ -104,11 +104,16 @@ installed_pkg_info() {
}
allinstalled() {
for i in $INDEX_DIR/*; do
if isinstalled ${i##*/}; then
echo ${i##*/}
fi
done
grep ^name "$INDEX_DIR"/*/.pkginfo | awk '{print $3}'
#for i in $INDEX_DIR/*; do
#if isinstalled ${i##*/}; then
#echo ${i##*/}
#fi
#done
}
get_depends() {
grep "^# depends[[:blank:]]*:" $(getportpath "$1")/$BUILD_SCRIPT | sed 's/^# depends[[:blank:]]*:[[:blank:]]*//' | tr ' ' '\n' | awk '!a[$0]++'
}
confirm() {
@@ -159,7 +164,7 @@ scratch_missingdep() {
for pkg in $(allinstalled); do
if [ $(getportpath "$pkg") ]; then
depends=$(grep "^# depends[[:blank:]]*:" $(getportpath "$pkg")/$BUILD_SCRIPT | sed 's/^# depends[[:blank:]]*:[[:blank:]]*//' | tr ' ' '\n' | awk '!a[$0]++')
depends=$(get_depends $pkg)
fi
if [ "$depends" ]; then
for d in ${depends[@]}; do
@@ -221,7 +226,11 @@ scratch_integrity() {
}
scratch_listinst() {
grep version "$INDEX_DIR"/*/.pkginfo | sed "s:$INDEX_DIR::" | tr '/' ' ' | awk '{print $1,$4}'
for all in $(allinstalled); do
echo -ne "$all "
grep -e ^version -e ^release $INDEX_DIR/$all/.pkginfo | awk '{print $3}' | tr '\n' '-' | sed 's:\-$::'
echo
done
}
scratch_listorphan() {
@@ -230,7 +239,7 @@ scratch_listorphan() {
tmpalldep=$(mktemp)
for pkg in $(allinstalled); do
echo $pkg >> $tmpallpkg
dep="$dep $(grep "^# depends[[:blank:]]*:" $(getportpath $pkg)/$BUILD_SCRIPT 2>/dev/null | sed 's/^# depends[[:blank:]]*:[[:blank:]]*//' | tr ' ' '\n' | awk '!a[$0]++')"
dep="$dep $(get_depends $pkg)"
done
echo $dep | tr ' ' '\n' | sort | uniq > $tmpalldep
grep -xvF -f $tmpalldep $tmpallpkg
@@ -282,7 +291,7 @@ scratch_depends() {
local dep
if [ $(getportpath "$1") ]; then
depends=$(grep "^# depends[[:blank:]]*:" $(getportpath "$1")/$BUILD_SCRIPT | sed 's/^# depends[[:blank:]]*:[[:blank:]]*//' | tr ' ' '\n' | awk '!a[$0]++')
depends=$(get_depends $1)
else
msgerr "Port '$1' not exist."
exit 1
@@ -304,9 +313,8 @@ scratch_isorphan() {
for pkg in $(allinstalled); do
pkgpath=$(getportpath $pkg)
#echo $pkgpath
if [ $pkgpath ]; then
depend=$(grep "^# depends[[:blank:]]*:" $pkgpath/$BUILD_SCRIPT | sed 's/^# depends[[:blank:]]*:[[:blank:]]*//' | tr ' ' '\n' | awk '!a[$0]++')
depend=$(get_depends $pkg)
for dep in ${depend[@]}; do
if [ $dep = $1 ]; then
return 1
@@ -338,6 +346,7 @@ scratch_dependent() {
else
msgnoinst "$pname"
fi
break
fi
done
done
@@ -357,9 +366,7 @@ scratch_files() {
if ! isinstalled $1; then
msg "Package'$1' not installed."
else
while read -r line; do
echo "$line"
done < <(cat $INDEX_DIR/$1/.files)
cat $INDEX_DIR/$1/.files
fi
}