@@ -48,7 +48,7 @@ if [[ "${BASE_REF}" =~ [^A-Za-z0-9/_^~.-] ]]; then
4848 echo " ::error::BASE_REF may only contain: alphanumeric, hyphen (-), underscore (_), forward slash (/), caret (^), tilde (~), dot (.)"
4949 exit 1
5050fi
51- CHANGED_FILES=$( git diff --name-only HEAD " ${BASE_REF} " 2> /dev/null || echo " " )
51+ CHANGED_FILES=$( git diff --name-only " ${BASE_REF} " HEAD 2> /dev/null || echo " " )
5252
5353echo " Changed files:"
5454echo " ${CHANGED_FILES} "
@@ -88,7 +88,7 @@ while IFS= read -r config; do
8888 SHOULD_REGENERATE=false
8989
9090 # Check if config itself was modified
91- if echo " ${CHANGED_FILES} " | grep -q " ^ ${config} $ " ; then
91+ if echo " ${CHANGED_FILES} " | grep -Fqx " ${config} " ; then
9292 echo " Config modified: ${config} "
9393 SHOULD_REGENERATE=true
9494 fi
@@ -102,11 +102,17 @@ while IFS= read -r config; do
102102 fi
103103
104104 if [ -n " ${OA3_SPEC} " ]; then
105- # Handle relative paths (relative to workspace root)
106- if [[ " ${OA3_SPEC} " != /* ]] && [[ " ${OA3_SPEC} " != http* ]]; then
107- OA3_SPEC_FULL=$( normalize_path " ${OA3_SPEC} " 2> /dev/null | sed " s|^${WORKSPACE_ROOT} /||" || echo " " )
105+ # Skip remote specs
106+ if [[ " ${OA3_SPEC} " != http* ]]; then
107+ if [[ " ${OA3_SPEC} " = /* ]]; then
108+ # Treat absolute repo paths as workspace-root relative by stripping leading slash
109+ OA3_SPEC_FULL=" ${OA3_SPEC#/ } "
110+ else
111+ # Handle relative paths (relative to workspace root)
112+ OA3_SPEC_FULL=$( normalize_path " ${OA3_SPEC} " 2> /dev/null | sed " s|^${WORKSPACE_ROOT} /||" || echo " " )
113+ fi
108114
109- if [ -n " ${OA3_SPEC_FULL} " ] && echo " ${CHANGED_FILES} " | grep -q " ^ ${OA3_SPEC_FULL} $ " ; then
115+ if [ -n " ${OA3_SPEC_FULL} " ] && echo " ${CHANGED_FILES} " | grep -Fqx " ${OA3_SPEC_FULL} " ; then
110116 echo " OpenAPI spec modified: ${OA3_SPEC_FULL} (referenced by ${config} )"
111117 SHOULD_REGENERATE=true
112118 fi
0 commit comments