mirror of
https://github.com/haiwen/seahub.git
synced 2025-04-27 19:05:16 +00:00
93 lines
2.3 KiB
Python
93 lines
2.3 KiB
Python
|
# Copyright (c) 2012-2016 Seafile Ltd.
|
||
|
|
||
|
import os
|
||
|
from fabric.api import task
|
||
|
|
||
|
@task
|
||
|
def update(path):
|
||
|
"""Add copyright stuff to the begining of files.
|
||
|
"""
|
||
|
for filename in path_to_pyfile_list(path):
|
||
|
do_update(filename)
|
||
|
|
||
|
@task
|
||
|
def check(path):
|
||
|
"""Check copyright stuff for files.
|
||
|
"""
|
||
|
for filename in path_to_pyfile_list(path):
|
||
|
do_check(filename)
|
||
|
|
||
|
def do_update(filename):
|
||
|
if 'migrations' in filename:
|
||
|
print 'skip migration file: %s' % filename
|
||
|
return
|
||
|
|
||
|
with open(filename) as f:
|
||
|
# try read first line of file
|
||
|
try:
|
||
|
head = [next(f) for x in xrange(1)]
|
||
|
except StopIteration:
|
||
|
print '%s is empty, skip' % filename
|
||
|
return
|
||
|
|
||
|
copy_str = '# Copyright (c) 2012-2016 Seafile Ltd.'
|
||
|
|
||
|
need_update = True
|
||
|
for line in head:
|
||
|
line = line.lower()
|
||
|
if 'seafile ltd.' in line:
|
||
|
need_update = False
|
||
|
|
||
|
if not need_update:
|
||
|
print '%s is ok.' % filename
|
||
|
return
|
||
|
|
||
|
line_prepender(filename, copy_str)
|
||
|
print '%s Done.' % filename
|
||
|
|
||
|
def path_to_pyfile_list(path):
|
||
|
is_dir = False
|
||
|
if os.path.isdir(path):
|
||
|
is_dir = True
|
||
|
|
||
|
if not is_dir:
|
||
|
py_files = [path]
|
||
|
else:
|
||
|
py_files = []
|
||
|
for root, directories, filenames in os.walk(path):
|
||
|
for directory in directories:
|
||
|
f = os.path.join(root, directory)
|
||
|
if f.endswith('.py'):
|
||
|
py_files.append(f)
|
||
|
for filename in filenames:
|
||
|
if filename.endswith('.py'):
|
||
|
py_files.append(os.path.join(root, filename))
|
||
|
return py_files
|
||
|
|
||
|
|
||
|
def line_prepender(filename, line):
|
||
|
with open(filename, 'r+') as f:
|
||
|
content = f.read()
|
||
|
f.seek(0, 0)
|
||
|
f.write(line.rstrip('\r\n') + '\n' + content)
|
||
|
|
||
|
def do_check(filename):
|
||
|
if 'migrations' in filename:
|
||
|
return
|
||
|
|
||
|
with open(filename) as f:
|
||
|
# try read first line of file
|
||
|
try:
|
||
|
head = [next(f) for x in xrange(1)]
|
||
|
except StopIteration:
|
||
|
return
|
||
|
|
||
|
need_update = True
|
||
|
for line in head:
|
||
|
line = line.lower()
|
||
|
if 'seafile ltd.' in line:
|
||
|
need_update = False
|
||
|
|
||
|
if need_update:
|
||
|
print 'No copyright info in %s.' % filename
|