All pastes #236930 Raw Edit

Someone

public text v1 · immutable
·published 2006-11-04 05:23 UTC
rendered paste body
function _setupDesktopFile() {
    local adjust_path="$1"
    local F="$2"
    local categories_value category category_add

    if $adjust_path; then
        trace Adjusting path for $F...
        local bindir=$( escapeValue "$PREFIX/bin/" )
        grep -q '^TryExec=/' "$F" || safeSed "$F" "s/^TryExec=/TryExec=$bindir/"
        grep -q '^Exec=/' "$F" || safeSed "$F" "s/^Exec=/Exec=$bindir/"
    fi

    # ensure there is an ending ';' in the 'Categories' values from Desktop Entry section - if not rewrite the entry
    local desktop_entry_section=$( getSection "$F" "Desktop Entry" )
    local cat_count=$( echo "$desktop_entry_section" | grep -c '^Categories' )
    if (( cat_count == 1 )); then
        categories_value=`echo "$desktop_entry_section" | grep '^Categories=' | awk 'BEGIN{FS="="}; { print $2 }' -`
        trace categories_value is $categories_value
        local i=${#categories_value}
        (( i-- ))
        if [[ ${categories_value:$i} != ";" ]]; then
            trace adding ';' to Desktop Entry Categories values in $F
            addSectionLine "$F" "Desktop Entry" "Categories=${categories_value};" "^Categories="
            # reload categories_value
            desktop_entry_section=$( getSection "$F" "Desktop Entry" )
            categories_value=`echo "$desktop_entry_section" | grep '^Categories=' | awk 'BEGIN{FS="="}; { print $2 }' -`
        fi
        if ! echo "$categories_value" | grep -qF "X-Red-Hat-Base;"; then
            trace adding X-Red-Hat-Base to $F...
            addSectionLine "$F" "Desktop Entry" "Categories=${categories_value}X-Red-Hat-Base;" "^Categories="
        fi

        # mandriva category mangling area - compatibility till full implementation of xdg
        if [[ "$AUTOPACKAGE_DISTRIBUTION_ID" == "mandriva" ]]; then
            for category in `echo $categories_value | sed 's/\;/ /g'`; do
                case $category in
                    Audio ) 		category_add="X-MandrivaLinux-Multimedia-Sound";;
                    AudioVideo ) 	category_add="X-MandrivaLinux-Multimedia";;
                    Audio ) 		category_add="X-MandrivaLinux-Multimedia-Sound";;
                    Video ) 		category_add="X-MandrivaLinux-Multimedia-Video";;
                    Development ) 	category_add="X-MandrivaLinux-MoreApplications-Development";;
                    Education ) 	category_add="X-MandrivaLinux-MoreApplications-Education";;
                    Game ) 			category_add="X-MandrivaLinux-MoreApplications-Games";;
                    Graphics ) 		category_add="X-MandrivaLinux-Multimedia-Graphics";;
                    Network ) 		category_add="X-MandrivaLinux-Internet";;
                    Office ) 		category_add="X-MandrivaLinux-Office";;
                    Settings ) 		category_add="X-MandrivaLinux-System-Configuration";;
                    System ) 		category_add="X-MandrivaLinux-System";;
                    Utility ) 		category_add="X-MandrivaLinux-Office-Accessories";;
                esac
                [ -n "$category_add" ] && addSectionLine "$F" "Desktop Entry" "Categories=${categories_value}${category_add};" "^Categories="
            done
        fi

    elif (( cat_count > 1 )); then
        err "installMenuItem: desktop file $F has more than 1 'Categories' keys in the Desktop Entry section."
    fi

    # check if we need to update MIME database
    if grep -q '^MimeType=' "$F"; then
        # register update-mime-database trigger
        _registerTrigger mime
    else
        warn no MimeType line for $F
    fi

    addSectionLine "$F" "Desktop Entry" "X-Autopackage=${ROOTNAME}" "^X-Autopackage="

    # add action menu text to .desktop file and add short name
    #outn "$DESKTOP_ACTION_UPDATE" "$SHORTNAME" >> "$F";
    outn "$DESKTOP_ACTION_VERIFY" "$SHORTNAME" >> "$F";
    outn "$DESKTOP_ACTION_REMOVE" "$SHORTNAME" >> "$F";
    safeSed "$F" "s/Short_Name/${SHORTNAME}/"

    # gather previous 'Actions' values from Desktop Entry section and prepend new action values
    action_value=`getSection "$F" "Desktop Entry" | grep '^Actions=' | awk 'BEGIN{FS="="}; { print $2 }' -`
    #addSectionLine "$F" "Desktop Entry" "Actions=Apkg-Update;Apkg-Verify;Apkg-Remove;$action_value" "^Actions="
    addSectionLine "$F" "Desktop Entry" "Actions=Apkg-Verify;Apkg-Remove;$action_value" "^Actions="
}


##