#!/bin/bash
#
# cli.sh -- This function initializes centos-art command line
# interface. Variables defined in this function are accesible by all
# other functions. The cli function is the first script executed by
# centos-art command-line onces invoked.
#
# Copyright (C) 2009, 2010 Alain Reguera Delgado
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
#
# ----------------------------------------------------------------------
# $Id$
# ----------------------------------------------------------------------
function cli {
# Initialize global variables.
local ACTION=''
local OPTIONNAM=''
local OPTIONVAL=''
local REGEX=''
# Define action variable using first argument (lowercase) value.
ACTION=$(cli_getRepoName "$1" 'f')
# Define option name (OPTIONNAM) and option value (OPTIONVAL)
# variables passed as second argument to the command line
# interface when the format is `--option=value' without the value
# part.
if [[ "$2" =~ '^--[a-z-]+=.+$' ]];then
# Define option name passed in the second argument.
OPTIONNAM=$(echo "$2" | cut -d = -f1)
# Define option value passed in the second argument.
OPTIONVAL=$(echo "$2" | cut -d = -f2-)
# Check option value passed in the second argument.
cli_checkOptionValue
# Define option name (OPTIONNAM), and option value (OPTIONVAL)
# variables passed as second argument to the command line
# interface when the format is `--option' without the value part.
elif [[ "$2" =~ '^--[a-z-]+=?$' ]];then
# Define option name passed in the second argument.
OPTIONNAM=$(echo "$2" | cut -d = -f1)
# Define option value passed in the second argument. Assume
# the local path. This saves you some typing when you are
# in the place you want to apply your action on.
if [[ $(pwd) =~ '^/home/centos/artwork/.+$' ]];then
OPTIONVAL=$(pwd)
else
OPTIONVAL='/home/centos/artwork/trunk'
fi
# Define default option name (OPTIONNAM), and default option value
# (OPTIONVAL) when no second argument is passed to the command
# line interface.
else
# Define default option name.
OPTIONNAM="default"
# Define default option value.
if [[ $(pwd) =~ '^/home/centos/artwork/.+$' ]];then
OPTIONVAL=$(pwd)
else
OPTIONVAL='/home/centos/artwork/trunk'
fi
fi
# Define regular expression (REGEX) used to reduce file
# processing. If no regular expression is defined, set regular
# expression to match everything.
if [[ "$3" =~ '^--filter=.+$' ]];then
REGEX=$(echo "$3" | cut -d '=' -f2-)
else
REGEX='.+'
fi
# If option value plus the filter value (REGEX) points to a valid
# file, re-define the option value (OPTIONVAL) using the
# directory/file absolute path combination instead. This let you
# create documentation entries for files too.
if [[ -f $OPTIONVAL/$REGEX ]];then
OPTIONVAL=$OPTIONVAL/$REGEX
fi
# Define prefix for temporal files.
TMPFILE="/tmp/centos-art-$$"
# Define default text editors used by centos-art.sh script.
if [[ ! "$EDITOR" =~ '/usr/bin/(vim|emacs|nano)' ]];then
EDITOR='/usr/bin/vim'
fi
# Check text editor execution rights.
cli_checkFiles $EDITOR 'x'
# Go to defined actions. Keep the cli_getActions function calling
# after all variables and arguments definitions. Reason? To make
# all variables and arguments definitions available inside
# cli_Actions and subsequent function calls inside it.
cli_getActions "$@"
}