Ignore:
Timestamp:
May 18, 2017, 5:14:40 PM (2 years ago)
Author:
Juanma
Message:

Added zomandos support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • devtools/desktop_to_xml/desktop_to_xml.sh

    r4693 r4831  
    44#Download lliurex-artwork-default from svn
    55#Download the sources of the package(s)
    6 #Execute this script adding the dirs of sources to analyze as parameters
     6#Execute this script passing the dirs of sources to analyze as parameters
    77#Profit
    88
     
    3030msg_desktop_not_present="\nDesktop file was not found at %s. Operation aborted\n"
    3131msg_searching_img="\nSearching screenshots in %s...\n"
    32 msg_image_found="\nScreenshoot %s finded for app %s\n"
     32msg_image_found="\nScreenshoot %s found for app %s\n"
    3333function usage_help
    3434{
     
    3939}
    4040
    41 function analyze_dir
     41function analyze_zmd_dir
    4242{
    4343        printf "Analyzing $1\n"
    44         rootDir=$PWD
    45         svnDir=`realpath $1`
    46         pkgDir=$1
    47         srcDir=${1}"/trunk/fuentes"
    48         debianDir=${1}"/trunk/fuentes/debian"
    49         lliurexArtworkDir=${svnDir}"/../vibrancy-colors/trunk/fuentes/vibrancy-lliurex/apps"
     44        if [ ! -d $lliurexArtworkDir ] || [ ! -d $vibrancyArtworkDir ]
     45        then
     46                printf "$msg_icons_dir_error" $lliurexArtworkDir $vibrancyArtworkDir
     47        fi
     48        wrkDir=$rootDir"/"$srcDir
     49        cd $wrkDir
     50        baseMetainfoDir=${wrkDir}"/llx-resources/"
     51        zmdFiles=$(find . -name "*.app")
     52        for i in ${zmdFiles}
     53        do
     54                echo "$i"
     55                zmdName=$(basename $i)
     56                zmdName=${zmdName/.app/}
     57                zmdDir=$(dirname $i)
     58                cd $zmdDir
     59                metainfoDir=${baseMetainfoDir}"/"${zmdName}"/metainfo"
     60                mkdir $metainfoDir -p
     61                no_copy_desktop=1
     62                sw_zomando=1
     63                parse_desktop $metainfoDir ${zmdName}".app"
     64                cd $wrkDir
     65        done
     66        add_llxsrc_helper
     67}
     68
     69function analyze_desktop_dir
     70{
     71        printf "Analyzing $1\n"
    5072        if [ ! -d $lliurexArtworkDir ] || [ ! -d $vibrancyArtworkDir ]
    5173        then
     
    7092                printf "$msg_install_not_found"
    7193                get_workdir
    72                 debhelper_mode=1
    7394        else
    7495                if [ $count -gt 0 ]
     
    89110                process_installFile ${installFile}
    90111        fi
     112        add_llxsrc_helper
    91113}
    92114
     
    174196        if [ $? -ne 0 ]
    175197        then
    176                 #Dir doesn't seems to exists. Find tie desktop on $svnDir and ask about the action
     198                #Dir doesn't seems to exists. Find the desktop on $svnDir and ask about the action
    177199                wrkDir='.'
    178200                installDir='.'
     
    184206        else
    185207                wrkDir=`dirname $wrkDir`
     208                installDir=$wrkDir
    186209                cd $wrkDir
    187210        fi
     
    235258                item=`basename $desktopFile`
    236259                get_screenshot $item
    237                 awk -v processFile=$item -v metainfoDir=$metainfoDir -v screenshot=$imageFound -F '=' '
     260                awk -v processFile=$item -v metainfoDir=$metainfoDir -v screenshot=$imageFound -v zomando=$sw_zomando -F '=' '
    238261                BEGIN{
    239262                        split(processFile,array,".",seps)
     
    242265                        printf("") > outFile
    243266                        xmlFile=metainfoDir"/"array[1]".appdata.xml"
    244                         print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" > xmlFile
    245                         print "<component type=\"desktop-application\">" >> xmlFile
    246         #               print "<id>"revDomainName"</id>" >> xmlFile
    247                         print "<id>"array[1]"</id>" >> xmlFile
    248                         print "<metadata_license>CC0-1.0</metadata_license>" >> xmlFile
     267                        tagId="<id>"array[1]"</id>"
     268                        split(array[1],arrayKey,"-",seps)
     269                        for (nameIndex in arrayKey)
     270                        {
     271                                if (length(arrayKey[nameIndex])>=3)
     272                                {
     273                                        if (tagKeywords!~">"arrayKey[nameIndex]"<")
     274                                                tagKeywords=tagKeywords"<keyword>"arrayKey[nameIndex]"</keyword>\n";
     275                                }
     276                        }
    249277                        execPrinted=0
    250278                        commentArrayIndex=1
    251279                        nameArrayIndex=1
     280                        noGenerate=0
     281                        process=1
    252282                }
    253283                {
    254                         if ($1~"^Name")
     284                        if ($0~/^\[.*\]/)
    255285                        {
    256                                 if ($1=="Name")
     286                                if ($0~/\[Desktop.*/)
    257287                                {
    258                                         tagName="<name>"
     288                                        process=1;
    259289                                } else {
    260                                         lang=$1
    261                                         split(lang,array,"[",seps)
    262                                         lang=substr(array[2], 1, length(array[2])-1)
    263                                         tagName="<name xml:lang=\""lang"\">"
    264                                 }
    265                                 tagName=tagName""$2"</name>"
    266                                 nameArray[nameArrayIndex]=tagName
    267                                 nameArrayIndex++;
    268                                 split($2,array," ",seps)
    269                                 for (nameIndex in array)
     290                                        process=0;
     291                                }               
     292                        }
     293                       
     294                        if (process==1)
     295                        {
     296                                if ($1~/^Name/)
    270297                                {
    271                                         if (length(array[nameIndex])>=3)
    272                                         {
    273                                                 if (tagKeywords!~">"array[nameIndex]"<")
    274                                                         tagKeywords=tagKeywords"<keyword>"array[nameIndex]"</keyword>\n";
    275                                         }
    276                                 }
    277                         } else if ($1~"Comment") {
    278                                 if ($1=="Comment")
    279                                 {
    280                                         tagSum="<summary>"
    281                                         tagDes="<p>"
    282                                 } else {
    283                                         lang=$1
    284                                         split(lang,array,"[",seps)
    285                                         lang=substr(array[2], 1, length(array[2])-1)
    286                                         tagSum="<summary xml:lang=\""lang"\">"
    287                                         tagDes="<p xml:lang=\""lang"\">"
    288                                 }
    289                                 sumario=$2
    290                                 split(sumario,array,".",seps)
    291                                 $0=$1"="array[1]
    292                                 summaryArray[commentArrayIndex]=tagSum""array[1]"</summary>"
    293                                 descriptionArray[commentArrayIndex]=tagDes""sumario"</p>"
    294                                 commentArrayIndex++
    295                         } else if ($1=="Categories") {
    296                                 customCat=0
    297                                 countCat=0
    298                                 split($2,array,";",seps)
    299                                 for (catIndex in array)
    300                                 {
    301                                         if (array[catIndex]!="")
    302                                         {
    303                                                 if (array[catIndex]~"-")
     298                                        if ($1=="Name")
     299                                        {
     300                                                tagName="<name>"
     301                                                lang=""
     302                                        } else {
     303                                                lang=$1
     304                                                split(lang,array,"[",seps)
     305                                                lang=substr(array[2], 1, length(array[2])-1)
     306                                                tagName="<name xml:lang=\""lang"\">"
     307                                        }
     308                                        tagName=tagName""$2"</name>"
     309                                        nameArray[nameArrayIndex]=tagName
     310                                        nameArrayIndex++;
     311                                        split($2,array," ",seps)
     312                                        if ( lang != "")
     313                                        {
     314                                                tagKeywords=tagKeywords"</keywords>\n<keywords xml:lang=\""lang"\">\n";
     315                                        }
     316                                        for (nameIndex in array)
     317                                        {
     318                                                if (length(array[nameIndex])>=3)
    304319                                                {
    305                                                         customCat=1
    306                                                         split(array[catIndex],lliurexCats,"-",seps)
    307                                                         for (lliurexCatIndex in lliurexCats)
     320                                                        if (tagKeywords!~">"array[nameIndex]"<")
     321                                                                tagKeywords=tagKeywords"<keyword>"array[nameIndex]"</keyword>\n";
     322                                                }
     323                                        }
     324                                } else if ($1~"Comment") {
     325                                        if ($1=="Comment")
     326                                        {
     327                                                tagSum="<summary>"
     328                                                tagDes="<p>"
     329                                        } else {
     330                                                lang=$1
     331                                                split(lang,array,"[",seps)
     332                                                lang=substr(array[2], 1, length(array[2])-1)
     333                                                tagSum="<summary xml:lang=\""lang"\">"
     334                                                tagDes="<p xml:lang=\""lang"\">"
     335                                        }
     336                                        sumario=$2
     337                                        split(sumario,array,".",seps)
     338                                        $0=$1"="array[1]
     339                                        summaryArray[commentArrayIndex]=tagSum""array[1]"</summary>"
     340                                        descriptionArray[commentArrayIndex]=tagDes""sumario"</p>"
     341                                        commentArrayIndex++
     342                                } else if ($1=="Categories") {
     343                                        customCat=0
     344                                        countCat=0
     345                                        split($2,array,";",seps)
     346                                        for (catIndex in array)
     347                                        {
     348                                                if (array[catIndex]!="")
     349                                                {
     350                                                        if (array[catIndex]~"-" && array[catIndex]!~"^X-")
    308351                                                        {
    309                                                                 lliurexCat="<category>"lliurexCats[lliurexCatIndex]"</category>\n"lliurexCat
     352                                                                customCat=1
     353                                                                split(array[catIndex],lliurexCats,"-",seps)
     354                                                                for (lliurexCatIndex in lliurexCats)
     355                                                                {
     356                                                                        lliurexCat="<category>"lliurexCats[lliurexCatIndex]"</category>\n"lliurexCat
     357                                                                }
     358                                                                categoryArray[catIndex]=lliurexCat
     359                                                        } else {
     360                                                                categoryArray[catIndex]="<category>"array[catIndex]"</category>"
    310361                                                        }
    311                                                         categoryArray[catIndex]=lliurexCat
    312                                                 } else {
    313                                                         categoryArray[catIndex]="<category>"array[catIndex]"</category>"
     362                                                        countCat++
    314363                                                }
    315                                                 countCat++
    316                                         }
    317                                 }
    318                                 if (customCat==1 && countCat==1)
    319                                 {
    320                                         if (substr($0,length($0),1)==";")
    321                                                 $0=$0"GTK"
    322                                         else
    323                                                 $0=$0;"GTK"
    324                                 }
    325                         } else  if ($1=="Icon") {
    326                                 arrayItemNames=split($2,array,"/",seps)
    327                                 arrayItems=split(array[arrayItemNames],array,".",seps)
    328                                 iconBaseName=array[1]
    329                                 $0=$1"="iconBaseName
    330         #                       split(iconBaseName,array,".",seps)
    331                                 tagIcon="<icon type=\"stock\">"iconBaseName"</icon>";
    332                         } else if ($1=="Exec") {
    333                                 if (execPrinted==0)
    334                                 {
    335                                         split($2,array," ",seps)
    336                                         tagExec="<provides><binary>"array[1]"</binary></provides>"
    337                                         execPrinted=1
     364                                        }
     365
     366
     367                                        if (customCat==1 && countCat==1)
     368                                        {
     369                                                if (substr($0,length($0),1)==";")
     370                                                        $0=$0"GTK"
     371                                                else
     372                                                        $0=$0;"GTK"
     373                                                catIndex++
     374                                        }
     375                                } else  if ($1=="Icon") {
     376                                        arrayItemNames=split($2,array,"/",seps)
     377                                        arrayItems=split(array[arrayItemNames],array,".",seps)
     378                                        iconBaseName=array[1]
     379                                        $0=$1"="iconBaseName
     380                                        if (zomando)
     381                                        {
     382                                                sub("zero-lliurex-", "",iconBaseName);
     383                                        }
     384                                        tagIcon="<icon type=\"stock\">"iconBaseName"</icon>";
     385                                } else if ($1=="Exec") {
     386                                        if (execPrinted==0)
     387                                        {
     388                                                split($2,array," ",seps)
     389                                                tagExec="<provides><binary>"array[1]"</binary></provides>"
     390                                                execPrinted=1
     391                                        }
     392                                } else if ($1=="NoDisplay" || $1=="Terminal") {
     393                                        if ($2 == "true" || $2=="TRUE" || $2=="True")
     394                                        {
     395                                                noGenerate=1
     396                                        }
    338397                                }
    339398                        }
     
    341400                }
    342401                END{
     402                        if (noGenerate==1)
     403                        {
     404                                print xmlFile" not generated as is a terminal app"
     405                                exit 1
     406                        }
     407                        print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" > xmlFile
     408                        print "<component type=\"desktop-application\">" >> xmlFile
     409                        print tagId >> xmlFile
     410                        print "<metadata_license>CC0-1.0</metadata_license>" >> xmlFile
    343411                        for (nameIndex in nameArray)
    344412                                print nameArray[nameIndex] >> xmlFile
     
    351419                        print "<categories>" >> xmlFile
    352420                        for (categoryIndex in categoryArray)
     421                        {
    353422                                print categoryArray[categoryIndex] >> xmlFile;
     423                        }
     424                        if (zomando)
     425                        {
     426                                print "<category>Zomando</category>" >> xmlFile
     427                        }
     428                        if (categoryIndex==0)
     429                                print "<category>Utility</category>" >> xmlFile
    354430                        print "</categories>" >> xmlFile
    355431                        print tagIcon >> xmlFile
     
    367443                                print "</screenshots>" >> xmlFile
    368444                        }
    369                         print "<developer_name> </developer_name>" >> xmlFile
     445#                       print "<developer_name>Lliurex Team</developer_name>" >> xmlFile
    370446                        print "</component>" >> xmlFile
    371447                }
    372448                ' $desktopFile
    373                 printf "$msg_metainfo_generated"
    374                 cp /tmp/${item} $desktopFile
    375                 printf "$msg_desktop_updated"
     449                [ $? -eq 0 ] && printf "$msg_metainfo_generated"
     450                if [ -z $no_copy_desktop ]
     451                then
     452                        cp /tmp/${item} $desktopFile
     453                        printf "$msg_desktop_updated"
     454                fi
    376455        done
    377456}
     
    384463        url="https://screenshots.debian.net/packages?page=1&search=${pkgName}&utf8=✓"
    385464        get_screenshot_from $url $pkgName
    386         if [[ $imageFound == 0 ]]
    387         then
    388                 printf "$msg_searching_img" "ubuntu"
    389                 url="http://screenshots.ubuntu.com/packages?page=1&search=${pkgName}&utf8=✓"
    390                 get_screenshot_from $url $pkgName
    391         fi
     465#       if [[ $imageFound == 0 ]]
     466#       then
     467#               printf "$msg_searching_img" "ubuntu"
     468#               url="http://screenshots.ubuntu.com/packages?page=1&search=${pkgName}&utf8=✓"
     469#               get_screenshot_from $url $pkgName
     470#       fi
    392471        if [[ $imageFound ==  'https://screenshots.debian.net/' || $imageFound == ' https://screenshots.ubuntu.com/' ]]
    393472        then
     
    413492                        searchResult=${searchResult/\"/}
    414493                        url=${baseUrl}${searchResult}
    415                         wget $url -t 2 -T 10 -o /tmp/log -O $outFile
     494                        wget $url -t 2 -T 10 -o /tmp/wget_desktop.log -O $outFile
    416495                        if [ $? -eq 0 ]
    417496                        then
     
    428507function get_icon
    429508{
    430         iconName=$1
     509        [ -z ${1} ] && echo "No icon selected" && return
     510        iconName=$(basename $1)
    431511        #Check if a svg icon exists
    432512        workDir=$PWD
     
    454534                if [[ $iconFile ]]
    455535                then
     536                        iconFile=$(realpath $iconFile)
    456537                        cd $rootDir
    457538                        printf "$msg_icon_found" $iconFile
     
    460541                        mkdir $resourcesDir -p
    461542                        cd $OLDPWD
    462                         cp ${iconPath}"/"${iconFile} ${srcDir}"/"${resourcesDir}
     543                        cp ${iconFile} ${srcDir}"/"${resourcesDir}
    463544                        cd $OLDPWD
    464545                else
     
    469550                printf "$msg_icon_exists"
    470551        fi
    471         add_llxsrc_helper
    472552}
    473553
     
    499579}
    500580
     581function get_package_type
     582{
     583        cd $srcDir
     584        ls *zmds 1>/dev/null 2>&1
     585        if [ $? -eq 0 ]
     586        then
     587                echo "deb"
     588        else
     589                echo "zmd"
     590        fi
     591}
     592
     593### MAIN PROGRAM ###
    501594
    502595[[ $@ ]] || usage_help
     
    517610do
    518611        cd $launchDir
    519         debhelper_mode=0
    520         analyze_dir $parm
     612        rootDir=$launchDir
     613        svnDir=`realpath $parm`
     614        pkgDir=`realpath $parm`
     615        srcDir=${parm}"/trunk/fuentes"
     616        debianDir=${parm}"/trunk/fuentes/debian"
     617        lliurexArtworkDir=${svnDir}"/../vibrancy-colors/trunk/fuentes/vibrancy-lliurex/apps"
     618        no_copy_desktop=""
     619        sw_zomando=0
     620        [[ $(get_package_type) == 'zmd' ]] && analyze_zmd_dir $parm || analyze_desktop_dir $parm
    521621done
    522622
Note: See TracChangeset for help on using the changeset viewer.