diff --git a/Scripts/Bash/Functions/cli_getThemeName.sh b/Scripts/Bash/Functions/cli_getThemeName.sh index 413bd03..496ba31 100755 --- a/Scripts/Bash/Functions/cli_getThemeName.sh +++ b/Scripts/Bash/Functions/cli_getThemeName.sh @@ -1,26 +1,9 @@ #!/bin/bash # -# cli_getThemeName.sh -- This function manipulates the current -# absolute path to extract the theme name from it. If there is no -# theme in the path, this function returns an empty string. -# -# Theme names are stored in directories immediatly under -# Themes/Motifs/ directory and and can be named using letters and -# numbers. When rendering themes under branches/ directory structure, -# theme names are also built using the branch numeration the theme is -# being rendered for. -# -# Branch enumeration start at number one and increment 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. +# 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 # @@ -45,15 +28,61 @@ function cli_getThemeName { - local THEMENAME='' + # 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 from action value. - if [[ $ACTIONVAL =~ '^.+/Themes/Motifs/([A-Za-z0-9-]+)/.+$' ]];then - THEMENAME=$(echo $ACTIONVAL | sed -r \ - -e "s!^.+/Themes/Motifs/([A-Za-z0-9-]+(/${RELEASE_FORMAT})*)/.+!\1!") + # 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. - echo $THEMENAME + if [[ $PATTERN != '' ]];then + echo $ACTIONVAL | sed -r "s!${PATTERN}!\1!" + fi }