|
|
4c79b5 |
#!/bin/bash
|
|
|
4c79b5 |
#
|
|
|
4c79b5 |
# cli.sh -- This function initializes centos-art command line
|
|
|
4c79b5 |
# interface. Variables defined in this function are accesible by all
|
|
|
4c79b5 |
# other functions. The cli function is the first script executed by
|
|
|
4c79b5 |
# centos-art command-line onces invoked.
|
|
|
4c79b5 |
#
|
|
|
4c79b5 |
# Copyright (C) 2009-2010 Alain Reguera Delgado
|
|
|
4c79b5 |
#
|
|
|
4c79b5 |
# This program is free software; you can redistribute it and/or modify
|
|
|
4c79b5 |
# it under the terms of the GNU General Public License as published by
|
|
|
4c79b5 |
# the Free Software Foundation; either version 2 of the License, or
|
|
|
4c79b5 |
# (at your option) any later version.
|
|
|
4c79b5 |
#
|
|
|
4c79b5 |
# This program is distributed in the hope that it will be useful, but
|
|
|
4c79b5 |
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
4c79b5 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
4c79b5 |
# General Public License for more details.
|
|
|
4c79b5 |
#
|
|
|
4c79b5 |
# You should have received a copy of the GNU General Public License
|
|
|
4c79b5 |
# along with this program; if not, write to the Free Software
|
|
|
4c79b5 |
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
|
4c79b5 |
# USA.
|
|
|
4c79b5 |
#
|
|
|
4c79b5 |
# ----------------------------------------------------------------------
|
|
|
4c79b5 |
# $Id: cli.sh 98 2010-09-19 16:01:53Z al $
|
|
|
4c79b5 |
# ----------------------------------------------------------------------
|
|
|
4c79b5 |
|
|
|
4c79b5 |
function cli {
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define action variable using first argument (lowercase) value.
|
|
|
4c79b5 |
ACTION=$(cli_getRepoName 'f' "$1")
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define command-line information.
|
|
|
4c79b5 |
CLI_COMMAND="centos-art.sh"
|
|
|
4c79b5 |
CLI_DESCRIPTION="$CLI_COMMAND - `gettext "Automate frequent tasks inside CentOS Artwork Repository."`"
|
|
|
4c79b5 |
CLI_RELEASE="alpha"
|
|
|
4c79b5 |
CLI_COPYRIGHT="Copyright (C) 2009-2010 Alain Reguera Delgado."
|
|
|
4c79b5 |
CLI_LICENSE="This program is free software; you can redistribute
|
|
|
4c79b5 |
it and/or modify it under the terms of the GNU General Public License
|
|
|
4c79b5 |
as published by the Free Software Foundation; either version 2 of the
|
|
|
4c79b5 |
License, or (at your option) any later version.
|
|
|
4c79b5 |
|
|
|
4c79b5 |
This program is distributed in the hope that it will be useful,
|
|
|
4c79b5 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
4c79b5 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
4c79b5 |
General Public License for more details.
|
|
|
4c79b5 |
|
|
|
4c79b5 |
You should have received a copy of the GNU General Public License
|
|
|
4c79b5 |
along with this program; if not, write to the Free Software
|
|
|
4c79b5 |
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
|
4c79b5 |
USA."
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define option name (OPTIONNAM) and option value (OPTIONVAL)
|
|
|
4c79b5 |
# variables passed as second argument to the command line
|
|
|
4c79b5 |
# interface when the format is `--option=value' without the value
|
|
|
4c79b5 |
# part.
|
|
|
4c79b5 |
if [[ "$2" =~ '^-{1,2}[a-z]+=.+$' ]];then
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define option name passed in the second argument.
|
|
|
4c79b5 |
OPTIONNAM=$(echo "$2" | cut -d = -f1)
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define option value passed in the second argument.
|
|
|
4c79b5 |
OPTIONVAL=$(echo "$2" | cut -d = -f2-)
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Check option value passed in the second argument.
|
|
|
4c79b5 |
cli_checkOptionValue
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define option name (OPTIONNAM), and option value (OPTIONVAL)
|
|
|
4c79b5 |
# variables passed as second argument to the command line
|
|
|
4c79b5 |
# interface when the format is `--option' without the value part.
|
|
|
4c79b5 |
elif [[ "$2" =~ '^-{1,2}[a-z]+=?$' ]];then
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define option name passed in the second argument.
|
|
|
4c79b5 |
OPTIONNAM=$(echo "$2" | cut -d = -f1)
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define option value passed in the second argument. Assume
|
|
|
4c79b5 |
# the local path. This saves you some typing when you are
|
|
|
4c79b5 |
# in the place you want to apply your action on.
|
|
|
4c79b5 |
if [[ $(pwd) =~ '^/home/centos/artwork/.+$' ]];then
|
|
|
4c79b5 |
OPTIONVAL=$(pwd)
|
|
|
4c79b5 |
else
|
|
|
4c79b5 |
OPTIONVAL='/home/centos/artwork/trunk'
|
|
|
4c79b5 |
fi
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define default option name (OPTIONNAM), and default option value
|
|
|
4c79b5 |
# (OPTIONVAL) when no second argument is passed to the command
|
|
|
4c79b5 |
# line interface.
|
|
|
4c79b5 |
else
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define default option name.
|
|
|
4c79b5 |
OPTIONNAM="default"
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define default option value.
|
|
|
4c79b5 |
if [[ $(pwd) =~ '^/home/centos/artwork/.+$' ]];then
|
|
|
4c79b5 |
OPTIONVAL=$(pwd)
|
|
|
4c79b5 |
else
|
|
|
4c79b5 |
OPTIONVAL='/home/centos/artwork/trunk'
|
|
|
4c79b5 |
fi
|
|
|
4c79b5 |
|
|
|
4c79b5 |
fi
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define regular expression (REGEX) used to reduce file
|
|
|
4c79b5 |
# processing. If no regular expression is defined, set regular
|
|
|
4c79b5 |
# expression to match everything.
|
|
|
4c79b5 |
if [[ "$3" =~ '^--filter=.+$' ]];then
|
|
|
4c79b5 |
REGEX=$(echo "$3" | cut -d '=' -f2-)
|
|
|
4c79b5 |
else
|
|
|
4c79b5 |
REGEX='.+'
|
|
|
4c79b5 |
fi
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# If option value plus the filter value (REGEX) points to a valid
|
|
|
4c79b5 |
# file, re-define the option value (OPTIONVAL) using the
|
|
|
4c79b5 |
# directory/file absolute path combination instead. This let you
|
|
|
4c79b5 |
# create documentation entries for files too.
|
|
|
4c79b5 |
if [[ -f $OPTIONVAL/$REGEX ]];then
|
|
|
4c79b5 |
OPTIONVAL=$OPTIONVAL/$REGEX
|
|
|
4c79b5 |
fi
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define centos-art.sh standard paths.
|
|
|
4c79b5 |
REPO_PATHS[0]=/home/centos
|
|
|
4c79b5 |
REPO_PATHS[1]=${REPO_PATHS[0]}/bin
|
|
|
4c79b5 |
REPO_PATHS[2]=${REPO_PATHS[1]}/centos-art
|
|
|
4c79b5 |
REPO_PATHS[3]=${REPO_PATHS[0]}/artwork/trunk/Scripts/Bash/$CLI_COMMAND
|
|
|
4c79b5 |
REPO_PATHS[4]=${REPO_PATHS[0]}/artwork/trunk/Scripts/Bash
|
|
|
4c79b5 |
REPO_PATHS[5]=${REPO_PATHS[0]}/artwork/trunk/Translations
|
|
|
4c79b5 |
REPO_PATHS[6]=${REPO_PATHS[0]}/.fonts
|
|
|
4c79b5 |
REPO_PATHS[7]=${REPO_PATHS[0]}/artwork/trunk/Identity/Fonts/Ttf
|
|
|
4c79b5 |
REPO_PATHS[8]=${REPO_PATHS[0]}/artwork/trunk/Scripts/Bash/Functions
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define positive answer.
|
|
|
4c79b5 |
Y="`gettext "y"`"
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define negative answer.
|
|
|
4c79b5 |
N="`gettext "N"`"
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define default answer to questions.
|
|
|
4c79b5 |
ANSWER=${N}
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define a unique string based on script name and process id used
|
|
|
4c79b5 |
# to create temporal files under /tmp/.
|
|
|
4c79b5 |
FILEID="centos-art$$"
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Define text editor used to edit texinfo documentation. Predifine
|
|
|
4c79b5 |
# possible editors paths here to avoid malevolent values. If we do
|
|
|
4c79b5 |
# not create this restriction editor can be set to anything other
|
|
|
4c79b5 |
# than a text editor and in that case be executed when you try to
|
|
|
4c79b5 |
# edit a documentation entry using the `centos-art help --edit'
|
|
|
4c79b5 |
# command.
|
|
|
4c79b5 |
if [[ ! "$EDITOR" =~ '/usr/bin/(emacs|vim|nano)' ]];then
|
|
|
4c79b5 |
EDITOR='/usr/bin/vim'
|
|
|
4c79b5 |
fi
|
|
|
4c79b5 |
|
|
|
4c79b5 |
# Go to defined actions. Keep the cli_getActions function calling
|
|
|
4c79b5 |
# after all variables and arguments definitions. Reason? To make
|
|
|
4c79b5 |
# all variables and arguments definitions available inside
|
|
|
4c79b5 |
# cli_Actions and subsequent function calls inside it.
|
|
|
4c79b5 |
cli_getActions "$@"
|
|
|
4c79b5 |
|
|
|
4c79b5 |
}
|