diff --git a/scripts/goog_module/convert-file.sh b/scripts/goog_module/convert-file.sh index aae6a9191..6673106ee 100755 --- a/scripts/goog_module/convert-file.sh +++ b/scripts/goog_module/convert-file.sh @@ -159,6 +159,7 @@ step3() { # Process each require echo "${requires}" | while read -r require ; do + inf "Processing require \"${require}\"" local usages=$(grep -Pe ''"${require}"'(?!'\'')' "${filepath}" | wc -l) if [[ "${usages}" -eq "0" ]]; then warn "Unused require \"${require}\"" @@ -166,18 +167,26 @@ step3() { fi local direct_access_count=$(grep -Pe ''"${require}"'[^\.'\'']' "${filepath}" | wc -l) - local prop_access_count=$(grep -Pe ''"${require}"'\.(?!prototype)' "${filepath}" | wc -l) - if [[ "${direct_access_count}" -eq "0" && "${prop_access_count}" -gt "0" ]]; then - local deconstructed=$(grep -Pe ''"${require}"'\.(?!prototype)' "${filepath}" | perl -pe 's/'"${require}"'\.([^\(\[,\.]+).*/\1/g') - local deconstructed_comma=$(echo "${deconstructed}" | perl -zpe 's/\s+/, /g' | perl 's/, $//') - inf "Deconstructing ${require} into \"${deconstructed_comma}\"" + local properties_accessed=$(grep -Po '(?<='"${require}"'\.)(?!prototype)\w+' "${filepath}" | tr ' ' '\n' | sort -u) + # Detect overlap (ex: Blockly.utils and Blockly.utils.dom) + local overlap=$(echo "${requires}"| grep -Po "(?<=${require}\.)\w+") + if [[ ! -z "${overlap}" ]]; then + while read -r overlap_prop ; do + properties_accessed=$(echo "$properties_accessed" | perl -pe 's/'"${overlap_prop}"'//g') + done <<<"${overlap}" + properties_accessed=$(echo "${properties_accessed}" | perl -pe 's/\s+/ /g' | xargs) + fi + + if [[ "${direct_access_count}" -eq "0" && ! -z "${properties_accessed}" ]]; then + local deconstructed_comma=$(echo "${properties_accessed}" | perl -pe 's/\s+/, /g' | perl -pe 's/, $//') + inf "Deconstructing ${require} into \"{${deconstructed_comma}}\"" inf "Updating require declaration for ${require}..." - perl -pi -e 's/^(goog\.(require|requireType)\('\'"${require}"\''\);)/const \{'"${deconstructed_comma}"'\} = \1/' "${filepath}" + perl -pi -e 's/^(goog\.(require|requireType)\('\'"${require}"\''\);)/const \{'"${deconstructed_comma}"'\} = \1/' "${filepath}" - echo "${deconstructed}" | while read -r require_prop ; do + echo "${properties_accessed}" | while read -r require_prop ; do inf "Updating references of ${require}.${require_prop} to ${require_prop}..." - perl -pi -e 's/'"${require}"'\.'"${require_prop}"'([^'\''])/'"${require_prop}"'\1/g' "${filepath}" + perl -pi -e 's/'"${require}"'\.'"${require_prop}"'([^'\''\w])/'"${require_prop}"'\1/g' "${filepath}" done continue fi @@ -187,13 +196,13 @@ step3() { perl -pi -e 's/^(goog\.(require|requireType)\('\'"${require}"\''\);)/const '"${require_name}"' = \1/' "${filepath}" inf "Updating references of ${require} to ${require_name}..." - perl -pi -e 's/'"${require}"'([^'\''])/'"${require_name}"'\1/g' "${filepath}" + perl -pi -e 's/'"${require}"'([^'\''\w])/'"${require_name}"'\1/g' "${filepath}" done - local missing_requires=$(grep -Pe '(?