Untitled
unknown
sh
a year ago
2.1 kB
7
Indexable
#!/bin/bash
# Configuração
# 1. Criar o alias no git com o comando:
# git config alias.listar '!f() { ./listar.sh; }; f'
# Cria um arquivo temporário
temp_file=$(mktemp /tmp/tempfile.XXXXXX)
# Abre o arquivo temporário no VSCode
code "$temp_file"
# Armazena o timestamp inicial do arquivo
initial_mod_time=$(stat -c %Y "$temp_file")
# Espera o usuário modificar o arquivo
while [ "$(stat -c %Y "$temp_file")" -eq "$initial_mod_time" ]; do
sleep 1
done
# Lê o conteúdo do arquivo temporário em um array.
# Enquanto remove o caractere de retorno de carro (\r) do arquivo
mapfile -t ARRAY_FILES < <(tr -d '\r' < "$temp_file");
# Remove o arquivo temporário
rm "$temp_file"
# Coletar o nome de cada modelo informado, com prefixo "+" (ascendentes). Exemplo: +modelo1 +modelo2
MODELS=$(echo "${ARRAY_FILES[@]}" | tr ' ' '\n' | sed -e 's!.*\\!!; s!.sql$!!; /^EP_/d; s!^!+!' | sed ':a; N; $!ba; s!\n! !g')
echo "dbt -q ls -s $MODELS --resource-type model source --output path | uniq"
echo "--"
echo "Segue a lista dos modelos selecionados e os arquivos que os sustentam (sql model, yml model e sources):"
echo "-"
# Lista os caminhos dos modelos e sources que estão vinculados aos modelos contidos variável $MODELS
# -q: Modo silencioso. Só mostra a lista de arquivos
# | uniq: Remove linhas duplicadas
mapfile -t ARRAY_MODEL_SOURCE < <(dbt -q ls -s $MODELS --resource-type model source --output path | uniq)
# Adiciona o yml model de cada sql model, apenas se existir
ARRAY_SQL_YML_SOURCE=()
for file in "${ARRAY_MODEL_SOURCE[@]}"; do
ARRAY_SQL_YML_SOURCE+=("$file")
# No bash barra invertida é o caractere de escape
# para fazer operação lógica, primeiro é preciso substituír por barra normal
if [[ $(echo "$file" | sed 's!\\!/!g') == *.sql ]]; then
# adicionar a versão yml do mesmo arquivo, apenas se existir
YML_FILE="${file%.*}.yml"
if [ -e "$YML_FILE" ]; then
ARRAY_SQL_YML_SOURCE+=("$YML_FILE")
fi
fi
done
for file_path in "${ARRAY_SQL_YML_SOURCE[@]}"; do
echo "$file_path"
done
Editor is loading...
Leave a Comment