You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdesdk/kapptemplate/kapptemplate.common

497 lines
12 KiB

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