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…
	
	Add table
		Add a link
		
	
		Reference in a new issue