Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
e65a08f
ccm2git: Everything - Squashed commit from customer 1
bicschneider Nov 19, 2024
1f29179
ccm2git: make 4-part dynamic
bicschneider Nov 20, 2024
cf01fb0
update to gradle 4.4.1 and support java 11
bicschneider Nov 19, 2024
24d6325
Updated 2git jar for ccm2git 4 part and ccm_delimiter handling
bicschneider Nov 20, 2024
f543249
ccm2git: add ccm2git script
bicschneider Nov 20, 2024
5c9022c
Revert "update to gradle 4.4.1 and support java 11"
bicschneider Nov 20, 2024
a7033ea
Add COOL as a local lib
bicschneider Apr 14, 2020
3d5c752
Changes, now works with JDK11 and Gradle 5.1.1
MadsNielsen Nov 20, 2024
27f3f02
ccm2git: fix delimiter for compile
bicschneider Nov 20, 2024
7d47ff5
ccm2git : update uber.jar
bicschneider Nov 20, 2024
9ee74e7
ccm2git: fix delimiter for compile
bicschneider Nov 20, 2024
59a02d2
ccm2git : update uber.jar
bicschneider Nov 20, 2024
6b94fad
ccm2git : preparing for run in CI server from parent repo
bicschneider Nov 21, 2024
f7daf08
ccm2git : add Synergy start stop script
bicschneider Nov 21, 2024
006ac3b
ccm2git : make groovy example generic
bicschneider Nov 21, 2024
6dde1e2
ccm2git: update the name email for git handling with env variables
bicschneider Nov 21, 2024
3dbafbd
ccm2git: add get_project_rev_count.sh
bicschneider Nov 21, 2024
4151a28
Fix it
MadsNielsen Nov 29, 2024
1c09d1d
Ported changes, now works with Java 17
MadsNielsen Nov 29, 2024
518206c
Removed deprecation warning
MadsNielsen Sep 16, 2025
83cbce6
fix-up customer
bicschneider Sep 18, 2025
1a9c970
Changes from Claus
MadsNielsen Sep 18, 2025
e6f9fec
Merged changes from customers
MadsNielsen Sep 18, 2025
758b563
prepare ccm2git to be merged to master
bicschneider Sep 18, 2025
5c15749
Merged jdk17
MadsNielsen Sep 18, 2025
80cf7a7
upgraded to gradle 9 and minor changes
MadsNielsen Sep 18, 2025
3a06985
move all ccm related from root folder to resources
MadsNielsen Sep 18, 2025
f38037b
Merge remote-tracking branch 'origin/prepare-ccm2git-for-master'
MadsNielsen Sep 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ bin/
.idea/
*.iml
out/
build/
output/

