Home > Professores > Script para inclusão de Cabeçalho GPL

Script para inclusão de Cabeçalho GPL

O script a seguir inclui o cabeçalho GPL v2 em códigos .java. É legal, pois facilita e muito o trabalho do desenvolvedor que está transferindo projetos para o software livre, como é o caso do SIEP Gerencial.

Agradecimento ao aluno Maxwell Queiroz pela ajuda, porém acho que ele deve estudar mais…. 😀

#!/bin/bash
#Autor Anderson Moreira
#Autor Maxwell Queiroz

#Funcao que insere os termos de GNU no arquivo.
function insereGNU() {
sed  '1i\/*
1i\Copyright (C) 2010 - Secretaria de Educação Profissional e Tecnológica
1i\Author: '"$2"' - siep@renapi.org
1i\
1i\This program is free software: you can redistribute it and/or modify
1i\it under the terms of the GNU General Public License as published by
1i\the Free Software Foundation, either version 3 of the License, or
1i\(at your option) any later version.
1i\
1i\This program is distributed in the hope that it will be useful,
1i\but WITHOUT ANY WARRANTY; without even the implied warranty of
1i\MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1i\GNU General Public License for more details.
1i\
1i\You should have received a copy of the GNU General Public License
1i\along with this program.  If not, see <http://www.gnu.org/licenses/>.
1i\
1i\*/' $1 > $1.tmp
}

#Funcao que gera a lista de arquivos a serem modificados.
function geraLista() {

IFStmp=$IFS
IFS=":"

if [ -w `pwd` ]
then
find `pwd` -type f -iname '*.java' > arqLista.txt.tmp
sed '/arqLista.txt/d
/arqErro.txt/d
/convGNU.sh/d' arqLista.txt.tmp > arqLista.txt
rm arqLista.txt.tmp
else
echo "-----------------------------------------------------------------------"
echo "                              ERRO!                                    "
echo "A lista de arquivos não pode ser gerada no diretorio atual, verifique  "
echo "os privilegios de escrita.                                             "
echo "-----------------------------------------------------------------------"
exit
fi

IFS=$IFStmp

}

#Funcao que testa a escrita em um determinado arquivo.
testaEscrita() {
if [ ! -w $1 ]
then
if [ ! -e arqErro.txt ]
then
echo "-----------------------------------------------------------------------" > arqErro.txt
echo "Erro de acesso em alguns arquivos!                     " >> arqErro.txt
echo "Verifique suas permissoes de acesso/escrita nos arquivos abaixo.     " >> arqErro.txt
echo "-----------------------------------------------------------------------" >> arqErro.txt
echo "$1"                                          >> arqErro.txt
else
echo "$1"                                          >> arqErro.txt
fi

flagErro=1
flagArq=1
flagErroTest=1

fi
}

#Funcao que testa se ja foi inserido os termos GNU no arquivo.
testaGNU() {
tGNU=`grep "GNU General Public License"  $1 | wc -l`
if [ $tGNU -ge 1 ]
then
flagArq=1
fi
}

#Funcao que limpa logs.
limpaLogs() {
if [ -e arqLista.txt ]
then
rm -f arqLista.txt
fi

if [ -e arqErro.txt ]
then
rm -f arqErro.txt
fi
}

############################### < Início do corpo do script. > ###############################

#Chamada da funcao que limpa possiveis logs existentes.
limpaLogs

#Chamada da funcao que gera a lista de arquivos.
geraLista

echo "-----------------------------------------------------------------------"
echo "                             ATENCAO!!!                                "
echo "Este script insere um cabecalho com os termos GNU em TODOS os arquivos "
echo "\".JAVA\" deste diretorio \"`pwd`\" e seus sub-diretorios.         "
echo "-----------------------------------------------------------------------"

#Leitura dos dados do autor.
read -p "Digite o nome do Instituto: " nome
#read -p "Digite seu e-mail: " email

#Estrutura de repeticao que incrementa o termo da GNU nos arquivos.
IFStmp=$IFS
IFS=$( echo -en "\n\b" )
flagErroTest=0

for k in `cat arqLista.txt`
do
flagArq=0
flagErro=0
testaEscrita "$k"
testaGNU "$k"
if [ $flagArq == 1 ]
then
continue
else
#     insereGNU "$k" "$nome" "$email"
insereGNU "$k" "$nome"
rm $k
mv $k.tmp $k
fi
done

IFS=$IFStmp

#Condicional que avisa ao usuario se houve algum erro.
if [ $flagErroTest == 1 ]
then
echo "-----------------------------------------------------------------------"
echo "Feito! Entretanto, houve um ou mais erros de acesso em seus arquivos.  "
echo "Verifique o arquivo \"arqErro.txt\" no diretorio atual.                "
echo "-----------------------------------------------------------------------"
fi

echo "Feito!"
sleep 3

############################### Fim do corpo do script  ##################################
  1. No comments yet.
Submitting Comment, Give me a second...

Leave a comment

 

Allowed tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. No trackbacks yet.