From 8fb6b9081598ec5360030aaac6046bce0490dc04 Mon Sep 17 00:00:00 2001 From: Nils Kneuper Date: Thu, 10 Mar 2011 00:28:59 +0100 Subject: [PATCH] new genpxml.sh from sebt3 with slight modifications this script does not generate pxml files that can be validated with the schema (yet), but at least it *does* generate some sane stuff... --- testdata/scripts/genpxml.sh | 377 ++++++++++++++++++++++++++++++------ 1 file changed, 318 insertions(+), 59 deletions(-) diff --git a/testdata/scripts/genpxml.sh b/testdata/scripts/genpxml.sh index f859bfa..1ccf191 100755 --- a/testdata/scripts/genpxml.sh +++ b/testdata/scripts/genpxml.sh @@ -1,67 +1,326 @@ #!/bin/bash -if [ $1 ]; then cd $1; fi - -for x in $(pwd)/* -do -if [ -x $x ] && [ ! -d $x ] && [ ! $(echo $x | cut -d . -f 2 -s) ] ; then exe=$x; break; fi -done -BASENAMEnoex=$(basename "$exe" | cut -d'.' -f1) -BASENAME=$(basename "$exe") -rnd=$RANDOM; -loc=$(dirname "$0") - -echo ' - - - - - - - - '$BASENAMEnoex' - '$BASENAMEnoex' - German (lol!) - - - - - - - en_US Automatically generated pxml from'$(pwd)' exe='$BASENAME' - de_DE Automatisch generiertes pxml aus'$(pwd)' exe='$BASENAME' - - - - - ' -#add all images in the folder as preview pics -for image in $(file -i -0 * | grep -a image | cut -d" " -f1) -do -echo " " -done -echo ' - - - - + +help(){ +cat >&2 < : Define source directory (default: $SRCDIR) +-n|--name : Define the pnd base name (default: $PND_NAME) +-d|--dest : Define destination directory (default: $DESTDIR) +-a|--author : programmers names (default: $AUTHOR) +-v|--version : Define the version (default: $VERSION) +-w|--website : Define the url (default: $WEBSITE) +-b|--build : Define the build number (default: $BUILD) +-f|--force : overide PXML.xml file if found +-h|--help : show this screen +ENDHELP +} + +DEBUG(){ + echo $*>&2 +} + +buildApplicationList(){ + #output " []" lines + cd $DESTDIR + DESTLST=$(find $SRCDIR -name "*desktop";find $DESTDIR -name "*desktop") + if [ ! -z "$DESTLST" ];then + { + for d in $DESTLST;do + EXE=$(awk -F= '/Exec/{print $2}'<$d|awk '{print $1}'|head -1) + if [[ "x$EXE" != "x" ]];then + BIN=$(find . -executable -type f -name $(basename $EXE)|head -1) + echo ${BIN:-$EXE} $d + fi + done + }|sort|awk 'BEGIN{P=""}$1!=P{print}{P=$1}' + else + find . -executable -type f \! -name "*sh" + fi +} + +getPATH(){ + cd $DESTDIR + L=$(find . -type d -name bin) + echo $L|sed "s#\./#$(pwd)/#g;s# #:#g" +} +getLIBPATH(){ + cd $DESTDIR + L=$(find . -type d -name lib) + echo $L|sed "s#\./#$(pwd)/#g;s# #:#g" +} + +genLaunchScript() { + S="$DESTDIR/scripts/$(basename $1).sh" + if [ -e $S ];then + mv $S ${S}.old + fi + cat>$S<" + + # title ------------------------- + if [ ! -z "$DESK" ];then + #awk -F= '($1~/^Name/)||$1=="Name"{print $1" "$2}'<$1|while read DN DNV;do + awk -F= '($1~/^Name/&&/en_US/)||$1=="Name"{print $1" "$2}'<$1|while read DN DNV;do + l=$(echo $DN|sed 's/Name//;s/\[//;s/\]//') + echo " $DNV" + done + else + echo " $PND_NAME" + fi + echo + + # Author ------------------------ + echo " " + + # Version ----------------------- + echo " " + + # OS Version -------------------- + echo " " + echo + + # Description ------------------- + if [ ! -z "$DESK" ];then + #awk -F= '($1~/^Comment/)||$1=="Comment"{print $1" "$2}'<$1|while read DN DNV;do + awk -F= '($1~/^Comment/&&/en_US/)||$1=="Comment"{print $1" "$2}'<$1|while read DN DNV;do + l=$(echo $DN|sed 's/Comment//;s/\[//;s/\]//') + echo " $DNV" + done + else + echo " Automatically generated description from $(pwd) for PND=$PND_NAME" + fi + echo + + # Icon -------------------------- + ICON="" + if [ ! -z "$DESK" ];then + ICON=$(awk -F= '$1~/^Icon/{print $2}'<$1) + fi + if [ ! -z "$ICON" ];then + F=$(find $DESTDIR -name ${ICON}.png|head -1) + if [ -z "$F" ];then + F=$DESTDIR/icon.png + fi + echo " ' + if [ ! -e "$DESTDIR/icon.png" ] && [ ! -z "$(find $DESTDIR -name ${ICON}.png|head -1)" ];then + cp $(find $DESTDIR -name ${ICON}.png|head -1) $DESTDIR/icon.png + fi + elif [ -e "$DESTDIR/icon.png" ];then + echo " " + else + echo " " + fi + echo + + # Preview pics ------------------ + if [ ! -z "$(find $DESTDIR/previews -name "$BASEB*")" ];then + echo " " + for i in $(find $DESTDIR/previews -name "$BASEB*");do + echo " " + done + echo " " + else + cat < + + +--> +ENDASSO + fi + echo + + # Documentation ----------------- + HTML=$(find $DESTDIR -type d -name index.html|head -1) + DOC=$DESTDIR/readme.txt + if [ ! -z "$HTML" ];then + for i in $(find $DESTDIR -type d -name index.html);do + echo " " + done + elif [ -e "$DOC" ];then + echo " " + else + echo " " + fi + + # Categories -------------------- + cat < - - - - - - + +ENDCATEGORIES + + if [ ! -z "$DESK" ];then + DCAT=$(awk -F= '$1=="Categories"{print $2}'<$1) + else + DCAT="" + fi + CATCNT=$(($(echo $DCAT|sed "s/;/ /g"|wc -w) / 2)) + if [ $CATCNT -gt 0 ];then + for i in $(seq 1 $CATCNT);do + DCATMAJ=$(echo $DCAT|awk -F\; "{print \$$(($i*2-1))}") + DCATMIN=$(echo $DCAT|awk -F\; "{print \$$(($i*2))}") + cat < + - - +ENDCATEGORIES + done + else + cat < + +ENDCATEGORIES + fi + cat < - - - +ENDCATEGORIES + + # Associations ------------------ + cat < + + + +--> +ENDASSO + + # ClockSpeed -------------------- + echo " " +} + +genPxml(){ + # output the PXML.xml file + if [ -e $DESTDIR/PXML.xml ];then + mv $DESTDIR/PXML.xml $DESTDIR/PXML.xml.old + fi + cat >$DESTDIR/PXML.xml < + + + +ENDHEAD + if [ ! -d $DESTDIR/previews ];then + mkdir -p $DESTDIR/previews + fi + if [ ! -d $DESTDIR/scripts ];then + mkdir $DESTDIR/scripts + fi + buildApplicationList|while read BIN DESK;do + BASEB=$(basename $BIN) + genLaunchScript $BIN + cat >>$DESTDIR/PXML.xml < +ENDAPP + desktop2application $DESK >>$DESTDIR/PXML.xml + cat >>$DESTDIR/PXML.xml < - -' +ENDINFO + done + echo "" >>$DESTDIR/PXML.xml +} + + +##################### +### Script main : +## + +FORCE=0 +BUILD=1 +AUTHOR=sebt3 +WEBSITE=${WEBSITE:-"http://www..openpandora.org"} +SRCDIR=${SRCDIR:-$(pwd)} +PND_NAME=$PRJ +PND_NAME=${PND_NAME:-$(basename $SRCDIR|awk -F- '{print $1}')} +VERSION=${VERSION:-$(basename $SRCDIR|awk -F- '{print $2}')} +DESTDIR=${DESTDIR:-"/mnt/utmp/$PND_NAME"} +RND=$RANDOM +# Parse arguments +while [ $# -gt 0 ];do + case $1 in + -s|--src) SRCDIR=$2;shift;; + -d|--dest) DESTDIR=$2;shift;; + -b|--build) BUILD=$2;shift;; + -a|--author) AUTHOR=$2;shift;; + -n|--name) PND_NAME=$2;shift;; + -v|--version) VERSION=$2;shift;; + -w|--website) WEBSITE=$2;shift;; + -f|--force) FORCE=1;; + -h|--help) help;exit 1;; + *) echo "'$1' unknown argument">&2;help;exit 2;; + esac + shift; +done + +# Validate arguments +if [ ! -d $SRCDIR ];then + echo "$SRCDIR don't exist" >&2 + help + exit 3 +fi +if [ ! -d $DESTDIR ] && [ $FORCE -eq 0 ];then + echo "$DESTDIR don't exist" >&2 + help + exit 4 +elif [ ! -d $DESTDIR ];then + mkdir -p $DESTDIR + if [ $? -ne 0 ];then + echo "$DESTDIR don\'t exist and cannot be created" >&2 + help + exit 5 + fi +fi +if [ $(buildApplicationList|wc -l) -le 0 ];then + echo "No applications found">&2 + help + exit 6 +fi +if [ -e $DESTDIR/PXML.xml ] && [ $FORCE -eq 0 ];then + echo "PXML file exist and force disabled." >&2 + help + exit 7 +fi +genPxml + -- 2.39.2