# this function wraps text used in the PKG_DESC file and pads it # with extra lines when needed. text_wrapper() { # The first two lines of the PKG_DESC and the last one are reserved # so we only format 8 lines of text. Lines 12 and 13 can still be used # to add dependencies info.... # DESC_WRAP_LENGTH=70 # DESC_MAX_LINES=8 OUTPUT_LINE_COUNT=0 OUTPUT="" # collect all the input text into one long line while read LINE ; do STRING="$LINE" # replace newlines with a space STRING=${STRING/'\n'/ /} # add the new text to the OUTPUT with a space between # if there are double spaces they get removed below. OUTPUT="$OUTPUT $STRING" shift done PARSESTRING="$OUTPUT" while [[ $PARSESTRING != "" ]] ; do (( OUTPUT_LINE_COUNT++ )) # read the number of chars matching the wrap length CHUNK=${PARSESTRING:0:${DESC_WRAP_LENGTH}} # skip over everything but the last character of the CHUNK OFFSET_LENGTH=$(( $DESC_WRAP_LENGTH -1 )) # if the last character is a space or not null shorten the input line to the previous word if [[ "${CHUNK:$OFFSET_LENGTH:1}" = " " ]] || [[ "${CHUNK:$OFFSET_LENGTH:1}" != "" ]] ; then # keep everything before the last space CHUNK=${CHUNK%$" "*} fi # get the length of the finished chunk CHUNK_LENGTH=${#CHUNK} # advance the pointer the length of the chunk that we saved PARSESTRING=${PARSESTRING:$CHUNK_LENGTH} echo $NAME:"$CHUNK" >> $PKG_DIR/install/$PKG_DESC # exit if we have reached the maximum number of lines if [[ $OUTPUT_LINE_COUNT -gt $DESC_MAX_LINES ]] ; then break else CHUNK="" fi done # pad the PKG_DESC file to 11 lines if the above didn't reach that number while [[ $OUTPUT_LINE_COUNT -lt $DESC_MAX_LINES ]] ; do echo "$NAME:" >> $PKG_DIR/install/$PKG_DESC (( OUTPUT_LINE_COUNT++ )) done } wrap_deps() { OUTPUT_LINE_COUNT=0 OUTPUT="" while read LINE ; do STRING="$LINE" STRING=${STRING/'\n'//} OUTPUT="$OUTPUT $STRING" shift done PARSESTRING="$OUTPUT" while [[ $PARSESTRING != "" ]] ; do (( OUTPUT_LINE_COUNT++ )) CHUNK=${PARSESTRING:0:${DESC_WRAP_LENGTH}} OFFSET_LENGTH=$(( $DESC_WRAP_LENGTH -1 )) if [[ "${CHUNK:$OFFSET_LENGTH:1}" = " " ]] || [[ "${CHUNK:$OFFSET_LENGTH:1}" != "" ]] ; then CHUNK=${CHUNK%$" "*} #CHUNK=${CHUNK#*" "} fi CHUNK_LENGTH=${#CHUNK} PARSESTRING=${PARSESTRING:$CHUNK_LENGTH} # strip leading spaces from the chunk while [[ ${CHUNK:0:1} = " " ]] ; do CHUNK=${CHUNK#*" "} done echo $NAME:" $CHUNK" >> $PKG_DIR/install/$PKG_DESC if [[ $OUTPUT_LINE_COUNT -gt 2 ]] ; then break else CHUNK="" fi done } make_database() { COMPRESSED=$(gzip -l $PACKAGE | grep -v uncompressed_name | white_out | cut -f 1 -d ' ') COMPRESSED="$(expr $COMPRESSED / 1024) K" UNCOMPRESSED=$(gzip -l $PACKAGE | grep -v uncompressed_name | white_out | cut -f 2 -d ' ') UNCOMPRESSED="$(expr $UNCOMPRESSED / 1024) K" echo "PACKAGE NAME: $NAME-$VERSION" > $DATABASE_FILE echo "COMPRESSED PACKAGE SIZE: $COMPRESSED" >> $DATABASE_FILE echo "UNCOMPRESSED PACKAGE SIZE: $UNCOMPRESSED" >> $DATABASE_FILE echo "PACKAGE LOCATION: $PKG_NAME" >> $DATABASE_FILE echo "PACKAGE DESCRIPTION:" >> $DATABASE_FILE cat $PKG_DIR/install/$PKG_DESC | grep -v '#' >> $DATABASE_FILE echo "FILE LIST:" >> $DATABASE_FILE ${TAR_STATIC} -tzf $PACKAGE >> $DATABASE_FILE } read_rpm_desc() { LINE_COUNT=0 FIRST_LINE=0 LAST_LINE=0 while read LINE ; do (( LINE_COUNT++ )) CHUNK=${LINE/\*/-} if [[ $FIRST_LINE -ne 0 ]] && [[ $LINE_COUNT -eq $FIRST_LINE ]] ; then echo $CHUNK elif [[ ${CHUNK:0:12} = "%description" ]] && [[ $FIRST_LINE -eq 0 ]] ; then FIRST_LINE=$(( $LINE_COUNT + 1 )) elif [[ ${CHUNK:0:1} = "%" ]] || [[ ${CHUNK:0:15} = "%description -l" ]] && [[ $FIRST_LINE -ne 0 ]] ; then LAST_LINE=$(( $LINE_COUNT -1 )) break elif [[ $FIRST_LINE -ne 0 ]] && [[ $LAST_LINE -eq 0 ]] ; then if [[ "$CHUNK" != "" ]] ; then echo $CHUNK fi fi done } read_deb_desc() { LINE_COUNT=0 FIRST_LINE=0 LAST_LINE=0 while read LINE ; do (( LINE_COUNT++ )) CHUNK=${LINE/\*/-} if [[ $FIRST_LINE -ne 0 ]] && [[ $LINE_COUNT -eq $FIRST_LINE ]] ; then echo $CHUNK elif [[ ${CHUNK:0:12} = "Description:" ]] && [[ $FIRST_LINE -eq 0 ]] ; then FIRST_LINE=$(( $LINE_COUNT + 1 )) elif [[ $CHUNK = "" ]] && [[ $FIRST_LINE -ne 0 ]] ; then LAST_LINE=$(( $LINE_COUNT -1 )) break elif [[ $FIRST_LINE -ne 0 ]] && [[ $LAST_LINE -eq 0 ]] ; then if [[ "$CHUNK" != "" ]] ; then echo $CHUNK fi fi done } read_pkg-info_desc() { LINE_COUNT=0 FIRST_LINE=0 LAST_LINE=0 while read LINE ; do (( LINE_COUNT++ )) CHUNK=${LINE/\*/-} if [[ ${CHUNK:0:12} = "Description:" ]] && [[ $FIRST_LINE -eq 0 ]] ; then echo ${CHUNK:12} FIRST_LINE=$(( $LINE_COUNT + 1 )) elif [[ $CHUNK = "" ]] && [[ $FIRST_LINE -ne 0 ]] ; then LAST_LINE=$(( $LINE_COUNT -1 )) break elif [[ $FIRST_LINE -ne 0 ]] && [[ $LAST_LINE -eq 0 ]] ; then if [[ "$CHUNK" != "" ]] ; then echo $CHUNK fi fi done }