#!/usr/bin/env bash # vim:ts=4:sts=4:sw=4:et # args: Makefile README.md Jenkinsfile *.yaml *.yml */*.sh *.sh # # Author: Hari Sekhon # Date: 2023-05-10 00:44:52 +0100 (Wed, 10 May 2023) # # https://github.com/HariSekhon/DevOps-Bash-tools # # License: see accompanying Hari Sekhon LICENSE file # # If you're using my code you're welcome to connect with me on LinkedIn and optionally send me feedback to help steer this or other code I publish # # https://www.linkedin.com/in/HariSekhon # set -euo pipefail [ -n "${DEBUG:-}" ] && set -x srcdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # shellcheck disable=SC1090,SC1091 . "$srcdir/lib/utils.sh" # shellcheck disable=SC2034,SC2154 usage_description=" Updates references to bash-tools/ or bash_tools in repos using this as a submodule to account for the repo re-org " # used by usage() in lib/utils.sh # shellcheck disable=SC2034 usage_args="" help_usage "$@" min_args 1 "$@" # uniform prefixes on scripts matching their directory names prefixes=' git python perl github gitlab bitbucket azure_devops kubernetes circleci buildkite jenkins mysql postgres mp3 pingdom shippable teamcity spotify terraform travis vagrant wercker kafka aws gcp docker drone codeship ' # directory script_prefix mappings mappings=' lib utils.sh checks check checks run gcp gke gcp gce gcp gcr gcp bigquery bigdata cloudera bigdata hadoop bigdata hdfs bigdata hive bigdata impala bigdata beeline bigdata zookeeper bin atlassian_ip_ranges.sh bin azure_info.sh bin center.sh bin clean_caches.sh bin crt_hash.sh bin csv_header_indices.sh bin curl_auth.sh bin datadog_api.sh bin decomment.sh bin delete_empty_dirs.sh bin digital_ocean_api.sh bin disable_swap.sh bin dnsjson.sh bin elasticsearch_decommission_node.sh bin exec_interactive.sh bin find bin grep_or_append.sh bin headtail.sh bin jira_api.sh bin json2yaml.sh bin jsondiff.sh bin jvm bin keycloak.sh bin kong_api.sh bin ldap bin ldapsearch.sh bin lint.sh bin login.sh bin ngrok_api.sh bin progress_dots.sh bin random bin retry.sh bin run.sh bin sbtw bin scan_duplicate_macs.sh bin shellcheck.sh bin split.sh bin sqlite.sh bin ssl bin traefik_api.sh bin uniq_chars.sh bin url bin vault bin word_frequency.sh bin yaml2json.sh configs .vimrc cicd checkov_resource_count.sh cicd checkov_resource_count_all.sh cicd codefresh_cancel_delayed_builds.sh cicd concourse.sh cicd coveralls_latest.sh cicd fly.sh cicd generate_status_page.sh cicd gerrit.sh cicd gerrit_projects.sh cicd gocd.sh cicd gocd_api.sh cicd octopus_api.sh cicd run_latest_tests.sh cicd run_tests.sh cicd selenium_hub_wait_ready.sh cicd sync_bootstraps_to_adjacent_repos.sh cicd sync_ci_to_adjacent_repos.sh cicd sync_configs_to_adjacent_repos.sh kubernetes argocd kubernetes datree kubernetes helm kubernetes kubeadm kubernetes kubectl kubernetes kustomize kubernetes pluto kubernetes prometheus.sh packages install packages apk packages apt packages brew packages debs packages rpms packages nodejs packages golang packages ruby packages yum ' timestamp "Replacing references" sed_script="$( for prefix in $prefixes; do echo "s|bash-tools/${prefix}_|bash-tools/$prefix/${prefix}_|g;" echo "s|bash_tools/${prefix}_|bash_tools/$prefix/${prefix}_|g;" echo "s|master/${prefix}_|master/$prefix/${prefix}_|g;" done while read -r directory prefix; do if [ -z "$directory" ]; then continue fi # catch prefixes echo "s|bash-tools/${prefix}_|bash-tools/$directory/${prefix}_|g;" echo "s|bash_tools/${prefix}_|bash_tools/$directory/${prefix}_|g;" echo "s|master/${prefix}_|master/$directory/${prefix}_|g;" # catch whole scripts echo "s|bash-tools/${prefix}\\>|bash-tools/$directory/${prefix}|g;" echo "s|bash_tools/${prefix}\\>|bash_tools/$directory/${prefix}|g;" echo "s|master/${prefix}\\>|master/$directory/${prefix}|g;" done <<< "$mappings" )" sed -i "$sed_script" "$@" echo >&2 timestamp "Search and Replace Done" echo >&2 timestamp "Remaining references to check:" echo >&2 ignore_regex="$(for prefix in $prefixes; do echo -n "$prefix|"; done)" ignore_regex="/(${ignore_regex%|})/" # need splitting # shellcheck disable=SC2046 git grep -e 'bash_tools/.' -e 'bash-tools/.' | grep -Ev -e /setup/ \ -e "$ignore_regex" \ -e /bin/ \ -e /checks/ \ -e /lib/ \ -e bash-tools/Makefile.in