Updates team-pipeline-local.sh

This commit is contained in:
Matheus Albino Brunhara
2024-11-19 08:56:13 -03:00
parent bb56fa3557
commit a008c12077

View File

@@ -1,19 +1,25 @@
#!/bin/bash #!/bin/env bash
printf "\n" printf "\n"
show_help() { show_help() {
echo "Usage: `basename $0` [--commit-hashes|-c commit hashes] [--deployments-path|-d deployments path]" echo "Usage: $(basename $0) [--commit-hashes|-c commit hashes] [--deployments-path|-d deployments path]"
echo "Options:" echo "Options:"
echo " --help | -h (Optional) Display help information on how to use this script" echo " --help | -h (Optional) Display help information on how to use this script"
echo " --commit-hashes | -c (Required) Specify the commit hashes, separation by comma (,)"
echo " --commits-between | --cb (Required) Specify two commit hashes, separation by comma (,), so all commits between them will be considered"
echo " --repo-dir | -r (Required) Specify the git repository path that contains the commits" echo " --repo-dir | -r (Required) Specify the git repository path that contains the commits"
echo " --deployments-path | -d (Required) Specify the Wildfly ports-XX/deployments path" echo " --deployments-path | -d (Required) Specify the Wildfly ports-XX/deployments path"
echo ""
echo " --use-git-status | -g (Optional) Will add the files with differences from the \"git status\" command"
echo ""
echo " --commit-hashes | -c (Optional) Specify the commit hashes, separation by comma (,)"
echo " --commits-between | --cb (Optional) Specify two commit hashes, separation by comma (,), so all commits between them will be considered"
echo " --file-paths | -f (Optional) Specify file paths to consider in the update, separation by comma (,)" echo " --file-paths | -f (Optional) Specify file paths to consider in the update, separation by comma (,)"
echo " Specifying this will make the \"--commit-hashes\" parameter optional" echo " Specifying this will make the \"--commit-hashes\" parameter optional"
echo ""
echo " --no-build | --nb (Optional) If selected, the script will NOT build the maven components in order to generate the target/ folder" echo " --no-build | --nb (Optional) If selected, the script will NOT build the maven components in order to generate the target/ folder"
echo " --use-git-status | -g (Optional) Will add the files with differences from the \"git status\" command"
echo " --no-substitution | --ns (Optional) If selected, the script will NOT build the maven components in order to generate the target/ folder" echo " --no-substitution | --ns (Optional) If selected, the script will NOT build the maven components in order to generate the target/ folder"
} }
@@ -28,15 +34,42 @@ should_substitute=true
while [ "$#" -gt 0 ]; do while [ "$#" -gt 0 ]; do
case "$1" in case "$1" in
--help|-h) show_help; exit ;; --help | -h)
--repo-dir|-r) repo_dir="$2"; shift 2;; show_help
--commit-hashes|-c) commit_hashes_arg="$2"; shift 2;; exit
--commits-between|-cb) commits_between_arg="$2"; shift 2;; ;;
--deployments-path|-d) deployments_path="$2"; shift 2;; --repo-dir | -r)
--file-paths|-f) file_paths_arg="$2"; shift 2;; repo_dir="$2"
--no-build|--nb) build_maven=false; shift 2;; shift 2
--use-git-status|-g) use_git_status=true; shift 2;; ;;
--no-substitution|--ns) should_substitute=false; shift 2;; --commit-hashes | -c)
commit_hashes_arg="$2"
shift 2
;;
--commits-between | -cb)
commits_between_arg="$2"
shift 2
;;
--deployments-path | -d)
deployments_path="$2"
shift 2
;;
--file-paths | -f)
file_paths_arg="$2"
shift 2
;;
--no-build | --nb)
build_maven=false
shift
;;
--use-git-status | -g)
use_git_status=true
shift
;;
--no-substitution | --ns)
should_substitute=false
shift
;;
*) shift ;; *) shift ;;
esac esac
done done
@@ -47,14 +80,14 @@ print_newline() {
convert_csv_to_array() { convert_csv_to_array() {
csv_arg=$1 csv_arg=$1
res_arr=`echo $csv_arg | tr ',' "\n"` res_arr=$(echo $csv_arg | tr ',' "\n")
echo $res_arr echo $res_arr
} }
commit_exists() { commit_exists() {
commit_hash=$1 commit_hash=$1
git cat-file -t $commit_hash 1> /dev/null 2> /dev/null git cat-file -t $commit_hash 1>/dev/null 2>/dev/null
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
return 0 return 0
@@ -68,13 +101,13 @@ get_target_paths_from_commit_hash() {
# TODO, fazer tratativa exclusiva para diff filter com A (added) # TODO, fazer tratativa exclusiva para diff filter com A (added)
# TODO, fazer tratativa exclusiva para diff filter com D (deleted) # TODO, fazer tratativa exclusiva para diff filter com D (deleted)
echo `git show --oneline --name-only --diff-filter=MA $c | tail -n +2` echo $(git show --oneline --name-only --diff-filter=MA $c | tail -n +2)
} }
find_pom_xml_file_recursively() { find_pom_xml_file_recursively() {
path=$1 path=$1
pom_path=`dirname $path`/pom.xml pom_path=$(dirname $path)/pom.xml
if [ $pom_path == './pom.xml' ]; then if [ $pom_path == './pom.xml' ]; then
# echo "Could not find a pom.xml file for a module" # echo "Could not find a pom.xml file for a module"
@@ -82,23 +115,23 @@ find_pom_xml_file_recursively() {
fi fi
if [ ! -f $pom_path ]; then if [ ! -f $pom_path ]; then
new_dir=`dirname $path` new_dir=$(dirname $path)
pom_path=`find_pom_xml_file_recursively $new_dir` pom_path=$(find_pom_xml_file_recursively $new_dir)
fi fi
echo $pom_path echo $pom_path
} }
build_mvn() { build_mvn() {
build_cur=`pwd` build_cur=$(pwd)
printf "\n" printf "\n"
echo "[INFO] Realizando build Maven:" echo "[INFO] Realizando build Maven:"
echo " ${build_cur#"$repo_dir"}" echo " ${build_cur#"$repo_dir/"}"
# mvn --quiet clean install -DskipTests --update-snapshots --file ./pom.xml --settings ~/.m2/settings.xml # mvn --quiet clean install -DskipTests --update-snapshots --file ./pom.xml --settings ~/.m2/settings.xml
# mvn --quiet clean install -DskipTests --file ./pom.xml --settings ~/.m2/settings.xml # mvn --quiet clean install -DskipTests --file ./pom.xml --settings ~/.m2/settings.xml
mvn clean install -DskipTests --file ./pom.xml --settings ~/.m2/settings.xml mvn clean install --define skipTests --file ./pom.xml --settings ~/settings.xml
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "[INFO] A build Maven resultou em erros. O script irá encerrar agora." echo "[INFO] A build Maven resultou em erros. O script irá encerrar agora."
@@ -119,9 +152,9 @@ function join_by {
remove_suffix() { remove_suffix() {
local input="$1" local input="$1"
local delimiter="-" local delimiter="-"
local count=$(grep -o "${delimiter}" <<< "$input" | wc -l) local count=$(grep -o "${delimiter}" <<<"$input" | wc -l)
local index=$(( count - 1 )) local index=$((count - 1))
local result=$(cut -d"${delimiter}" -f1-"$index" <<< "$input") local result=$(cut -d"${delimiter}" -f1-"$index" <<<"$input")
echo "$result" echo "$result"
} }
@@ -139,86 +172,63 @@ get_substring_after_string() {
echo ${str#*$subs} echo ${str#*$subs}
} }
sort_pom_paths_for_compilation_order() { sort_pom_paths() {
local unsorted_pom_paths=("$@") local unsorted_pom_paths=$1
local -A compilation_order_list=()
# Define compilation order for 'cdk' and 'gp'
if [[ $repo_dir == *"cdk"* ]]; then if [[ $repo_dir == *"cdk"* ]]; then
compilation_order_list=( compilation_order_list=(
['main']='' 'main' 'commons' 'security' 'tools' 'geo' 'meta' 'framework' 'faces' 'application' 'plugins' 'cdk' 'auditing'
['commons']=''
['security']=''
['tools']=''
['geo']=''
['meta']=''
['framework']=''
['faces']=''
['application']=''
['plugins']=''
['cdk']=''
['auditing']=''
) )
elif [[ $repo_dir == *"gp"* ]]; then elif [[ $repo_dir == *"gp"* ]]; then
compilation_order_list=( compilation_order_list=(
['prepare']='' 'prepare' 'parents' 'toggle' 'landbase' 'eai' 'oss' 'paralelismo1' 'lmcm' 'eng' 'paralelismo2' 'dbmanager'
['parents']='' 'oper' 'oper:legacy' 'osp' 'isp' 'recon' 'geoa' 'feasibility' 'pxp' 'services' 'udo' 'etics' 'customers'
['toggle']='' 'appserver' 'client'
['landbase']=''
['eai']=''
['oss']=''
['paralelismo1']=''
['lmcm']=''
['eng']=''
['paralelismo2']=''
['dbmanager']=''
['oper']=''
['oper:legacy']=''
['osp']=''
['isp']=''
['recon']=''
['geoa']=''
['feasibility']=''
['pxp']=''
['services']=''
['udo']=''
['etics']=''
['customers']=''
['appserver']=''
['client']=''
) )
else else
# Print unsorted if no matching repo
printf "%s\n" "${unsorted_pom_paths[@]}" printf "%s\n" "${unsorted_pom_paths[@]}"
return
fi fi
local sorted_pom_paths=() # Create an associative array to map folder to its order index
declare -A order_map
for index in "${!compilation_order_list[@]}"; do
order_map[${compilation_order_list[$index]}]=$index
done
for dir in "${!compilation_order_list[@]}"; do # Sort paths based on their first folder using the order_map
for path in "${unsorted_pom_paths[@]}"; do IFS=$'\n' sorted_paths=($(for path in "${unsorted_pom_paths[@]}"; do
if [[ $path == "${dir}/"* ]]; then first_folder=$(echo "$path" | cut -d'/' -f1)
sorted_pom_paths+=("$path") order_index=${order_map[$first_folder]}
# If first folder is not in order_map, use a high index to keep it at the end
if [ -z "$order_index" ]; then
order_index=${#compilation_order_list[@]}
fi fi
done echo "$order_index $path"
done done | sort -n -k1,1 | cut -d' ' -f2-))
printf "%s\n" "${sorted_pom_paths[@]}" # Print sorted paths
printf "%s\n" "${sorted_paths[@]}"
} }
function confirm() { function confirm() {
while true; do while true; do
read -p '' yn read -p '' yn
case $yn in case $yn in
[Yy]* ) return 0;; [Yy]*) return 0 ;;
[Nn]* ) return 1;; [Nn]*) return 1 ;;
[Cc]* ) exit;; [Cc]*) exit ;;
* ) echo "Please answer YES, NO, or CANCEL.";; *) echo "Please answer YES, NO, or CANCEL." ;;
esac esac
done done
} }
if [ -z "$file_paths_arg" ] \ if [ -z "$file_paths_arg" ] &&
&& [ -z "$commit_hashes_arg" ] \ [ -z "$commit_hashes_arg" ] &&
&& [ -z "$commits_between_arg" ] \ [ -z "$commits_between_arg" ] &&
&& ! $use_git_status; then ! $use_git_status; then
echo "Error: Either one of these arguments should be provided:" echo "Error: Either one of these arguments should be provided:"
echo " Commit hashes (--commit-hashes or -c) or;" echo " Commit hashes (--commit-hashes or -c) or;"
echo " Commits between (--commits-between or -cb) or;" echo " Commits between (--commits-between or -cb) or;"
@@ -239,14 +249,14 @@ if [ -z "$deployments_path" ]; then
exit 1 exit 1
fi fi
scripts_folder=$HOME/repos/personal/personal-devboot/scripts/shell/job/gp scripts_folder=$HOME/documents/repos-personal/personal-devboot/scripts/shell/job/gp
if [ ! -d "$scripts_folder" ]; then if [ ! -d "$scripts_folder" ]; then
echo "The git repository \"CloudAlb/personal-devboot\" must be in the \"~/repos\" folder!" echo "The git repository \"CloudAlb/personal-devboot\" must be in the \"~/repos\" folder!"
exit 1 exit 1
fi fi
cur=`pwd` cur=$(pwd)
wildfly_files_suffix_regex='-[0-9].*\.[jew]ar' wildfly_files_suffix_regex='-[0-9].*\.[jew]ar'
target_paths=() target_paths=()
@@ -254,19 +264,19 @@ target_paths=()
cd $repo_dir cd $repo_dir
if [ ! -z "$commit_hashes_arg" ]; then if [ ! -z "$commit_hashes_arg" ]; then
commit_hashes=`convert_csv_to_array "$commit_hashes_arg"` commit_hashes=$(convert_csv_to_array "$commit_hashes_arg")
for c in ${commit_hashes[@]}; do for c in ${commit_hashes[@]}; do
if ! commit_exists $c; then if ! commit_exists $c; then
continue continue
fi fi
target_paths+=(`get_target_paths_from_commit_hash "$c"`) target_paths+=($(get_target_paths_from_commit_hash "$c"))
done done
fi fi
if [ ! -z "$commits_between_arg" ]; then if [ ! -z "$commits_between_arg" ]; then
commit_hashes=`git rev-list --ancestry-path "${commits_between_arg/","/".."}"` commit_hashes=$(git rev-list --ancestry-path "${commits_between_arg/","/".."}")
target_paths_arg=() target_paths_arg=()
for c in ${commit_hashes[@]}; do for c in ${commit_hashes[@]}; do
@@ -274,7 +284,7 @@ if [ ! -z "$commits_between_arg" ]; then
continue continue
fi fi
target_paths_arg+=(`get_target_paths_from_commit_hash "$c"`) target_paths_arg+=($(get_target_paths_from_commit_hash "$c"))
done done
for i in ${target_paths_arg[@]}; do for i in ${target_paths_arg[@]}; do
@@ -283,7 +293,7 @@ if [ ! -z "$commits_between_arg" ]; then
fi fi
if [ ! -z "$file_paths_arg" ]; then if [ ! -z "$file_paths_arg" ]; then
file_paths=`convert_csv_to_array "$file_paths_arg"` file_paths=$(convert_csv_to_array "$file_paths_arg")
for f in ${file_paths[@]}; do for f in ${file_paths[@]}; do
if [ ! -f "$repo_dir/$f" ]; then if [ ! -f "$repo_dir/$f" ]; then
@@ -296,7 +306,7 @@ if [ ! -z "$file_paths_arg" ]; then
fi fi
if $use_git_status; then if $use_git_status; then
target_paths+=(`git ls-files --modified`) target_paths+=($(git ls-files --modified))
if [ ${#target_paths[@]} -eq 0 ]; then if [ ${#target_paths[@]} -eq 0 ]; then
echo "Error: You specified \"--use-git-status\" but there wasn't any modified files to use." echo "Error: You specified \"--use-git-status\" but there wasn't any modified files to use."
@@ -319,23 +329,20 @@ for i in ${target_paths_uniq[@]}; do
dot_java_files+=("$i") dot_java_files+=("$i")
fi fi
res=`find_pom_xml_file_recursively $i`; res=$(find_pom_xml_file_recursively $i)
pom_paths+=("$res") pom_paths+=("$res")
done done
pom_paths_uniq=$(for i in "${pom_paths[@]}"; do echo $i; done | sort -u) pom_paths_uniq=$(for i in "${pom_paths[@]}"; do echo $i; done | sort -u)
sorted_pom_paths_uniq=($(sort_pom_paths "${pom_paths_uniq[@]}"))
sorted_pom_paths_uniq=($(sort_pom_paths_for_compilation_order "${pom_paths_uniq[@]}"))
echo "sorted_pom_paths_uniq: ${sorted_pom_paths_uniq[@]}"
echo "[INFO] Pom order" echo "[INFO] Pom order"
for p in ${sorted_pom_paths_uniq[@]}; do for p in ${sorted_pom_paths_uniq[@]}; do
echo " $p" echo " $p"
done done
for p in ${sorted_pom_paths_uniq[@]}; do for p in ${sorted_pom_paths_uniq[@]}; do
pom_dir=`dirname $p` pom_dir=$(dirname $p)
cd $repo_dir/$pom_dir cd $repo_dir/$pom_dir
[ $build_maven == true ] && build_mvn [ $build_maven == true ] && build_mvn
@@ -347,8 +354,8 @@ done
artifact_ids_to_explode=() artifact_ids_to_explode=()
for p in ${sorted_pom_paths_uniq[@]}; do for p in ${sorted_pom_paths_uniq[@]}; do
pom_dir=$repo_dir/`dirname $p` pom_dir=$repo_dir/$(dirname $p)
artifact_ids_to_explode+=(`xmlstarlet sel -N pom="http://maven.apache.org/POM/4.0.0" -t -v '/pom:project/pom:artifactId' $pom_dir/pom.xml`) artifact_ids_to_explode+=($(xmlstarlet sel -N pom="http://maven.apache.org/POM/4.0.0" -t -v '/pom:project/pom:artifactId' $pom_dir/pom.xml))
if [ ! -d "$pom_dir/target" ]; then if [ ! -d "$pom_dir/target" ]; then
echo "[INFO] Could not find the \"target\" folder in \"$pom_dir\"" echo "[INFO] Could not find the \"target\" folder in \"$pom_dir\""
@@ -387,10 +394,10 @@ done
if $should_substitute; then if $should_substitute; then
cd $deployments_path cd $deployments_path
root_deployments_files_to_explode=`find * -maxdepth 0 -type f -regex ".*$wildfly_files_suffix_regex"` root_deployments_files_to_explode=$(find * -maxdepth 0 -type f -regex ".*$wildfly_files_suffix_regex")
if [ ! -z "$root_deployments_files_to_explode" ]; then if [ ! -z "$root_deployments_files_to_explode" ]; then
$scripts_folder/explode-java-files.sh --files `join_by , ${root_deployments_files_to_explode}` # webdeskmapreport, etc. $scripts_folder/explode-java-files.sh --files $(join_by , ${root_deployments_files_to_explode}) # webdeskmapreport, etc.
fi fi
printf "\n" printf "\n"
@@ -398,10 +405,10 @@ if $should_substitute; then
echo "extra artifactId_paths_to_explode" echo "extra artifactId_paths_to_explode"
for a in ${extra_artifact_ids_to_explode[@]}; do for a in ${extra_artifact_ids_to_explode[@]}; do
echo "find * -type f -regex \".*$a$wildfly_files_suffix_regex\"" echo "find * -type f -regex \".*$a$wildfly_files_suffix_regex\""
artifactId_paths_to_explode=(`find * -type f -regex ".*$a$wildfly_files_suffix_regex"`) artifactId_paths_to_explode=($(find * -type f -regex ".*$a$wildfly_files_suffix_regex"))
echo " $artifactId_paths_to_explode" echo " $artifactId_paths_to_explode"
if [ ! -z "$artifactId_paths_to_explode" ]; then if [ ! -z "$artifactId_paths_to_explode" ]; then
$scripts_folder/explode-java-files.sh --files `join_by , ${artifactId_paths_to_explode}` $scripts_folder/explode-java-files.sh --files $(join_by , ${artifactId_paths_to_explode})
fi fi
done done
@@ -410,10 +417,10 @@ if $should_substitute; then
echo "artifactId_paths_to_explode" echo "artifactId_paths_to_explode"
# exploding files by found artifactIds # exploding files by found artifactIds
for a in ${artifact_ids_to_explode[@]}; do for a in ${artifact_ids_to_explode[@]}; do
artifactId_paths_to_explode=(`find * -type f -regex ".*$a$wildfly_files_suffix_regex"`) artifactId_paths_to_explode=($(find * -type f -regex ".*$a$wildfly_files_suffix_regex"))
echo " $artifactId_paths_to_explode" echo " $artifactId_paths_to_explode"
if [ ! -z "$artifactId_paths_to_explode" ]; then if [ ! -z "$artifactId_paths_to_explode" ]; then
$scripts_folder/explode-java-files.sh --files `join_by , ${artifactId_paths_to_explode}` $scripts_folder/explode-java-files.sh --files $(join_by , ${artifactId_paths_to_explode})
fi fi
done done
@@ -426,16 +433,16 @@ if $should_substitute; then
unsuccessful_copies=() unsuccessful_copies=()
for f in ${dot_java_files[@]}; do for f in ${dot_java_files[@]}; do
f_dirname=`dirname $f` f_dirname=$(dirname $f)
f_basename=`basename $f` f_basename=$(basename $f)
class_filename=`echo ${f_basename%".java"}.class` class_filename=$(echo ${f_basename%".java"}.class)
path_in_deployments=`get_substring_after_string "$f_dirname" "$src_path_const"` path_in_deployments=$(get_substring_after_string "$f_dirname" "$src_path_const")
class_file_paths_in_deployments=($(find $deployments_path -type f -wholename "**/$path_in_deployments/$class_filename")) class_file_paths_in_deployments=($(find $deployments_path -type f -wholename "**/$path_in_deployments/$class_filename"))
middle_path_subst=`get_substring_before_string "$f_dirname" "$src_path_const"` middle_path_subst=$(get_substring_before_string "$f_dirname" "$src_path_const")
class_file_path_in_target=`find $repo_dir -type f -wholename "**/${middle_path_subst}target/classes/$path_in_deployments/$class_filename"` class_file_path_in_target=$(find $repo_dir -type f -wholename "**/${middle_path_subst}target/classes/$path_in_deployments/$class_filename")
is_done=false is_done=false
@@ -445,7 +452,7 @@ if $should_substitute; then
# echo "comando: find $deployments_path -type f -wholename \"**/$path_in_deployments/$class_filename\"" # echo "comando: find $deployments_path -type f -wholename \"**/$path_in_deployments/$class_filename\""
# procurando de forma mais abrangente # procurando de forma mais abrangente
bigger_search=`find $deployments_path -type f -wholename "**/$class_filename"` bigger_search=$(find $deployments_path -type f -wholename "**/$class_filename")
if [ ! -z "$bigger_search" ]; then if [ ! -z "$bigger_search" ]; then
printf "\n" printf "\n"
echo "[INFO] O arquivo \"$f_basename\" não foi encontrado no diretório esperado em deployments, mas há caminho(s) alternativo(s):" echo "[INFO] O arquivo \"$f_basename\" não foi encontrado no diretório esperado em deployments, mas há caminho(s) alternativo(s):"
@@ -471,8 +478,8 @@ if $should_substitute; then
printf "\n" printf "\n"
echo "Informe o nome do arquivo (ex.: \"FilterResult.java\" - sem aspas):" echo "Informe o nome do arquivo (ex.: \"FilterResult.java\" - sem aspas):"
read neighbour_filename read neighbour_filename
neighbour_class_filename=`echo ${neighbour_filename%".java"}.class` neighbour_class_filename=$(echo ${neighbour_filename%".java"}.class)
neighbour_class_filename_in_deployments=`find $deployments_path -type f -wholename "**/$path_in_deployments/$neighbour_class_filename"` # pode dar mais de um resultado neighbour_class_filename_in_deployments=$(find $deployments_path -type f -wholename "**/$path_in_deployments/$neighbour_class_filename") # pode dar mais de um resultado
if [ ! -z "$neighbour_class_filename_in_deployments" ]; then if [ ! -z "$neighbour_class_filename_in_deployments" ]; then
printf "\n" printf "\n"
@@ -486,7 +493,7 @@ if $should_substitute; then
echo "[ASK] Deseja copiar o arquivo original que não foi encontrado no(s) mesmo(s) diretório(s)?" echo "[ASK] Deseja copiar o arquivo original que não foi encontrado no(s) mesmo(s) diretório(s)?"
if confirm; then if confirm; then
for d in ${neighbour_class_filename_in_deployments[@]}; do for d in ${neighbour_class_filename_in_deployments[@]}; do
touch "`dirname $d`/$class_filename" touch "$(dirname $d)/$class_filename"
done done
else else
unsuccessful_copies+=($f_basename) unsuccessful_copies+=($f_basename)
@@ -507,7 +514,7 @@ if $should_substitute; then
echo "[ASK] Deseja tentar fazer uma busca mais abrangente?" echo "[ASK] Deseja tentar fazer uma busca mais abrangente?"
if confirm; then if confirm; then
new_class_file_path_in_target=`find $repo_dir -type f -wholename "**/target/classes/**/$class_filename"` new_class_file_path_in_target=$(find $repo_dir -type f -wholename "**/target/classes/**/$class_filename")
if [ ! -z "$new_class_file_path_in_target" ]; then if [ ! -z "$new_class_file_path_in_target" ]; then
printf "\n" printf "\n"
@@ -536,8 +543,7 @@ if $should_substitute; then
fi fi
fi fi
cp_dest=$(dirname $p)
cp_dest=`dirname $p`
printf "\n" printf "\n"
echo "[INFO] Copiando arquivo:" echo "[INFO] Copiando arquivo:"