diff options
Diffstat (limited to 'kapptemplate/kapptemplate.common')
-rw-r--r-- | kapptemplate/kapptemplate.common | 496 |
1 files changed, 496 insertions, 0 deletions
diff --git a/kapptemplate/kapptemplate.common b/kapptemplate/kapptemplate.common new file mode 100644 index 00000000..8cff2d60 --- /dev/null +++ b/kapptemplate/kapptemplate.common @@ -0,0 +1,496 @@ +#!/usr/bin/env bash +########################################################################### +# +# kapptemplate.common +# +# This file contains a bunch of common function that may be used by +# the various kapptemplate modules. Each function lists which +# environment variables need to be set before the function is called +# and which variables will be set after it's done. This file is +# intended to be included or sourced by any module that uses its +# functions. +# +########################################################################### + +########################################################################### +# +# Function: Usage +# +# Display the help output (--help) +# +########################################################################### +function Usage +{ + $ECHO "Usage: kapptemplate [options]"; + $ECHO "Options:"; + $ECHO " --help Display this information"; + $ECHO " --noinit Don't run '$MAKE -f Makefile.cvs'"; + $ECHO " --default Use default values instead of prompting"; + $ECHO; + $ECHO "Framework Types:"; + $ECHO " --full-app Create full featured KDE application"; + $ECHO " --kpart-app Create full KPart application"; + $ECHO " --kpart-plugin Create KPart plugin framework"; + $ECHO " --existing Convert existing source to KDE framework"; +} + +########################################################################### +# +# Function: ParseCommandLine +# +# Parse the commandline args (--help, --noinit, etc) +# +# OUTPUT: $NOINIT, $ALL_DEFAULTS, $WHICH_ONE +# +########################################################################### +function ParseCommandLine +{ + unset NOINIT; + unset ALL_DEFAULTS; + unset WHICH_ONE; + if [ ! "$CMDLINE" ]; + then + return; + fi + + for CMD in $CMDLINE; + do + case $CMD in + --help) + Usage; + exit 0;; + + --noinit) + NOINIT=1;; + --default) + ALL_DEFAULTS=1;; + --full-app) + WHICH_ONE=1;; + --kpart-app) + WHICH_ONE=2;; + --kpart-plugin) + WHICH_ONE=3;; + --existing) + WHICH_ONE=4;; + *) + $ECHO "Unknown option $1"; + Usage; + exit 1;; + esac + done +} + +########################################################################### +# +# Function: GetProperName +# +# Get the application or class or plugin or whatever's proper name +# +# INPUT : $APPTYPE, $APPDEFAULT +# OUTPUT: $APP_NAME, $APP_NAME_UC, $APP_NAME_LC +# +########################################################################### +function GetProperName +{ + # Make sure we have reasonable defaults + if [ ! "$APPTYPE" ]; + then + APPTYPE="application"; + fi + if [ ! "$APPDEFAULT" ]; + then + APPDEFAULT="KMyApp"; + fi + + # See what we are getting + if [ ! "$ALL_DEFAULTS" ]; + then + unset APP_NAME; + while [ ! $APP_NAME ]; + do + $ECHO "What is the ${APPTYPE}'s proper name [default: ${APPDEFAULT}]"; + $ECHO ": \c"; + read APP_NAME; + + if [ ! $APP_NAME ]; + then + APP_NAME=${APPDEFAULT}; + $ECHO "Going with default name '${APPDEFAULT}'"; + fi + done + $ECHO; + else + APP_NAME=${APPDEFAULT}; + fi + + # Create some variations + APP_NAME_UC=`$ECHO $APP_NAME | tr a-z A-Z`; + APP_NAME_LC=`$ECHO $APP_NAME | tr A-Z a-z`; +} + +########################################################################### +# +# Function: GetVersion +# +# Get the application or class or plugin or whatever's version +# +# INPUT : $APPTYPE +# OUTPUT: $APP_VERSION +# +########################################################################### +function GetVersion +{ + # Make sure we have reasonable defaults + if [ ! "$APPTYPE" ]; + then + APPTYPE="application"; + fi + + # Get the application version + if [ ! "$ALL_DEFAULTS" ]; + then + unset APP_VERSION; + while [ ! $APP_VERSION ]; + do + $ECHO "What is the ${APPTYPE}'s version [default: 0.1]"; + $ECHO ": \c"; + read APP_VERSION; + + if [ ! $APP_VERSION ]; + then + APP_VERSION="0.1"; + $ECHO "Going with default version '$APP_VERSION'"; + fi + done + $ECHO; + else + APP_VERSION="0.1"; + fi +} + +########################################################################### +# +# Function: GetLocationRoot +# +# Get the directory where this all should be installed +# +# INPUT : $DEFAULT_ROOT, $APP_NAME_LC, $APP_VERSION +# OUTPUT: $LOCATION_ROOT +# +########################################################################### +function GetLocationRoot +{ + if [ ! "$ALL_DEFAULTS" ]; + then + unset LOCATION_ROOT; + while [ ! $LOCATION_ROOT ]; + do + $ECHO "Where should I create this [default: $DEFAULT_ROOT/$APP_NAME_LC-$APP_VERSION]"; + $ECHO ": \c"; + read LOCATION_ROOT; + + if [ ! $LOCATION_ROOT ]; + then + LOCATION_ROOT="$DEFAULT_ROOT/$APP_NAME_LC-$APP_VERSION"; + $ECHO "Going with default root '$LOCATION_ROOT'"; + fi + + # We overwrite anything if the directory already exists + if [ -d $LOCATION_ROOT ]; + then + $ECHO "This directory already exists. Will overwrite."; + $ECHO; + fi + done + $ECHO; + else + LOCATION_ROOT="$DEFAULT_ROOT/$APP_NAME_LC-$APP_VERSION"; + fi + +} + +########################################################################### +# +# Function: GetAuthorName +# +# Get the name of the author +# +# INPUT: $DEFAULT_AUTHOR +# +########################################################################### +function GetAuthorName +{ + unset AUTHOR; + while [ ! "$AUTHOR" ]; + do + if [ "$ALL_DEFAULTS" -a "$DEFAULT_AUTHOR" ]; + then + AUTHOR="$DEFAULT_AUTHOR"; + else + if [ "$DEFAULT_AUTHOR" ]; + then + $ECHO "What is your name [default: $DEFAULT_AUTHOR]"; + else + $ECHO "What is your name [no default]"; + fi + $ECHO ": \c"; + read AUTHOR; + + if [ "$DEFAULT_AUTHOR" -a ! "$AUTHOR" ]; + then + AUTHOR="$DEFAULT_AUTHOR"; + $ECHO "Going with default author '$AUTHOR'"; + fi + fi + done + $ECHO; +} + +########################################################################### +# +# Function: GetAuthorEmail +# +# Get the email of the author +# +# INPUT: $DEFAULT_EMAIL +# +########################################################################### +function GetAuthorEmail +{ + unset EMAIL; + while [ ! "$EMAIL" ]; + do + if [ "$ALL_DEFAULTS" -a "$DEFAULT_EMAIL" ]; + then + EMAIL="$DEFAULT_EMAIL"; + else + if [ "$DEFAULT_EMAIL" ]; + then + $ECHO "What is your email address [default: $DEFAULT_EMAIL]"; + else + $ECHO "What is your email address [no default]"; + fi + $ECHO ": \c"; + read EMAIL; + + if [ "$DEFAULT_EMAIL" -a ! "$EMAIL" ]; + then + EMAIL="$DEFAULT_EMAIL"; + $ECHO "Going with default email address '$EMAIL'"; + fi + fi + done + $ECHO; +} + +########################################################################### +# +# Function: GetFileList +# +# Generic utility function to get a list of files in a directory +# +# INPUT : $DIRECTORY +# OUTPUT: $FILES +# +########################################################################### +function GetFileList +{ + unset FILES; + if [ -d "$DIRECTORY" ]; + then +# FILES=`/bin/ls -1 -I "no-exe" -I*~ $DIRECTORY`; + FILES=`cd $DIRECTORY; find . ! -name "*~" -maxdepth 1 -type f -print | sed 's,^\./,,' | sort`; + + if [ ! "$FILES" ]; + then + $ECHO "Cannot find files in $DIRECTORY!"; + exit 1; + fi + else + $ECHO "$DIRECTORY directory does not exist!"; + exit 1; + fi +} + +########################################################################### +# +# Function: BuildModuleLists +# +# Build a list of files that correspond with each module +# +# INPUT : $SHARE_DIR +# +########################################################################### +function BuildModuleLists +{ + # Make sure all the modules exist first + if [ ! -f "$INCLUDE_DIR/kapptemplate.module" ]; + then + $ECHO "The 'kapptemplate.module' file can't be found."; + $ECHO; + exit 1; + fi + + if [ ! -f "$INCLUDE_DIR/kpartplugin.module" ]; + then + $ECHO "The 'kpartplugin.module' file can't be found."; + $ECHO; + exit 1; + fi + + if [ ! -f "$INCLUDE_DIR/existing.module" ]; + then + $ECHO "The 'existing.module' file can't be found."; + $ECHO; + exit 1; + fi + + # Find the 'admin' files + DIRECTORY=$SHARE_DIR/admin; + GetFileList + ADMIN_FILES=$FILES; + + # Find the 'appframework' files + DIRECTORY=$SHARE_DIR/appframework; + GetFileList + APPFRAMEWORK_FILES=$FILES; + + # Find the 'kapp' files + DIRECTORY=$SHARE_DIR/kapp; + GetFileList + KAPP_FILES=$FILES; + + # Find the 'kpartplugin' files + DIRECTORY=$SHARE_DIR/kpartplugin; + GetFileList + KPARTPLUGIN_FILES=$FILES; + + # Find the 'existing' files + DIRECTORY=$SHARE_DIR/existing; + GetFileList + EXISTING_FILES=$FILES; + + # Find the 'kpartapp' files + DIRECTORY=$SHARE_DIR/kpartapp; + GetFileList + KPARTAPP_FILES=$FILES; +} + +########################################################################### +# +# Function: CreateAppFramework +# +# Create the initial directory structure of the application or plugin +# and put in the common admin and configure files +# +# INPUT : $LOCATION_ROOT, $APP_NAME_LC, $SHARE_DIR +# +########################################################################### +function CreateAppFramework +{ + # Create the directory tree + $ECHO; + $ECHO "Creating directory $LOCATION_ROOT..."; + $MKDIR $LOCATION_ROOT || exit 1; + + $ECHO "Creating directory $LOCATION_ROOT/admin..."; + $MKDIR $LOCATION_ROOT/admin || exit 1; + + $ECHO "Creating directory $LOCATION_ROOT/$APP_NAME_LC..."; + $MKDIR $LOCATION_ROOT/$APP_NAME_LC || exit 1; + + $ECHO "Creating directory $LOCATION_ROOT/po..."; + $MKDIR $LOCATION_ROOT/po || exit 1; + + for FILE in $ADMIN_FILES; + do + $ECHO "Copying $LOCATION_ROOT/$FILE..."; + cp -p $SHARE_DIR/admin/$FILE $LOCATION_ROOT/admin/$FILE || exit 1; + done + + for FILE in $APPFRAMEWORK_FILES; + do + . $SHARE_DIR/appframework/$FILE || exit 1; + done +} + +########################################################################### +# +# Function: GetInitialDefaults +# +# This is run the first time a user uses kapptemplate. It gets a few +# default values and installs them into $HOME/.kapptemplate +# +# INPUT: $KAPPTEMPLATEVERSION +# +########################################################################### +function GetInitialDefaults +{ + $ECHO "I see that this is your first time using KAppTemplate. Excellent!"; + $ECHO "To get started, I need you to answer the following questions. Your"; + $ECHO "answers will be used as the default values every time you use this"; + $ECHO "program in the future."; + unset THE_AUTHOR; + while [ ! "$THE_AUTHOR" ]; + do + $ECHO "What is your full name? \c"; + if [ "$DEFAULT_AUTHOR" ]; + then + $ECHO "[default: $DEFAULT_AUTHOR]"; + else + $ECHO "[no default]"; + fi + $ECHO ": \c"; + read THE_AUTHOR; + + if [ "$DEFAULT_AUTHOR" -a ! "$THE_AUTHOR" ]; + then + THE_AUTHOR="$DEFAULT_AUTHOR"; + fi + done + $ECHO; + + unset THE_EMAIL; + while [ ! "$THE_EMAIL" ]; + do + $ECHO "What is your email address? \c"; + if [ "$DEFAULT_EMAIL" ]; + then + $ECHO "[default: $DEFAULT_EMAIL]"; + else + $ECHO "[no default]"; + fi + $ECHO ": \c"; + read THE_EMAIL; + + if [ "$DEFAULT_EMAIL" -a ! "$THE_EMAIL" ]; + then + THE_EMAIL="$DEFAULT_EMAIL"; + fi + done + $ECHO; + + unset THE_ROOT; + $ECHO "Where should I construct apps? \c"; + if [ ! "$DEFAULT_ROOT" ]; + then + DEFAULT_ROOT="$HOME/src"; + fi + $ECHO "[default: $DEFAULT_ROOT]"; + $ECHO ": \c"; + read THE_ROOT; + + if [ ! "$THE_ROOT" ]; + then + THE_ROOT="$DEFAULT_ROOT"; + fi + $ECHO; + + $ECHO "Constructing .kapptemplaterc..."; + cat << ENDORC > $HOME/.kapptemplaterc +DEFAULT_AUTHOR="$THE_AUTHOR"; +DEFAULT_EMAIL="$THE_EMAIL"; +DEFAULT_ROOT="$THE_ROOT"; +VERSION="$KAPPTEMPLATEVERSION"; +ENDORC +} |