diff options
author | FadeMind | 2015-06-08 13:02:48 +0200 |
---|---|---|
committer | FadeMind | 2015-06-08 13:02:48 +0200 |
commit | cdc1794795069fd0bcbca793e45cc83300155b95 (patch) | |
tree | da991d59b4eecf52c444ba817286861cf04fe587 | |
download | aur-cdc1794795069fd0bcbca793e45cc83300155b95.tar.gz |
20140503-1
-rw-r--r-- | .SRCINFO | 16 | ||||
-rw-r--r-- | PKGBUILD | 20 | ||||
-rwxr-xr-x | mktemplate | 120 | ||||
-rwxr-xr-x | mktemplate.desktop | 13 |
4 files changed, 169 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..4ac925abc338 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,16 @@ +pkgbase = kde-servicemenus-mktemplate + pkgdesc = Create user templates from existing files. + pkgver = 20140503 + pkgrel = 1 + url = http://opendesktop.org/content/show.php?content=165089 + arch = any + license = GPL + depends = kdebase-dolphin + depends = bash + source = mktemplate + source = mktemplate.desktop + sha256sums = 6654f85ae29a8df1916e956f9ff4c157050573087693163c3f36bde4ff26ad86 + sha256sums = 2687523aa3cb1161e15b82e5087b1f03fba9a81d1c70a64ee030fd73f8bc5066 + +pkgname = kde-servicemenus-mktemplate + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..52d0951c20ba --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,20 @@ +# Maintainer: FadeMind <fademind@gmail.com> + +pkgname=kde-servicemenus-mktemplate +pkgver=20140503 +pkgrel=1 +pkgdesc="Create user templates from existing files." +arch=('any') +url="http://opendesktop.org/content/show.php?content=165089" +license=('GPL') +depends=('kdebase-dolphin' 'bash') +source=('mktemplate' 'mktemplate.desktop') +sha256sums=('6654f85ae29a8df1916e956f9ff4c157050573087693163c3f36bde4ff26ad86' + '2687523aa3cb1161e15b82e5087b1f03fba9a81d1c70a64ee030fd73f8bc5066') + +package() { + cd ${srcdir} + install -D -m755 mktemplate ${pkgdir}/usr/bin/mktemplate + install -dm755 ${pkgdir}/usr/share/kde4/services/ServiceMenus/ + install -D -m644 mktemplate.desktop ${pkgdir}/usr/share/kde4/services/ServiceMenus/ +} diff --git a/mktemplate b/mktemplate new file mode 100755 index 000000000000..336f5b8f0f96 --- /dev/null +++ b/mktemplate @@ -0,0 +1,120 @@ +#!/bin/bash - + +declare -r PROGNAME=${0##*/} + + +function error() { + printf "%s: %s\n" ${0##*/} "$@" +} >&2 + + +# ----------------------------------------------------------------------- +# Function to create temporary files +# optional number of files to create--default is one +# returns an array ($TEMP_FILE) containing temporary file names +# ----------------------------------------------------------------------- +function makeTempFiles () { + + declare fnum=${1:-1} # number of temporary files to create + + # Use user's local tmp directory if it exists + if [ -d ~/tmp ]; then + TEMP_DIR=~/tmp + else + TEMP_DIR=/tmp + fi + + # Temp files for this script, using paranoid method of creation to + # ensure that file names are not predictable. This is for security to + # avoid "tmp race" attacks. + for (( n=0; n<$fnum; n++ )); do + TEMP_FILE[$n]=$(mktemp -q "${TEMP_DIR}/${PROGNAME}.$$.XXXXXX") + if [ "${TEMP_FILE[$n]}" = '' ]; then + error 'cannot create temp file!' + exit 1 + fi + done +} + +trap 'rm -f "${TEMP_FILE[*]}" >/dev/null 2>&1; exit' 0 1 2 3 13 15 + +function usage() { +cat >&2 << EOF +Usage: ${0##*/} filename + filename: is the file to make into a template. +EOF +} + + +# ensure we have a real live file to work with +if ! [ "1" -eq "$#" ]; then + error "required number of arguments is 1... number of arguments given: $#" + usage + exit 1 +fi +if ! [ -e "$1" ]; then + error "$1 does not exist" + exit 1 +fi +if ! [ -f "$1" ]; then + error "$1 is not a regular file" + exit 1 +fi + +# set base directory for template and .desktop file +declare -r DIR=$(kde4-config --localprefix)/share/templates # .desktop file directory +declare -r SOURCE="$DIR/.source" # template file directory + +# make sure all required directories exist +if ! mkdir -p $SOURCE >/dev/null 2>&1 && ! [ -d $SOURCE ]; then + error 'required directories cannot be created' + exit 1 +fi + +# make sure the template and desktop files have sane names +declare -r FILE="$1" # source file +declare saneName=$(sed 's/[[:space:]]/_/g' <<< $FILE) # base name for template and desktop files +saneName=${saneName##*/} + +# create .desktop filename +declare desktop=$DIR/$saneName +desktop=${desktop%.*}.desktop + +# create template filename +declare template=$SOURCE/$saneName + +# prompt for icon and menu entry text +icon=$(kdialog --title "Choose an Icon" --geticon Small MimeType 2>/dev/null) +if [ -z "$icon" ]; then + error 'no icon selected' + exit 1 +fi +filetype=$(kdialog --title "Menu and Dialog Prompt Text" --inputbox "Document type:" "$(file "$FILE" | awk -F: '{print $2}' | awk -F, '{print $1}')" 2>/dev/null) +if [ -z "$filetype" ]; then + error 'no prompt text entered' + exit 1 +fi + +# create .desktop file content +makeTempFiles +cat > ${TEMP_FILE[0]} << EOF +[Desktop Entry] +Name=$filetype... +Comment=New $filetype... +Type=Link +URL=.source/$saneName +Icon=$icon +EOF + + +# install template and .desktop file +cp ${TEMP_FILE[0]} $desktop +cp "$FILE" $template + +# report errors +if ! [ -e $desktop ]; then + kdialog --error "$desktop could not be created" +fi +if ! [ -e $template ]; then + kdialog --error "$template could not be created" +fi diff --git a/mktemplate.desktop b/mktemplate.desktop new file mode 100755 index 000000000000..9b9892091572 --- /dev/null +++ b/mktemplate.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Type=Service +ServiceTypes=KonqPopupMenu/Plugin +MimeType=all/allfiles; +Actions=makeTemplate; +X-KDE-StartupNotify=false +X-KDE-Priority=TopLevel + +[Desktop Action makeTemplate] +Name=Create template... +Name[pl]=Stwórz szablon... +Exec=mktemplate "%u" +Icon=text-x-generic-template |