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