Blob Blame History Raw
#!/bin/bash
#
# cli_getThemeName.sh -- This function interprets the current
# absolute path ---defined in action value variable--- to extract the
# theme name from it. If theme name is found on absolute path, this
# function returns an empty string. 
#
# 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_getThemeName {

    # Initialize regular expression pattern.
    local PATTERN=''

    if [[ $ACTIONVAL =~ '^/home/centos/artwork/trunk/.*$' ]];then

        # Define theme name for trunk development line.  There is no
        # enumeration schema for themes stored under trunk development
        # line. Inside trunk development line, theme names are stored
        # in directories immediatly under Themes/Motifs/ directory and
        # and can be named using letters and numbers.
        PATTERN='^.+/Identity/Themes/Motifs/([A-Za-z0-9]+)/.+$'

    elif [[ $ACTIONVAL =~ '^/home/centos/artwork/branches/.*$' ]];then

        # Define theme name for branches development line.  Branch
        # enumeration starts at number one and increments one unit
        # each time a new branch is created from the same trunk
        # development line.  If a branch is created from another brach
        # then a new directory is created inside the source branch,
        # using the same enumeration schema.  So, we may end up with
        # paths like branches/.../Themes/Motifs/Flame/1,
        # branches/.../Themes/Motifs/Flame/1/1,
        # branches/.../Themes/Motifs/Flame/1/2,
        # branches/.../Themes/Motifs/Flame/2,
        # branches/.../Themes/Motifs/Flame/2/1, and so on.  In all
        # previous examples the theme name holds the branch
        # enumeration schema too.
        PATTERN="^.+/Identity/Themes/Motifs/(([A-Za-z0-9]+)(/${RELEASE_FORMAT})+)/.+$"

    elif [[ $ACTIONVAL =~ '^/home/centos/artwork/tags/.*$' ]];then

        # Define theme name for tags frozen lines.  Branch enumeration
        # starts at number zero and increments one unit each time a
        # new tab is created from the same branch development line.
        # Tags are never created from trunk, if you need to create a
        # tag from trunk, you need to create a branch first and later
        # a tag. In contrast with branches enumeration schema, tags
        # enumeration schema uses dots. So, we may end up with paths
        # like tags/.../Themes/Motifs/Flame/1.0,
        # tags/.../Themes/Motifs/Flame/1.1.0,
        # tags/.../Themes/Motifs/Flame/1.2.0,
        # tags/.../Themes/Motifs/Flame/2.0,
        # tags/.../Themes/Motifs/Flame/2.1.0, and so on. In all
        # previous examples the theme name holds the branch
        # enumeration schame too.
        PATTERN="^.+/Identity/Themes/Motifs/(([A-Za-z0-9]+)(\.${RELEASE_FORMAT})+)/.+$"

    else
        cli_printMessage "`gettext "The working copy parent directory structure is incorrect."`" 'AsErrorLine'
        cli_printMessage "$(caller)" 'AsToKnowMoreLine'
    fi

    # Print theme name to standard output.
    if [[ $PATTERN != '' ]];then
        echo $ACTIONVAL | sed -r "s!${PATTERN}!\1!"
    fi

}