-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathimg
More file actions
executable file
·262 lines (196 loc) · 7.14 KB
/
img
File metadata and controls
executable file
·262 lines (196 loc) · 7.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
#!/bin/bash
#
# img (Shell Script)
#
# Objetivo: Converter arquivos .vpl ( arquivos de imagem do MADAGASCAR)
# em imagens .jpeg
#
# IMPORTANTE: Depende do pacote MADAGASCAR instalado para funcionar!
#
# -MADAGASCAR é um pacote open source de processamento sísmico (http://www.ahay.org/wiki/Main_Page)
#
# Site: https://www.geofisicando.com
#
# Versão 1.0
#
# Programador: Rodolfo A. C. Neves 13/01/2019
#
# email: rodolfo_profissional@hotmail.com
#
# Licença: Software de uso livre e código aberto.
# Biblioteca de funções para formatar a mensagem de ajuda
source mensagemAjuda
# Biblioteca de funções para formatar a mensagem de erro
source mensagemErro
#----------------{ Configuração de variáveis }-----------------------------#
# Versão deste programa
VERSAO="Versão 1.0"
# Opção passada pelo usuário
OPCAO="$1"
# Pasta fornecida pelo usuário
PASTA_FORNECIDA_USUARIO="$2"
# O endereço de um diretório deve terminar com /
# Se o usuário esqueceu de colocar a /
# adicione o caractere ao final do nome da pasta
formataNomePasta(){
[ ! $(echo "$1" | rev | cut -c1) == "/" ] && {
echo "$1/"
return 0
}
echo "$1"
}
PASTA_FORNECIDA_USUARIO=$(formataNomePasta "$PASTA_FORNECIDA_USUARIO")
NOME_PROGRAMA="$(basename $0)"
DESCRICAO="Converte arquivos .vpl (arquivos de imagem do MADAGASCAR) em imagens '.jpeg'."
PARAMETROS="-h --help::Exibe esta mensagem de ajuda e sai
-v --version::Exibe a Versão do programa e sai
-i ::Converte os arquivos .vpl de uma pasta específica em imagens jpeg
-r ::Remove os arquivos .jpeg de uma pasta específica"
EXEMPLO_DE_USO="~$ $(basename $0) -i # Converte arquivos .vpl da pasta atual
~$ $(basename $0) -i /home/user # Converte arquivos .vpl da pasta /home/user
~$ $(basename $0) -r # Remove os arquivos .jpeg da pasta atual
~$ $(basename $0) -r /home/user # Remove os arquivos .jpeg da pasta /home/user
"
#--------------------------------------------------------------------------#
# Verificar se o usuário forneceu algum parâmetro
[ -z "$OPCAO" ] && {
MENSAGEMERRO="Usuário não ofereceu parâmetros ao programa!\nDigite $(basename $0) -h para obter ajuda!"
exibirMensagemErroProgramaFormatada "$(basename $0)" "1" "$MENSAGEMERRO"
}
# Verificar se há arquivos .vpl a converter
verificarSeTemVplNaPasta(){
PASTA=$( formataNomePasta "$1")
TEMARQUIVOVPL=$(find $PASTA -maxdepth 1 -name '*.vpl')
[ -z "$TEMARQUIVOVPL" ] && {
MENSAGEMERRO="Não há arquivos .vpl na pasta!"
exibirMensagemErroProgramaFormatada "$(basename $0)" "2" "$MENSAGEMERRO"
}
return 0
}
# Verificar se há arquivos .jpeg a remover em uma pasta
verificarSeTemJpegNaPasta(){
PASTA=$( formataNomePasta "$1")
TEMARQUIVOVPL=$(find $PASTA -name '*.jpeg')
[ -z "$TEMARQUIVOVPL" ] && {
MENSAGEMERRO="Não há arquivos .jpeg na pasta!"
exibirMensagemErroProgramaFormatada "$(basename $0)" "3" "$MENSAGEMERRO"
}
return 0
}
case "$OPCAO" in
-h | --help) ## Exibir ajuda
clear
exibirMensagemAjudaProgramaFormatada "$NOME_PROGRAMA" "$DESCRICAO" "$PARAMETROS" "$EXEMPLO_DE_USO"
exit 0
;;
-v | --version) ## Exibir versão
echo -e "\033[00;01m$VERSAO\033[m"
exit 0
;;
-i) ## Converter arquivos .vpl (MADAGASCAR) em imagens jpeg
# Se o usuário não forneceu uma pasta, converta
# arquivos .vpl da pasta atual
if [ -z "$PASTA_FORNECIDA_USUARIO" ]
then
# Tem .vpl na pasta atual?
verificarSeTemVplNaPasta "$PWD"
# Armazene os arquivos .vpl da pasta atual
# em um arquivo temporário
ls -1 *.vpl > /tmp/lista-temporaria-arquivos.txt
# Obtenha a imagem jpeg de cada arquivo na lista dos arquivos
while read LINHA_LISTA_TEMPORARIA
do
< "$LINHA_LISTA_TEMPORARIA" jpegpen bgcolor=w > \
$(echo "$LINHA_LISTA_TEMPORARIA" | cut -d"." -f1)".jpeg"
done < /tmp/lista-temporaria-arquivos.txt
exit 0
# O usuário forneceu o endereço de uma pasta específica,
# converta os arquivos .vpl desta pasta
else
# Verifique se o endereço fornecido existe
[ -d "$PASTA_FORNECIDA_USUARIO" ] || {
MENSAGEMERRO="Diretório $PASTA_FORNECIDA_USUARIO não encontrado!"
exibirMensagemErroProgramaFormatada "$(basename $0)" "4" "$MENSAGEMERRO"
}
# Tem .vpl na pasta fornecida?
verificarSeTemVplNaPasta "$PASTA_FORNECIDA_USUARIO"
# Liste os arquivos da pasta
# em um arquivo temporário
ls -1 "$PASTA_FORNECIDA_USUARIO" | grep ".vpl$" > /tmp/lista-temporaria-arquivos.txt
# Obtenha a imagem jpeg a partir dos arquivos .vpl na lista
while read LINHA_LISTA_TEMPORARIA
do
# Converter de .vpl para jpeg
< "$PASTA_FORNECIDA_USUARIO${LINHA_LISTA_TEMPORARIA}" jpegpen bgcolor=w > \
"$PASTA_FORNECIDA_USUARIO"$(echo "$LINHA_LISTA_TEMPORARIA" | cut -d"." -f1)".jpeg"
done < /tmp/lista-temporaria-arquivos.txt
exit 0
fi
;;
-r) ## Remover arquivos jpeg de uma pasta
# Se o usuário não forneceu uma pasta, apague
# arquivos .jpeg da pasta atual
if [ -z "$PASTA_FORNECIDA_USUARIO" ]
then
# Tem .JPEG na pasta atual?
verificarSeTemJpegNaPasta "$PWD"
# Remover arquivos?
echo "Pasta atual: $PWD"
read -p "Remover arquivos .jpeg da pasta atual? (y/n)" RESPOSTA_REMOVER_ARQUIVOS
# Usuário desistiu?
if [ "$RESPOSTA_REMOVER_ARQUIVOS" = "n" ]
then
echo "Remoção abortada! Nenhum arquivo removido"
exit 0
elif [ "$RESPOSTA_REMOVER_ARQUIVOS" = "y" ]
then
rm *.jpeg
[ $? -eq "0" ] && {
echo "Arquivos .jpeg removidos com sucesso!"
exit 0
}
echo "Não foram encontrados arquivos .jpeg na pasta!"
exit 1
else
MENSAGEMERRO="Opção $RESPOSTA_REMOVER_ARQUIVOS desconhecida! Abortada a execução!"
exibirMensagemErroProgramaFormatada "$(basename $0)" "5" "$MENSAGEMERRO"
fi
# O usuário forneceu o endereço de uma pasta específica,
# apague os arquivos .jpeg desta pasta
else
# Verifique se o endereço fornecido existe
[ -d "$PASTA_FORNECIDA_USUARIO" ] || {
MENSAGEMERRO="Diretório $PASTA_FORNECIDA_USUARIO NÃO encontrado!"
exibirMensagemErroProgramaFormatada "$(basename $0)" "6" "$MENSAGEMERRO"
}
# Tem .JPEG na pasta fornecida?
verificarSeTemJpegNaPasta "$PASTA_FORNECIDA_USUARIO"
# Remover arquivos?
echo "Pasta escolhida: $PASTA_FORNECIDA_USUARIO"
read -p "Remover arquivos .jpeg da pasta? (y/n)" RESPOSTA_REMOVER_ARQUIVOS
# Usuário desistiu de remover os arquivos?
if [ "$RESPOSTA_REMOVER_ARQUIVOS" = "n" ]
then
echo "Remoção abortada! Nenhum arquivo removido de $PASTA_FORNECIDA_USUARIO"
exit 0
elif [ "$RESPOSTA_REMOVER_ARQUIVOS" = "y" ]
then
# Verifique se há algum .jpeg na pasta para ser removido
rm "$PASTA_FORNECIDA_USUARIO"*.jpeg && {
echo "Arquivos .jpeg removidos de $PASTA_FORNECIDA_USUARIO com sucesso!"
} || {
MENSAGEMERRO="Arquivos .jpeg não foram encontrados em $PASTA_FORNECIDA_USUARIO"
exibirMensagemErroProgramaFormatada "$(basename $0)" "7" "$MENSAGEMERRO"
}
exit 0
else
MENSAGEMERRO="Opção $RESPOSTA_REMOVER_ARQUIVOS desconhecida! Abortada a execução"
exibirMensagemErroProgramaFormatada "$(basename $0)" "8" "$MENSAGEMERRO"
fi
fi
;;
*) ## Usuário forneceu parâmetro desconhecido
MENSAGEMERRO="Opção $OPCAO desconhecida!\nDigite $(basename $0) -h para obter ajuda"
exibirMensagemErroProgramaFormatada "$(basename $0)" "9" "$MENSAGEMERRO"
;;
esac