Untitled

 avatar
unknown
sh
20 days ago
2.1 kB
3
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
Leave a Comment