Added dep tracking
This commit is contained in:
parent
04042c4108
commit
872362f202
2 changed files with 110 additions and 10 deletions
116
lazy.sh
116
lazy.sh
|
@ -22,13 +22,36 @@ find_fail() {
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
i= u= l= f= o=
|
continue_interactive() {
|
||||||
|
read -p "Do you wish to proceed?: " yn
|
||||||
|
case $yn in
|
||||||
|
[Yy]* ) break;;
|
||||||
|
[Nn]* ) exit;;
|
||||||
|
* ) exit;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
already_exists() {
|
||||||
|
echo "Package already installed"
|
||||||
|
echo "pass -u and -i to upgrade"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
dep_not_found() {
|
||||||
|
echo "Missing dep: $1"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
i= u= l= f= o= d= iu=
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-i) i=1;;
|
-i) i=1;;
|
||||||
-u) u=1;;
|
-u) u=1;;
|
||||||
-l) l=1;;
|
-l) l=1;;
|
||||||
-f) f=1;;
|
-f) f=1;;
|
||||||
|
-d) d=1;;
|
||||||
|
-iu) iu=1;;
|
||||||
|
-ui) iu=1;;
|
||||||
*) usage "bad argument $i";;
|
*) usage "bad argument $i";;
|
||||||
esac
|
esac
|
||||||
shift
|
shift
|
||||||
|
@ -44,17 +67,92 @@ do
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$i" = "1" ]; then
|
if [ "$d" = "1" ]; then
|
||||||
echo "Installing $1"
|
stat /usr/share/lazypkg/$1 > /dev/null 2> /dev/null || find_fail
|
||||||
mkdir -p /tmp/lazybox/$1 || exit 1
|
grep deps /usr/share/lazypkg/$1 | tr '=' '\n' | grep -v deps | tr ':' '\n'
|
||||||
tar -xf $1 -C /tmp/lazybox/$1 || tar_fail
|
|
||||||
stat /tmp/lazybox/$1/usr/share/lazypkg/ >/dev/null || stat_fail
|
elif [ "$iu" = "1" ]; then
|
||||||
|
# Setup names
|
||||||
|
bname_we=$(basename "$1")
|
||||||
|
bname=$(echo "$bname_we" | cut -f 1 -d '.')
|
||||||
|
|
||||||
|
# locate installed package
|
||||||
|
stat /usr/share/lazypkg/$bname > /dev/null 2> /dev/null || find_fail
|
||||||
|
|
||||||
|
echo "Upgrading $bname_we"
|
||||||
|
continue_interactive
|
||||||
|
|
||||||
|
# Extract new package and verify
|
||||||
|
mkdir -p /tmp/lazybox/$bname_we || exit 1
|
||||||
|
tar -xf $1 -C /tmp/lazybox/$bname_we || tar_fail
|
||||||
|
stat /tmp/lazybox/$bname_we/usr/share/lazypkg/$bname >/dev/null || stat_fail
|
||||||
|
|
||||||
|
# Check deps
|
||||||
|
deps=$(grep deps /tmp/lazybox/$bname_we/usr/share/lazypkg/$bname | tr '=' '\n' | grep -v deps | tr ':' '\n')
|
||||||
|
for dep in $deps; do
|
||||||
|
stat /usr/share/lazypkg/$dep > /dev/null 2> /dev/null || dep_not_found $dep
|
||||||
|
done
|
||||||
|
|
||||||
|
# Grab a list of old files and new files to install
|
||||||
|
OFILES=$(sed -n '/\[fs\]/,$p' /usr/share/lazypkg/$bname |
|
||||||
|
grep -v "\[fs\]" | awk '{print length, $0}' | sort -rn | cut -d " " -f2-)
|
||||||
|
NFILES=$(sed -n '/\[fs\]/,$p' /tmp/lazybox/$bname_we/usr/share/lazypkg/$bname |
|
||||||
|
grep -v "\[fs\]" | awk '{print length, $0}' | sort -rn | cut -d " " -f2-)
|
||||||
|
|
||||||
|
# Extract tar
|
||||||
tar -xf $1 -C /
|
tar -xf $1 -C /
|
||||||
rm -r /tmp/lazybox/$1
|
rm -r /tmp/lazybox/$bname_we
|
||||||
|
|
||||||
|
|
||||||
|
# Remove old files (don't know if this works yet)
|
||||||
|
for file in $OFILES; do
|
||||||
|
if echo $NFILES | grep -q $file; then
|
||||||
|
echo "not removing $file"
|
||||||
|
else
|
||||||
|
echo "attempting to remove $file"
|
||||||
|
case $(stat -c "%F" /$file) in
|
||||||
|
directory) rmdir 2>/dev/null /$file;;
|
||||||
|
"regular file") rm /$file;;
|
||||||
|
*) break;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo $OFILES
|
||||||
|
|
||||||
|
elif [ "$i" = "1" ]; then
|
||||||
|
bname_we=$(basename "$1")
|
||||||
|
bname=$(echo "$bname_we" | cut -f 1 -d '.')
|
||||||
|
stat /usr/share/lazypkg/$bname > /dev/null 2> /dev/null && already_exists
|
||||||
|
echo "Installing $bname_we"
|
||||||
|
continue_interactive
|
||||||
|
mkdir -p /tmp/lazybox/$bname_we || exit 1
|
||||||
|
tar -xf $1 -C /tmp/lazybox/$bname_we || tar_fail
|
||||||
|
stat /tmp/lazybox/$bname_we/usr/share/lazypkg/$bname >/dev/null || stat_fail
|
||||||
|
deps=$(grep deps /tmp/lazybox/$bname_we/usr/share/lazypkg/$bname | tr '=' '\n' | grep -v deps | tr ':' '\n')
|
||||||
|
for dep in $deps; do
|
||||||
|
stat /usr/share/lazypkg/$dep > /dev/null 2> /dev/null || dep_not_found $dep
|
||||||
|
done
|
||||||
|
tar -xf $1 -C /
|
||||||
|
rm -r /tmp/lazybox/$bname_we
|
||||||
elif [ "$f" = "1" ]; then
|
elif [ "$f" = "1" ]; then
|
||||||
stat /usr/share/lazypkg/$1 > /dev/null || find_fail
|
stat /usr/share/lazypkg/$1 > /dev/null 2> /dev/null || find_fail
|
||||||
sed -n '/\[fs\]/,$p' /usr/share/lazypkg/$1 | grep -v "\[fs\]"
|
sed -n '/\[fs\]/,$p' /usr/share/lazypkg/$1 | grep -v "\[fs\]"
|
||||||
elif [ "$l" = "1" ]; then
|
elif [ "$l" = "1" ]; then
|
||||||
stat /usr/share/lazypkg/$1 > /dev/null || find_fail
|
stat /usr/share/lazypkg/$1 > /dev/null 2> /dev/null || find_fail
|
||||||
sed -n '/\[license\]/,/\[fs\]/{/\[license\]\|\[fs\]/!p}' /usr/share/lazypkg/$1
|
sed -n '/\[license\]/,/\[fs\]/{/\[license\]\|\[fs\]/!p}' /usr/share/lazypkg/$1
|
||||||
|
elif [ "$u" = "1" ]; then
|
||||||
|
stat /usr/share/lazypkg/$1 > /dev/null 2> /dev/null || find_fail
|
||||||
|
FILES=$(sed -n '/\[fs\]/,$p' /usr/share/lazypkg/$1 | grep -v "\[fs\]" | awk '{print length, $0}' | sort -rn | cut -d " " -f2-)
|
||||||
|
|
||||||
|
echo "Uninstalling $1"
|
||||||
|
continue_interactive
|
||||||
|
|
||||||
|
for file in $FILES; do
|
||||||
|
case $(stat -c "%F" /$file) in
|
||||||
|
directory) rmdir 2>/dev/null /$file;;
|
||||||
|
"regular file") rm /$file;;
|
||||||
|
*) break;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -14,8 +14,8 @@ function do_fetch() {
|
||||||
srcdir=$(pwd) fetch
|
srcdir=$(pwd) fetch
|
||||||
}
|
}
|
||||||
|
|
||||||
stat src > /dev/null 2>/dev/null || do_fetch
|
|
||||||
srcdir=$(pwd)/src
|
srcdir=$(pwd)/src
|
||||||
|
stat src > /dev/null 2>/dev/null || do_fetch
|
||||||
|
|
||||||
cd $srcdir
|
cd $srcdir
|
||||||
|
|
||||||
|
@ -34,6 +34,7 @@ cat > $dir/out/$pkgname/usr/share/lazypkg/$pkgname << EOF
|
||||||
[pkg]
|
[pkg]
|
||||||
name=$pkgname
|
name=$pkgname
|
||||||
ver=$pkgver
|
ver=$pkgver
|
||||||
|
deps=$deps
|
||||||
|
|
||||||
[license]
|
[license]
|
||||||
EOF
|
EOF
|
||||||
|
@ -66,6 +67,7 @@ echo $ext | tr ':' '\n' | while read e; do
|
||||||
[pkg]
|
[pkg]
|
||||||
name=$pkgname-\$e
|
name=$pkgname-\$e
|
||||||
ver=$pkgver
|
ver=$pkgver
|
||||||
|
deps=$pkgname
|
||||||
|
|
||||||
[license]
|
[license]
|
||||||
EOF
|
EOF
|
||||||
|
|
Loading…
Reference in a new issue