mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-10 01:30:19 +00:00
102 lines
2.7 KiB
Python
Executable File
102 lines
2.7 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
# This file is part of the Trezor project.
|
|
#
|
|
# Copyright (C) 2012-2022 SatoshiLabs and contributors
|
|
#
|
|
# This library is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Lesser General Public License version 3
|
|
# as published by the Free Software Foundation.
|
|
#
|
|
# This library is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Lesser General Public License for more details.
|
|
#
|
|
# You should have received a copy of the License along with this library.
|
|
# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
|
|
|
|
import glob
|
|
import os
|
|
import sys
|
|
from datetime import date
|
|
from typing import List, TextIO
|
|
|
|
LICENSE_NOTICE = """\
|
|
# This file is part of the Trezor project.
|
|
#
|
|
# Copyright (C) 2012-{year} SatoshiLabs and contributors
|
|
#
|
|
# This library is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Lesser General Public License version 3
|
|
# as published by the Free Software Foundation.
|
|
#
|
|
# This library is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Lesser General Public License for more details.
|
|
#
|
|
# You should have received a copy of the License along with this library.
|
|
# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
|
|
|
|
""".format(
|
|
year=date.today().year
|
|
)
|
|
|
|
SHEBANG_HEADER = """\
|
|
#!/usr/bin/env python3
|
|
|
|
"""
|
|
|
|
EXCLUDE_FILES = [
|
|
"src/trezorlib/__init__.py",
|
|
"src/trezorlib/_ed25519.py",
|
|
"src/trezorlib/messages.py",
|
|
]
|
|
EXCLUDE_DIRS = []
|
|
|
|
|
|
def one_file(fp: TextIO) -> None:
|
|
lines = list(fp)
|
|
new = lines[:]
|
|
shebang_header = False
|
|
|
|
if new[0].startswith("#!"):
|
|
shebang_header = True
|
|
new.pop(0)
|
|
if not new[0].strip():
|
|
new.pop(0)
|
|
|
|
while new and new[0][0] == "#":
|
|
new.pop(0)
|
|
|
|
while new and new[0].strip() == "":
|
|
new.pop(0)
|
|
|
|
new.insert(0, LICENSE_NOTICE)
|
|
if shebang_header:
|
|
new.insert(0, SHEBANG_HEADER)
|
|
data = "".join(new)
|
|
|
|
fp.seek(0)
|
|
fp.write(data)
|
|
fp.truncate()
|
|
|
|
|
|
def main(paths: List[str]) -> None:
|
|
for path in paths:
|
|
for fn in glob.glob(f"{path}/**/*.py", recursive=True):
|
|
if any(exclude in fn for exclude in EXCLUDE_DIRS):
|
|
continue
|
|
if fn in EXCLUDE_FILES:
|
|
continue
|
|
statinfo = os.stat(fn)
|
|
if statinfo.st_size == 0:
|
|
continue
|
|
with open(fn, "r+") as fp:
|
|
one_file(fp)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main(sys.argv[1:])
|