WDef
Group: Members
Posts: 798
Joined: Sep. 2005 |
|
Posted: Sep. 21 2006,16:16 |
|
v0.2 - Testers wanted.
Now converts multiple dsls. (Indenting seems to get lost when posting unfortunately). ==========================================
Code Sample | #!/bin/bash
# dsl2unc v0.2
# Just automates Robert's instructions for making a unc extension from a dsl. # WDef Sept 2006
# Changelog v0.2
# Handles symlinks, opt and empty directories in user.tar.gz. # Current working directory is assumed if path to argument extension is not given. # Runs in batch mode: converts all argument .dsls to .uncs #- eg to process somedirectory full of extensions, if dsl2unc is in PATH: #- cd somedirectory; dsl2unc * # Directory $DIR for $WORK and output is now settable. # More lurid coloring :=)
#==========================// USER SETTING//===============================
# Put DIR on a hard drive partition if insufficient room in /ramdisk/home/dsl DIR=/home/dsl
#==========================// FNS //========================================
help(){ cat <<"EOF" dsl2unc v0.2 - convert .dsl extension to .unc Usage: dsl2unc </path/to/ext1.dsl /path/to/ext2.dsl ..> Creates a work dir in $DIR New unc(s) is output in $DIR Default DIR=/home/dsl EOF exit }
dir_filter(){ # Filter out non-empty dir lines from stdin while read LM; do if [ -d "${WORK}/$LM" ]; then if [ $(ls -1A ${WORK}/$LM| wc -l) -eq 0 ]; then # empty dir - ok echo ${LM} fi else # files, symlinks - ok echo ${LM} fi done }
#======================================================================
. /etc/init.d/dsl-functions # for ANSI colors
results=/tmp/dsl2unc_results
rm -f ${results} if [ "${1}" = -h ] || [ "${1}" = --help ] || [ $# -eq 0 ]; then help; fi
CURRENTD="${PWD}" APP=""
for APP in $*; do
# If no path supplied, assume current working dir [ $(echo ${APP} | tr '/' ' '| wc -w) -eq 1 ] && APP="${CURRENTD}/${APP}"
if [ ! -e "${APP}" ]; then echo "${RED}Can't find ${APP}${NORMAL}" >>${results} continue fi if [ ${APP##*.} != dsl ]; then echo "${RED}${APP} is not a .dsl extension.${NORMAL}" >>${results}; continue; fi
NAME=$(basename ${APP} .dsl) WORK=${DIR}/$NAME
if [ -e "${WORK}" ]; then echo "${RED}${WORK} already exists.${NORMAL}" >>${results}; continue; fi
mkdir ${WORK}
echo echo "${WHITE}Making ${GREEN}$NAME.unc${WHITE} from ${YELLOW}$NAME.dsl ..${NORMAL}" echo
cd ${WORK} tar -zxvf ${APP} find home opt tmp 2>/dev/null | dir_filter | xargs tar -czvf user.tar.gz 2>/dev/null rm -rf home opt tmp
cd ..
mkisofs -R -hide-rr-moved -cache-inodes -pad ${WORK} | create_compressed_fs - 65536 >$NAME.unc if [ $? -ne 0 ]; then echo "${RED}Error making $NAME.unc" >>${results}; continue; fi echo echo "${GREEN}Now test your new ${YELLOW}$NAME.unc!${NORMAL}" echo "${YELLOW}$NAME.dsl${WHITE} --> ${GREEN}$NAME.unc${NORMAL}" >>${results} done
echo echo "======================================================================" echo echo "${WHITE}DSL2UNC ${WHITE}RESULTS:${NORMAL}" echo cat ${results} echo echo "======================================================================" echo "${GREEN}Finished.${NORMAL}"
exit 0 |
|