You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DevOps-Bash-tools/scripts/update_bash_tools_reference...

219 lines
4.4 KiB
Bash

#!/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="<files>"
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