Инструмент для добавления заголовков лицензии к исходным файлам? [закрытый]

83
задан Abdul 14 August 2015 в 15:23
поделиться

6 ответов

#!/bin/bash

for i in *.cc # or whatever other pattern...
do
  if ! grep -q Copyright $i
  then
    cat copyright.txt $i >$i.new && mv $i.new $i
  fi
done
57
ответ дан joshperry 24 November 2019 в 08:53
поделиться

Решение Python, измените для своей собственной потребности

Функции:

  • дескрипторы заголовки UTF (важный для большинства IDE)
  • рекурсивно обновления все файлы в целевом каталоге, передающем данный маску (изменяют .endswith параметр для filemask Вашего языка (.c, .java.. и т.д.)
  • способность перезаписать предыдущий текст авторского права (обеспечивают старый параметр авторского права, чтобы сделать это)
  • дополнительно опускает каталоги, данные в массиве excludedir

-

# updates the copyright information for all .cs files
# usage: call recursive_traversal, with the following parameters
# parent directory, old copyright text content, new copyright text content

import os

excludedir = ["..\\Lib"]

def update_source(filename, oldcopyright, copyright):
    utfstr = chr(0xef)+chr(0xbb)+chr(0xbf)
    fdata = file(filename,"r+").read()
    isUTF = False
    if (fdata.startswith(utfstr)):
        isUTF = True
        fdata = fdata[3:]
    if (oldcopyright != None):
        if (fdata.startswith(oldcopyright)):
            fdata = fdata[len(oldcopyright):]
    if not (fdata.startswith(copyright)):
        print "updating "+filename
        fdata = copyright + fdata
        if (isUTF):
            file(filename,"w").write(utfstr+fdata)
        else:
            file(filename,"w").write(fdata)

def recursive_traversal(dir,  oldcopyright, copyright):
    global excludedir
    fns = os.listdir(dir)
    print "listing "+dir
    for fn in fns:
        fullfn = os.path.join(dir,fn)
        if (fullfn in excludedir):
            continue
        if (os.path.isdir(fullfn)):
            recursive_traversal(fullfn, oldcopyright, copyright)
        else:
            if (fullfn.endswith(".cs")):
                update_source(fullfn, oldcopyright, copyright)


oldcright = file("oldcr.txt","r+").read()
cright = file("copyrightText.txt","r+").read()
recursive_traversal("..", oldcright, cright)
exit()
15
ответ дан Silver Dragon 24 November 2019 в 08:53
поделиться

Вот сценарий Bash, который это добьется цели, предполагая, что у Вас есть заголовок лицензии в файле license.txt:

Файл addlicense.sh:

#!/bin/bash  
for x in $*; do  
head -$LICENSELEN $x | diff license.txt - || ( ( cat license.txt; echo; cat $x) > /tmp/file;  
mv /tmp/file $x )  
done  

Теперь выполняет это в Вашем исходном каталоге:

export LICENSELEN=`wc -l license.txt | cut -f1 -d ' '`  
find . -type f \(-name \*.cpp -o -name \*.h \) -print0 | xargs -0 ./addlicense.sh  
15
ответ дан Community 24 November 2019 в 08:53
поделиться

Для Java, http://code.google.com/p/maven-license-plugin/

наилучшие пожелания

10
ответ дан marcospereira 24 November 2019 в 08:53
поделиться

Вот один , я нашел в списке Apache. Его записанный в Ruby и кажется достаточно легким читать. Необходимо даже смочь назвать его от граблей для дополнительной специальной правильности. :)

2
ответ дан Richard Hurt 24 November 2019 в 08:53
поделиться

Если Вам все еще нужно один, существует немного инструмента, который я записал, назвал SrcHead. Можно найти его в http://www.solvasoft.nl/downloads.html

0
ответ дан 24 November 2019 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: