|
Akka/Scala example source code file (find-replace)
The find-replace Akka example source code
#!/usr/bin/env bash
#
# Find and replace across all source files.
# This script will be called as part of the release script.
# get the source location for this script; handles symlinks
function get_script_path {
local source="${BASH_SOURCE[0]}"
while [ -h "${source}" ] ; do
source="$(readlink "${source}")";
done
echo ${source}
}
# path, name, and dir for this script
declare -r script_path=$(get_script_path)
declare -r script_name=$(basename "${script_path}")
declare -r script_dir="$(cd -P "$(dirname "${script_path}")" && pwd)"
# print usage info
function usage {
echo "Usage: ${script_name} find_expr replace_expr"
}
function echolog {
echo "[${script_name}] $@"
}
declare -r find_expr=$1
declare -r replace_expr=$2
if [ -z "$find_expr" ]; then
usage
exit 1
fi
echolog "$find_expr --> $replace_expr"
# exclude directories from search
declare exclude_dirs=".git project/project project/scripts src_managed target"
echolog "excluding directories: $exclude_dirs"
exclude_opts="\("
op="-path"
for dir in $exclude_dirs; do
exclude_opts="${exclude_opts} ${op} '*/${dir}/*'"
op="-or -path"
done
exclude_opts="${exclude_opts} \) -prune -o"
# replace in files
search="find . ${exclude_opts} -type f -print0 | xargs -0 grep -Il \"$find_expr\""
files=$(eval "$search")
simple_diff="diff --old-line-format='[$script_name] - %l
' --new-line-format='[$script_name] + %l
' --changed-group-format='%<%>' --unchanged-group-format=''"
for file in $files; do
echolog $file
# escape / for sed
sedfind=$(echo $find_expr | sed 's/\//\\\//g')
sedreplace=$(echo $replace_expr | sed 's/\//\\\//g')
sed -i.sed "s/${sedfind}/${sedreplace}/g" $file
eval "$simple_diff $file.sed $file"
rm -f $file.sed
done
# replace in file names
search="find . ${exclude_opts} -type f -name \"*${find_expr}*\" -print"
files=$(eval "$search")
for file in $files; do
dir=$(dirname $file)
name=$(basename $file)
newname=$(echo $name | sed "s/${find_expr}/${replace_expr}/g")
echolog "$file --> $newname"
mv $file $dir/$newname
done
Other Akka source code examplesHere is a short list of links related to this Akka find-replace source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.