summaryrefslogtreecommitdiffstats
path: root/kapptemplate/kapptemplate.common
diff options
context:
space:
mode:
Diffstat (limited to 'kapptemplate/kapptemplate.common')
-rw-r--r--kapptemplate/kapptemplate.common496
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
+}