#!/bin/bash # # zrm (Zenwalk Repository Manager) # Version 0.7 # # This script provides an easy way to manage the zenwalk repository # It should be placed and run from inside the i486 directory in the repos, # where the snapshot and current dirs are located. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License (version 2) # as published by the Free Software Foundation # # Written by George Vlahavas (vlahavas~at~gmail~dot~com, gapan@zenwalk forums) # # Changelog: # 0.1 - First version # 0.2 - Doesn't push src files with invalid URLs or links to directories # 0.3 - Fixes faulty sourceforge links, "update CURRENT and SNAPSHOT database" now calls updatedb twice # 0.4 - Removed md5 files when removing packages # 0.5 - Added support for tlz packages # 0.6 - Added new support to update more zenwalk version # 0.7 - Added current repo instead of snapshot (F. Boulet) LANG=en_US # Default editor for editing the package URL list EDITOR=vi # Define main repo SNAP="CURRENT" REPON="CURRENT EXTRA" REPON1=zenwalk-6.4 # Removes all temp files created by this script rmtmp() { rm -rf .zrm-temp } # Main menu mainmenu() { dialog --title "Zenwalk Repository Manager" \ --menu "What to you want to do?" 40 70 25 \ "1" "Add/update packages to $SNAP" \ "2" "Add/update packages to $REPON" \ "3" "Add/update packages to $REPON1" \ "4" "Delete packages from CURRENT" \ "5" "Move packages to a different category in CURRENT" \ "6" "Move packages to a different category in CURRENT" \ "7" "Move packages from SNAPSHOT to CURRENT" \ "8" "Move packages from CURRENT to SNAPSHOT" \ "a" "Update SNAPSHOT repository database" \ "b" "Update CURRENT repository database" \ "c" "Update CURRENT and SNAPSHOT repository database" 2> .zrm-temp/mainmenu retval=$? MAINMENU=`cat .zrm-temp/mainmenu` rm -f .zrm-temp/mainmenu case $retval in 0) menueval mainmenu;; 1) ;; esac } # Evaluates user input in main menu and takes appropriate action menueval() { case $MAINMENU in 1) # Add/update packages to CURRENT REPO=current/zenwalk addupdatepkg ;; 2) # Add/update packages to CURRENT EXTRA REPO=current/extra addupdatepkg ;; 3) # Add/update packages to zenwalk-6.4 REPO=$REPON1/packages addupdatepkg ;; 4) # Delete packages from snapshot REPO=snapshot deletepkg ;; 5) # Move packages to a different category in snapshot REPO=snapshot changepkgdir ;; 6) # Move packages to a different category in current REPO=current changepkgdir ;; 7) # Move packages from snapshot to current mvpkgsnaptocur ;; 8) # Move packages from current to snapshot mvpkgcurtosnap ;; a) # Update snapshot repository database REPO=snapshot updatedb ;; b) # Update current repository database REPO=current updatedb ;; c) # Update current and snapshot repositories database REPO=current updatedb REPO=snapshot updatedb ;; esac } # This presents a dialog to choose the repo category selectpkgdir() { dialog --title "$PKGNAME" \ --menu "Select the directory to place package $PKGNAME. Press Cancel to skip this package.\n\n" 40 70 25 \ "a" "Basic software for the computer to run" \ "ap" "Various non-graphical applications" \ "d" "Program development tools" \ "l" "Libraries required by many other programs" \ "n" "Networking programs" \ "x" "The base X Window System" \ "xap" "Various graphical applications. " \ "extra/a" "Additional basic system software" \ "extra/ap" "Additional non-graphical applications" \ "extra/d" "Additional program development tools" \ "extra/e" "The Enlightenment Window Manager" \ "extra/f" "FAQs, HOWTOs, and other documentation" \ "extra/g" "The Gnome desktop enviornment" \ "extra/games" "Games :)" \ "extra/kde" "The KDE desktop environment" \ "extra/l" "Additional libraries required by many other programs" \ "extra/locale" "Addon software to support various locales" \ "extra/n" "Additional networking software" \ "extra/s" "Software for servers" \ "extra/t" "The teTeX document formatting system" \ "extra/tcl" "The Tool Command Language software" \ "extra/x" "Additional software for the X Window System" \ "extra/xap" "Additional graphical applications" 2> .zrm-temp/category retval=$? PKGDIR=`cat .zrm-temp/category` rm -f .zrm-temp/category } getpkgdir() # Finds where each package is in the repos. If it's not there, it's a new # package and it asks for a location. # Returns $PKGDIR { PKGDIR=`grep -A1 "PACKAGE NAME:" $REPO/PACKAGES.TXT | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\1/" | grep -A1 "NAME: $PKGNAME$" | grep -v "PACKAGE NAME" | sed "s|PACKAGE LOCATION: \./||"` # Ask for package category if it's not found if [ -z $PKGDIR ]; then selectpkgdir fi touch .zrm-temp/newpkgdirs sed -i "/^$PKGNAME:/d" .zrm-temp/newpkgdirs echo "$PKGNAME: $PKGDIR" >> .zrm-temp/newpkgdirs } pushtgz() { [ -f $REPO/$PKGDIR/$PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.t[glx]z ] && echo "Removing old file $PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.tgz|.tlz" && rm -f $REPO/$PKGDIR/$PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.t[glx]z [ -f $REPO/$PKGDIR/$PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.md5 ] && echo "Removing old file $PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.md5" && rm -f $REPO/$PKGDIR/$PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.md5 [ -f $REPO/$PKGDIR/$PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.src ] && echo "Removing old file $PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.src" && rm -f $REPO/$PKGDIR/$PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.src [ -f $REPO/$PKGDIR/$PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.dep ] && echo "Moving $PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.dep to $PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.dep" && mv $REPO/$PKGDIR/$PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.dep $REPO/$PKGDIR/$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.dep &> /dev/null [ -f $REPO/$PKGDIR/$PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.meta ] && echo "Removing old file $PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.meta" && rm -f $REPO/$PKGDIR/$PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.meta [ -f $REPO/$PKGDIR/$PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.txt ] && echo "Removing old file $PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.txt" && rm -f $REPO/$PKGDIR/$PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.txt echo "Moving $PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.tgz|.tlz to $REPO/$PKGDIR" && mv -f .zrm-temp/pkgs/$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.t[glx]z $REPO/$PKGDIR } addupdatepkg() # Adds or updates packages to the repo. { dialog --title "Enter URLs" --msgbox "Enter the URLs of packages you want to add/update. Save and exit." 7 55 clear $EDITOR .zrm-temp/pkgurl mkdir -p .zrm-temp/pkgs rm -f .zrm-temp/pkgs/* echo "Downloading files..." && wget -c -nv -P .zrm-temp/pkgs -o .zrm-temp/wgetlog -i .zrm-temp/pkgurl grep ERROR .zrm-temp/wgetlog &> /dev/null && ( dialog --title "ERROR" --msgbox "Error downloading files: \n`grep -B1 ERROR .zrm-temp/wgetlog | grep -v ERROR`" 40 70; clear ) # Find all tgz|tlz files for i in `( cd .zrm-temp/pkgs; ls -1 *.t[glx]z 2> /dev/null )` do # Find package name, version, arch, zenver PKGDIR="" PKGNAME=`echo $i | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\1/"` PKGVER=`echo $i | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\2/"` PKGARCH=`echo $i | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\3/"` PKGZENVER=`echo $i | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\4/"` getpkgdir if [ ! -z $PKGDIR ]; then # This is the version of the package already in the repo: PKGRVER=`grep "PACKAGE NAME: $PKGNAME" $REPO/PACKAGES.TXT | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\1-\2/" | sed "s/PACKAGE NAME: //" | sed "s/$PKGNAME-\(.*\)/\1/" | grep -v "-"` PKGRARCH=`grep "PACKAGE NAME: $PKGNAME-$PKGRVER" $REPO/PACKAGES.TXT | sed "s/PACKAGE NAME: $PKGNAME-$PKGRVER-\(.*\)-\(.*\).t[glx]z/\1/"` PKGRZENVER=`grep "PACKAGE NAME: $PKGNAME-$PKGRVER-$PKGRARCH" $REPO/PACKAGES.TXT | sed "s/PACKAGE NAME: $PKGNAME-$PKGRVER-$PKGRARCH-\(.*\).t[glx]z/\1/"` # Do md5sum check if md5 file is present if [ -a .zrm-temp/pkgs/$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.md5 ]; then # push to the repos if md5sum is OK or # show error message if it isn't echo "Checking md5sum for $PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.md5" ( cd .zrm-temp/pkgs; md5sum -c $PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.md5 &> /dev/null ) && pushtgz || ( dialog --title "ERROR: $PKGNAME" --msgbox "md5sum does not match for $PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.tgz|.tlz \nThis package will not be pushed to the repositories." 40 70 ; clear ) else # push to the repos anyway if there is no md5 pushtgz fi fi done # Find all dep files. Check if they are the right package version and replace. for i in `( cd .zrm-temp/pkgs; ls -1 *.dep 2> /dev/null )` do PKGNAME=`echo $i | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.dep/\1/"` PKGVER=`echo $i | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.dep/\2/"` PKGARCH=`echo $i | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.dep/\3/"` PKGZENVER=`echo $i | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.dep/\4/"` grep "^$PKGNAME:" .zrm-temp/newpkgdirs &> /dev/null && PKGDIR=`grep "^$PKGNAME:" .zrm-temp/newpkgdirs | sed "s/$PKGNAME: //"` || getpkgdir if [ -a $REPO/$PKGDIR/$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.t[glx]z ]; then echo "Moving $PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.dep to $REPO/$PKGDIR" && mv -f .zrm-temp/pkgs/$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.dep $REPO/$PKGDIR else dialog --title "ERROR: $PKGNAME" --msgbox "$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.tgz|.tlz is not in the repos!\n$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.dep will not be pushed." 40 70 clear rm -f .zrm-temp/pkgs/$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.dep fi done # Find all src files. Check if they are the right package version and add. for i in `( cd .zrm-temp/pkgs; ls -1 *.src 2> /dev/null )` do PKGNAME=`echo $i | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.src/\1/"` PKGVER=`echo $i | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.src/\2/"` PKGARCH=`echo $i | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.src/\3/"` PKGZENVER=`echo $i | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.src/\4/"` grep "^$PKGNAME:" .zrm-temp/newpkgdirs &> /dev/null && PKGDIR=`grep "^$PKGNAME:" .zrm-temp/newpkgdirs | sed "s/$PKGNAME: //"` || getpkgdir if [ -a $REPO/$PKGDIR/$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.t[glx]z ]; then # Fix faulty sourceforge links if any by removing everything after the ? sed -i "s/\(.*\)?\(.*\)/\1/" .zrm-temp/pkgs/$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.src # If src file has invalid URL's, don't push and warn about it if [ `grep -c -v "^http://\|^ftp://" .zrm-temp/pkgs/$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.src` -eq 0 ]; then # If src file includes links to directories don't push and warn about it if [ ! `grep "/$" .zrm-temp/pkgs/$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.src` ]; then echo "Moving $PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.src to $REPO/$PKGDIR" && mv -f .zrm-temp/pkgs/$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.src $REPO/$PKGDIR else dialog --title "ERROR: $PKGNAME" --msgbox "src file contains invalid URLs!\n$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.src will not be pushed." 40 70 clear rm -f .zrm-temp/pkgs/$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.src fi else dialog --title "ERROR: $PKGNAME" --msgbox "src file includes links to directories! This is not allowed!\n$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.src will not be pushed." 40 70 clear rm -f .zrm-temp/pkgs/$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.src fi else dialog --title "ERROR: $PKGNAME" --msgbox "$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.tgz|.tlz is not in the repos!\n$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.src will not be pushed." 40 70 clear rm -f .zrm-temp/pkgs/$PKGNAME-$PKGVER-$PKGARCH-$PKGZENVER.src fi done } deletepkg() { dialog --title "Delete packages" --msgbox "Enter the names of packages you want to remove from the repositories. Insert package names ONLY, not full filenames, e.g.:\n\nnautilus\n\nand NOT:\n\nnautilus-2.24.0-i486-54.1.tgz\n\nEach package name in a different line. Save and exit." 17 55 clear $EDITOR .zrm-temp/pkgdel for i in `cat .zrm-temp/pkgdel` do PKGNAME=$i PKGDIR=`grep -A1 "PACKAGE NAME:" $REPO/PACKAGES.TXT | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\1/" | grep -A1 "NAME: $PKGNAME$" | grep -v "PACKAGE NAME" | sed "s|PACKAGE LOCATION: \./||"` if [ -z $PKGDIR ]; then dialog --title "ERROR: $PKGNAME" --msgbox "$PKGNAME package not found in the $REPO repository" 7 55 clear else # This is the version of the package already in the repo: PKGRVER=`grep "PACKAGE NAME: $PKGNAME" $REPO/PACKAGES.TXT | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\1-\2/" | sed "s/PACKAGE NAME: //" | sed "s/$PKGNAME-\(.*\)/\1/" | grep -v "-"` PKGRARCH=`grep "PACKAGE NAME: $PKGNAME-$PKGRVER" $REPO/PACKAGES.TXT | sed "s/PACKAGE NAME: $PKGNAME-$PKGRVER-\(.*\)-\(.*\).t[glx]z/\1/"` PKGRZENVER=`grep "PACKAGE NAME: $PKGNAME-$PKGRVER-$PKGRARCH" $REPO/PACKAGES.TXT | sed "s/PACKAGE NAME: $PKGNAME-$PKGRVER-$PKGRARCH-\(.*\).t[glx]z/\1/"` echo "Deleting $PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.* from $REPO/$PKGDIR" && rm -f $REPO/$PKGDIR/$PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.* fi done } changepkgdir() { dialog --title "Change packages' directories" --msgbox "Enter the names of packages you want to move to different directories in the $REPO repository. Insert package names ONLY, not full filenames, e.g.:\n\nnautilus\n\nand NOT:\n\nnautilus-2.24.0-i486-54.1.tgz\n\nEach package name in a different line. Save and exit.\n*** Update the package cache before moving any packages or there will be errors! ***" 17 55 clear $EDITOR .zrm-temp/pkgchangedir for i in `cat .zrm-temp/pkgchangedir` do PKGNAME=$i PKGRDIR=`grep -A1 "PACKAGE NAME:" $REPO/PACKAGES.TXT | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\1/" | grep -A1 "NAME: $PKGNAME$" | grep -v "PACKAGE NAME" | sed "s|PACKAGE LOCATION: \./||"` if [ -z $PKGRDIR ]; then dialog --title "ERROR: $PKGNAME" --msgbox "Package $PKGNAME not found in the $REPO repository" 7 55 clear else # This is the version of the package already in the repo: PKGRVER=`grep "PACKAGE NAME: $PKGNAME" $REPO/PACKAGES.TXT | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\1-\2/" | sed "s/PACKAGE NAME: //" | sed "s/$PKGNAME-\(.*\)/\1/" | grep -v "-"` PKGRARCH=`grep "PACKAGE NAME: $PKGNAME-$PKGRVER" $REPO/PACKAGES.TXT | sed "s/PACKAGE NAME: $PKGNAME-$PKGRVER-\(.*\)-\(.*\).t[glx]z/\1/"` PKGRZENVER=`grep "PACKAGE NAME: $PKGNAME-$PKGRVER-$PKGRARCH" $REPO/PACKAGES.TXT | sed "s/PACKAGE NAME: $PKGNAME-$PKGRVER-$PKGRARCH-\(.*\).t[glx]z/\1/"` selectpkgdir echo "Moving $PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.* from $REPO/$PKGRDIR to $REPO/$PKGDIR" && mv -f $REPO/$PKGRDIR/$PKGNAME-$PKGRVER-$PKGRARCH-$PKGRZENVER.* $REPO/$PKGDIR fi done } mvpkgsnaptocur() { dialog --title "SNAPSHOT to CURRENT" --msgbox "Enter the names of packages you want to move from snapshot to current. Insert package names ONLY, not full filenames, e.g.:\n\nnautilus\n\nand NOT:\n\nnautilus-2.24.0-i486-54.1.tgz\n\nEach package name in a different line. Save and exit." 17 55 clear $EDITOR .zrm-temp/pkgsnaptocur for i in `cat .zrm-temp/pkgsnaptocur` do PKGNAME=$i PKGDIR=`grep -A1 "PACKAGE NAME:" snapshot/PACKAGES.TXT | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\1/" | grep -A1 "NAME: $PKGNAME$" | grep -v "PACKAGE NAME" | sed "s|PACKAGE LOCATION: \./||"` if [ -z $PKGDIR ]; then dialog --title "ERROR: $PKGNAME" --msgbox "$PKGNAME package not found in the snapshot repository" 7 55 clear else # This is the version of the package already in the snapshot repo: PKGSVER=`grep "PACKAGE NAME: $PKGNAME" snapshot/PACKAGES.TXT | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\1-\2/" | sed "s/PACKAGE NAME: //" | sed "s/$PKGNAME-\(.*\)/\1/" | grep -v "-"` PKGSARCH=`grep "PACKAGE NAME: $PKGNAME-$PKGSVER" snapshot/PACKAGES.TXT | sed "s/PACKAGE NAME: $PKGNAME-$PKGSVER-\(.*\)-\(.*\).t[glx]z/\1/"` PKGSZENVER=`grep "PACKAGE NAME: $PKGNAME-$PKGSVER-$PKGSARCH" snapshot/PACKAGES.TXT | sed "s/PACKAGE NAME: $PKGNAME-$PKGSVER-$PKGSARCH-\(.*\).t[glx]z/\1/"` # This is the version of the package already in the current repo: PKGCVER=`grep "PACKAGE NAME: $PKGNAME" current/PACKAGES.TXT | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\1-\2/" | sed "s/PACKAGE NAME: //" | sed "s/$PKGNAME-\(.*\)/\1/" | grep -v "-"` PKGCARCH=`grep "PACKAGE NAME: $PKGNAME-$PKGCVER" current/PACKAGES.TXT | sed "s/PACKAGE NAME: $PKGNAME-$PKGCVER-\(.*\)-\(.*\).t[glx]z/\1/"` PKGCZENVER=`grep "PACKAGE NAME: $PKGNAME-$PKGCVER-$PKGCARCH" current/PACKAGES.TXT | sed "s/PACKAGE NAME: $PKGNAME-$PKGCVER-$PKGCARCH-\(.*\).t[glx]z/\1/"` # If there is a package in current, delete it PKGCDIR=`grep -A1 "PACKAGE NAME:" current/PACKAGES.TXT | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\1/" | grep -A1 "NAME: $PKGNAME$" | grep -v "PACKAGE NAME" | sed "s|PACKAGE LOCATION: \./||"` if [ ! -z $PKGCDIR ]; then echo "Deleting $PKGNAME package from current" && rm -f current/$PKGCDIR/$PKGNAME-$PKGCVER-$PKGCARCH-$PKGCZENVER.* fi echo "Moving $PKGNAME-$PKGSVER-$PKGSARCH-$PKGSZENVER.* from snapshot to current" && cp -f snapshot/$PKGDIR/$PKGNAME-$PKGSVER-$PKGSARCH-$PKGSZENVER.* current/$PKGDIR fi done } mvpkgcurtosnap() { dialog --title "CURRENT to SNAPSHOT" --msgbox "Enter the names of packages you want to move from current to snapshot. Insert package names ONLY, not full filenames, e.g.:\n\nnautilus\n\nand NOT:\n\nnautilus-2.24.0-i486-54.1.tgz\n\nEach package name in a different line. Save and exit." 17 55 clear $EDITOR .zrm-temp/pkgcurtosnap for i in `cat .zrm-temp/pkgcurtosnap` do PKGNAME=$i PKGDIR=`grep -A1 "PACKAGE NAME:" current/PACKAGES.TXT | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\1/" | grep -A1 "NAME: $PKGNAME$" | grep -v "PACKAGE NAME" | sed "s|PACKAGE LOCATION: \./||"` if [ -z $PKGDIR ]; then dialog --title "ERROR: $PKGNAME" --msgbox "$PKGNAME package not found in the current repository" 7 55 clear else # This is the version of the package already in the snapshot repo: PKGSVER=`grep "PACKAGE NAME: $PKGNAME" snapshot/PACKAGES.TXT | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\1-\2/" | sed "s/PACKAGE NAME: //" | sed "s/$PKGNAME-\(.*\)/\1/" | grep -v "-"` PKGSARCH=`grep "PACKAGE NAME: $PKGNAME-$PKGSVER" snapshot/PACKAGES.TXT | sed "s/PACKAGE NAME: $PKGNAME-$PKGSVER-\(.*\)-\(.*\).t[glx]z/\1/"` PKGSZENVER=`grep "PACKAGE NAME: $PKGNAME-$PKGSVER-$PKGSARCH" snapshot/PACKAGES.TXT | sed "s/PACKAGE NAME: $PKGNAME-$PKGSVER-$PKGSARCH-\(.*\).t[glx]z/\1/"` # This is the version of the package already in the current repo: PKGCVER=`grep "PACKAGE NAME: $PKGNAME" current/PACKAGES.TXT | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\1-\2/" | sed "s/PACKAGE NAME: //" | sed "s/$PKGNAME-\(.*\)/\1/" | grep -v "-"` PKGCARCH=`grep "PACKAGE NAME: $PKGNAME-$PKGCVER" current/PACKAGES.TXT | sed "s/PACKAGE NAME: $PKGNAME-$PKGCVER-\(.*\)-\(.*\).t[glx]z/\1/"` PKGCZENVER=`grep "PACKAGE NAME: $PKGNAME-$PKGCVER-$PKGCARCH" current/PACKAGES.TXT | sed "s/PACKAGE NAME: $PKGNAME-$PKGCVER-$PKGCARCH-\(.*\).t[glx]z/\1/"` # If there is a package in snapshot, delete it PKGSDIR=`grep -A1 "PACKAGE NAME:" snapshot/PACKAGES.TXT | sed "s/\(.*\)-\(.*\)-\(.*\)-\(.*\)\.t[glx]z/\1/" | grep -A1 "NAME: $PKGNAME$" | grep -v "PACKAGE NAME" | sed "s|PACKAGE LOCATION: \./||"` if [ ! -z $PKGSDIR ]; then echo "Deleting $PKGNAME package from snapshot" && rm -f snapshot/$PKGSDIR/$PKGNAME-$PKGSVER-$PKGSARCH-$PKGSZENVER.* fi echo "Moving $PKGNAME-$PKGCVER-$PKGCARCH-$PKGCZENVER.* from current to snapshot" && cp -f current/$PKGDIR/$PKGNAME-$PKGCVER-$PKGCARCH-$PKGCZENVER.* snapshot/$PKGDIR fi done } updatedb() { clear echo "Updating package database for $REPO." ( cd $REPO; ./.metagen.sh all ) ( cd $REPO; ./.metagen.sh MD5 ) } rmtmp mkdir -p .zrm-temp mainmenu rmtmp clear