Untitled
#!/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