|
|
|
#!/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
|
|
|
|
}
|