_site
.sass-cache
Expand All @@ -26,3 +28,13 @@ _site
# Specific command files
customers/*
*.swp

# 2git log files
2git-[-_0-9]*.log
logs
cc2git

# ccmm2git files
projects.txt
*.env
project_baselines.txt
54 changes: 54 additions & 0 deletions _ccm-functions-test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#!/usr/bin/env bash

# Load functions
source ./_ccm-functions.sh || source ${BASH_SOURCE%/*}/_ccm-functions.sh

[[ "${debug:-}" == "true" ]] && set -x


set -euo pipefail

ccm_project_name="<space> <space>"
expected_result="<space>-<space>"
result=""
printf "%-8s: %-80s : %-75s " "test" "byref_translate_from_ccm_name2git_repo" "${ccm_project_name} -> $expected_result"
byref_translate_from_ccm_name2git_repo "$ccm_project_name" result
[[ "$result" == "${expected_result}" ]] && { printf "%10s\n" "SUCCESS" ; }|| { printf " FAILED: ${expected_result} != $result\n" ;}

ccm_project_name="<hyphan>-<hyphan>"
expected_result="<hyphan>?<hyphan>"
result=""
printf "%-8s: %-80s : %-75s " "test" "byref_translate_from_git_repo2ccm_name_query" "${ccm_project_name} -> $expected_result"
byref_translate_from_git_repo2ccm_name_query $ccm_project_name result
[[ "$result" == "${expected_result}" ]] && { printf "%10s\n" "SUCCESS" ; }|| { printf " FAILED: ${expected_result} != $result\n" ;}

ccm_query_name_instance_string="<question>?<question>"
ccm_query_instance="1"
expected_result="<question> <question>"
result=""
printf "%-8s: %-80s : %-75s " "test" "byref_translate_from_ccm_name_instance_query2ccm_name" "${ccm_query_name_instance_string} -> $expected_result"
byref_translate_from_ccm_name_instance_query2ccm_name $ccm_query_name_instance_string $ccm_query_instance result
[[ "$result" == "${expected_result}" ]] && { printf "%10s\n" "SUCCESS" ; }|| { printf " FAILED: ${expected_result} != $result\n" ;}

git_repo_name="<hyphan>-<hyphan>"
ccm_query_instance="1"
expected_result="<hyphan> <hyphan>"
result=""
printf "%-8s: %-80s : %-75s " "test" "byref_translate_from_git_repo2ccm_name" "${ccm_project_name} -> $expected_result"
byref_translate_from_git_repo2ccm_name $git_repo_name $ccm_query_instance result
[[ "$result" == "${expected_result}" ]] && { printf "%10s\n" "SUCCESS" ; }|| { printf " FAILED: ${expected_result} != $result\n" ;}

git_repo_4part="<hyphan>-<hyphan>~<:project:1"
expected_result="<hyphan> <hyphan>~<version>:project:1"
result=""
printf "%-8s: %-80s : %-75s " "test" "byref_translate_from_git_repo_4part2ccm_4part" "${git_repo_4part} -> $expected_result"
byref_translate_from_git_repo_4part2ccm_4part "$git_repo_4part" result
[[ "$result" == "${expected_result}" ]] && { printf "%10s\n" "SUCCESS" ; }|| { printf " FAILED: ${expected_result} != $result\n" ;}

ccm_4part="<project-name>~<space> <space>:project:1"
expected_result="<project-name>~<space>-<space>:project:1"
result=""
printf "%-8s: %-80s : %-75s " "test" "byref_translate_from_ccm_4part2git_repo_4part" "${ccm_4part} -> $expected_result"
byref_translate_from_ccm_4part2git_repo_4part "${ccm_4part}" result
[[ "$result" == "${expected_result}" ]] && { printf "%10s\n" "SUCCESS" ; }|| { printf " FAILED: ${expected_result} != $result\n" ;}

280 changes: 280 additions & 0 deletions _ccm-functions.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,280 @@
#!/usr/bin/env bash

export regex_ccm4part="^(.+)${ccm_delim}(.+):(.+):(.+)$"

function byref_translate_from_ccm_name2git_repo() {
if [[ -z ${1} ]]; then
echo "${FUNCNAME[0]}: Parameter 1 - by value - cannot be empty" && exit 1
else
local _fromString=${1}
fi
if [[ -z ${2} ]]; then
echo "${FUNCNAME[0]}: Parameter 2 - as ref - cannot be empty" && exit 1
else
local -n _toString=${2}
fi
_toString="${_fromString}"
_toString="${_toString//ener Tam/ener-Tam}"
_toString="${_toString// /-}"
_toString="${_toString//&/-}"
_toString="${_toString//#/-}"
_toString="${_toString//(/-}"
_toString="${_toString//)/-}"
_toString="${_toString//ü/ue}"
_toString="${_toString//ä/ae}"
_toString="${_toString//æ/ae}"
_toString="${_toString//å/aa}"
_toString="${_toString//ö/oe}"
_toString="${_toString//ø/oe}"
_toString="${_toString//,/-}"
}

function byref_translate_from_git_repo2ccm_name_query() {
if [[ -z ${1} ]]; then
echo "${FUNCNAME[0]}: Parameter 1 - by value - cannot be empty" && exit 1
else
local _fromString=${1}
fi
if [[ -z ${2} ]]; then
echo "${FUNCNAME[0]}: Parameter 2 - by ref - cannot be empty" && exit 1
else
local -n _toString=${2}
fi
_toString="${_fromString}"
_toString="${_toString//ener-Tam/ener Tam}"
_toString="${_toString//-/?}"
_toString="${_toString//ue/??}"
_toString="${_toString//ae/??}"
_toString="${_toString//aa/??}"
_toString="${_toString//oe/??}"
}

function byref_translate_from_ccm_version2git_tag() {
# https://stackoverflow.com/questions/26382234/what-names-are-valid-git-tags
#Disallowed characters: '~', '^', ':', '', '?', '[', '*'
#Disallowed sequences ".." and "@{"
#Disallowed Also tag cannot contain " " (whitespace)
if [[ -z ${1} ]]; then
echo "${FUNCNAME[0]}: Parameter 1 - by value - cannot be empty" && exit 1
else
local _fromString=${1}
fi
if [[ -z ${2} ]]; then
echo "${FUNCNAME[0]}: Parameter 2 - as ref - cannot be empty" && exit 1
else
local -n _toString=${2}
fi
_toString="${_fromString// /-}"
_toString="${_toString//&/-}"
_toString="${_toString//#/-}"
_toString="${_toString//(/-}"
_toString="${_toString//)/-}"
}

function byref_translate_from_git_tag2ccm_version_query() {
if [[ -z ${1} ]]; then
echo "${FUNCNAME[0]}: Parameter 1 - by value - cannot be empty" && exit 1
else
local _fromString=${1}
fi
if [[ -z ${2} ]]; then
echo "${FUNCNAME[0]}: Parameter 2 - by ref - cannot be empty" && exit 1
else
local -n _toString=${2}
fi
_toString="${_fromString//-/?}"
}


function byref_translate_from_ccm_name_instance_query2ccm_name() {
if [[ -z ${1} ]]; then
echo "${FUNCNAME[0]}: Parameter 1 - by value - cannot be empty" && exit 1
else
local _fromString=${1}
fi
if [[ -z ${2} ]]; then
echo "${FUNCNAME[0]}: Parameter 2 - by value - cannot be empty" && exit 1
else
local _instance=${2}
fi
if [[ -z ${3} ]]; then
echo "${FUNCNAME[0]}: Parameter 3 - as ref - cannot be empty" && exit 1
else
local -n _toString=${3}
fi

local _query_string="name match '$_fromString' and type='project' and instance='${_instance}'"
local _found_project_name_instances=$(ccm query "${_query_string}" -u -f "%name:%instance" | /usr/bin/sort -u | wc -l)
if [[ _found_project_name_instances -eq 0 ]]; then
echo "ERROR: I found no projects with similar ? query name output gave foo and boo "
echo "$_query_string"
return 1
fi
if [[ _found_project_name_instances -gt 1 ]]; then
echo "ERROR: I found two or more projects with similar ? query name output -oo gave foo and boo"
ccm query "${_query_string}" -u -f "%name:%instance"
return 1
fi
_toString=$(ccm query "${_query_string}" -u -f "%name" | /usr/bin/sort -u )
}

function byref_translate_from_git_repo2ccm_name() {
if [[ -z ${1:-} ]]; then
echo "${FUNCNAME[0]}: Parameter 1 - by value - cannot be empty" && exit 1
else
local _fromString=${1}
fi
if [[ -z ${2:-} ]]; then
echo "${FUNCNAME[0]}: Parameter 2 - by value - cannot be empty" && exit 1
else
local _instance=${2}
fi
if [[ -z ${3:-} ]]; then
echo "${FUNCNAME[0]}: Parameter 3 - by ref - cannot be empty" && exit 1
else
local -n _toString=${3}
fi

local _git_repo_name=$_fromString
local _ccm_instance=$_instance
local _ccm_query_name=""
byref_translate_from_git_repo2ccm_name_query "${_git_repo_name}" _ccm_query_name
local _query_result=""
byref_translate_from_ccm_name_instance_query2ccm_name "${_ccm_query_name}" "${_instance}" _query_result
_toString=$_query_result
}

function byref_translate_from_git_repo_4part2ccm_4part() {
if [[ -z ${1} ]]; then
echo "${FUNCNAME[0]}: Parameter 1 - by value - cannot be empty" && exit 1
else
local _fromString=${1}
fi
if [[ -z ${2} ]]; then
echo "${FUNCNAME[0]}: Parameter 2 - by ref - cannot be empty" && exit 1
else
local -n _toString=${2}
fi

[[ "${_fromString:-}" =~ ${regex_ccm4part} ]] || {
echo "4part does not comply"
return 1
}
local _name=${BASH_REMATCH[1]}
local _version=${BASH_REMATCH[2]}
local _type=${BASH_REMATCH[3]}
local _instance=${BASH_REMATCH[4]}

local _ccm_query_name=""
byref_translate_from_git_repo2ccm_name_query "${_name}" _ccm_query_name

local _ccm_query_version=""
byref_translate_from_git_tag2ccm_version_query "${_version}" _ccm_query_version

local _ccm_query_4name="$_ccm_query_name-$_ccm_query_version:$_type:$_instance"

local _query_result=""
byref_translate_from_ccm_4part_query2ccm_4part "${_ccm_query_4name}" _query_result
_toString=$_query_result
}

function byref_translate_from_ccm_4part2git_repo_4part() {
if [[ -z ${1} ]]; then
echo "${FUNCNAME[0]}: Parameter 1 - by value - cannot be empty" && exit 1
else
local _fromString=${1}
fi
if [[ -z ${2} ]]; then
echo "${FUNCNAME[0]}: Parameter 2 - by ref - cannot be empty" && exit 1
else
local -n _toString=${2}
fi

[[ "${_fromString:-}" =~ ${regex_ccm4part} ]] || {
echo "4part does not comply"
return 1
}
local _name=${BASH_REMATCH[1]}
local _version=${BASH_REMATCH[2]}
local _type=${BASH_REMATCH[3]}
local _instance=${BASH_REMATCH[4]}

local _git_repo=""
byref_translate_from_ccm_name2git_repo "${_name}" _git_repo

local _git_tag=""
byref_translate_from_ccm_version2git_tag "${_version}" _git_tag

_toString="${_git_repo}-${_git_tag}:$_type:$_instance"

}

function byref_translate_from_ccm_4part_query2ccm_4part() {
if [[ -z ${1} ]]; then
echo "Parameter 1 - as ref - cannot be empty" && return 1
else
local _ccm4part_query=${1}
fi
if [[ -z ${2} ]]; then
echo "Parameter 2 - as ref - cannot be empty" && return 1
else
local -n _ccm4part=${2}
fi

[[ "${_ccm4part_query:-}" =~ ${regex_ccm4part} ]] || {
echo "4part does not comply"
return 1
}
local name=${BASH_REMATCH[1]}
local version=${BASH_REMATCH[2]}
local type=${BASH_REMATCH[3]}
local instance=${BASH_REMATCH[4]}

_ccm4part=$(ccm query "name match '$name' and version match '$version' and type='$type' and instance='${instance}'" -u -f "%objectname")
}

function find_n_set_baseline_obj_attrs_from_project(){
local ccm_project_4part=$1
local verbose="true"
[[ ${2:-} == "verbose_false" ]] && local verbose="false"

[[ ${ccm_project_4part} =~ ${regex_ccm4part} ]] || exit 1
proj_name=${BASH_REMATCH[1]}
proj_version=${BASH_REMATCH[2]}
proj_instance=${BASH_REMATCH[4]}

project_release=$(ccm properties -f "%release" "${ccm_project_4part}") || return $?
if [[ "$project_release" == "<void>" ]]; then
project_release="void"
release_query=""
else
release_query=" and release='${project_release}'"
fi

# Find the baseline object of the project with the same release as the project itself
ccm_baseline_obj_and_status_release_this=$(ccm query "has_project_in_baseline('${ccm_project_4part}') ${release_query}" -sby create_time -u -f "%objectname@@@%status@@@%release" | head -1 )
regex_baseline_attr='^(.+)@@@(.+)@@@(.+)$'
if [[ "${ccm_baseline_obj_and_status_release_this:-}" == "" ]]; then
# No baseline found with primary release tag .. See if other baseline objects are connected ( eg. list any Baseline Object and accept the first )
ccm_baseline_obj_and_status_release_this=$(ccm query "has_project_in_baseline('${ccm_project_4part}')" -sby create_time -u -f "%objectname@@@%status@@@%release" | head -1 )
if [[ "${ccm_baseline_obj_and_status_release_this:-}" == "" ]]; then
if [[ "${verbose:-}" == "true" ]]; then
echo "NOTE: No related Baseline Object not found at all: ${ccm_project_4part}" >&2
fi
else
[[ ${ccm_baseline_obj_and_status_release_this} =~ ${regex_baseline_attr} ]] || exit 1
ccm_baseline_obj=${BASH_REMATCH[1]}
ccm_baseline_status=${BASH_REMATCH[2]}
ccm_baseline_release=${BASH_REMATCH[3]}
if [[ ${verbose:-} == "true" ]]; then
echo "NOTE: release diff found.. ${ccm_project_4part} / ${project_release} <=> ${ccm_baseline_release} / ${ccm_baseline_obj} - accepted" >&2
fi
fi
else
[[ ${ccm_baseline_obj_and_status_release_this} =~ ${regex_baseline_attr} ]] || exit 1
ccm_baseline_obj=${BASH_REMATCH[1]}
ccm_baseline_status=${BASH_REMATCH[2]}
ccm_baseline_release=${BASH_REMATCH[3]}
fi
}

Loading