diff options
Diffstat (limited to 'sources/pyside6/doc/qtattributionsscannertorst.py')
-rw-r--r-- | sources/pyside6/doc/qtattributionsscannertorst.py | 95 |
1 files changed, 40 insertions, 55 deletions
diff --git a/sources/pyside6/doc/qtattributionsscannertorst.py b/sources/pyside6/doc/qtattributionsscannertorst.py index dbc8040d0..677371c45 100644 --- a/sources/pyside6/doc/qtattributionsscannertorst.py +++ b/sources/pyside6/doc/qtattributionsscannertorst.py @@ -1,41 +1,5 @@ -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## Contact: https://www.qt.io/licensing/ -## -## This file is part of Qt for Python. -## -## $QT_BEGIN_LICENSE:LGPL$ -## Commercial License Usage -## Licensees holding valid commercial Qt licenses may use this file in -## accordance with the commercial license agreement provided with the -## Software or, alternatively, in accordance with the terms contained in -## a written agreement between you and The Qt Company. For licensing terms -## and conditions see https://www.qt.io/terms-conditions. For further -## information use the contact form at https://www.qt.io/contact-us. -## -## GNU Lesser General Public License Usage -## Alternatively, this file may be used under the terms of the GNU Lesser -## General Public License version 3 as published by the Free Software -## Foundation and appearing in the file LICENSE.LGPL3 included in the -## packaging of this file. Please review the following information to -## ensure the GNU Lesser General Public License version 3 requirements -## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -## -## GNU General Public License Usage -## Alternatively, this file may be used under the terms of the GNU -## General Public License version 2.0 or (at your option) the GNU General -## Public license version 3 or any later version approved by the KDE Free -## Qt Foundation. The licenses are as published by the Free Software -## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -## included in the packaging of this file. Please review the following -## information to ensure the GNU General Public License requirements will -## be met: https://www.gnu.org/licenses/gpl-2.0.html and -## https://www.gnu.org/licenses/gpl-3.0.html. -## -## $QT_END_LICENSE$ -## -############################################################################# +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only """ Tool to run qtattributionsscanner and convert its output to rst @@ -44,18 +8,25 @@ Tool to run qtattributionsscanner and convert its output to rst import os import json import subprocess -import sys import warnings +from argparse import ArgumentParser, RawTextHelpFormatter from pathlib import Path +USAGE = "Usage: qtattributionsscannertorst [directory] [file]'" + + +libexec_dir = None + + def indent(lines, indent): result = '' - for l in lines: - result = f"{result}{indent}{l}\n" + for line in lines: + result = f"{result}{indent}{line}\n" return result -rstHeader="""Licenses Used in Qt for Python + +rstHeader = """Licenses Used in Qt for Python ****************************** Qt for Python contains some code that is not provided under the @@ -75,35 +46,43 @@ Third-party Licenses The licenses for the third-party sources used by Qt itself are listed in -`Qt documentation <http://doc.qt.io/qt-5/licenses-used-in-qt.html>`_. +`Qt documentation <https://doc.qt.io/qt-5/licenses-used-in-qt.html>`_. The following table lists parts of Qt for Python that incorporates code licensed under third-party opensource licenses: """ + def rstHeadline(title): return f"{title}\n{'-' * len(title)}\n" + def rstUrl(title, url): return f"`{title} <{url}>`_" + def rstLiteralBlock(lines): return f"::\n\n{indent(lines, ' ')}\n\n" + def rstLiteralBlockFromText(text): return rstLiteralBlock(text.strip().split('\n')) + def readFile(fileName): with open(fileName, 'r') as file: return file.readlines() -def runScanner(directory, targetFileName): + +def get_libexec_dir(): + libexec_b = subprocess.check_output("qtpaths6 -query QT_INSTALL_LIBEXECS", shell=True) + return libexec_b.decode('utf-8').strip() + + +def runScanner(directory, targetFileName, libexec_dir): # qtattributionsscanner recursively searches for qt_attribution.json files # and outputs them in JSON with the paths of the 'LicenseFile' made absolute - libexec_b = subprocess.check_output('qtpaths -query QT_INSTALL_LIBEXECS', - shell=True) - libexec = libexec_b.decode('utf-8').strip() - scanner = os.path.join(libexec, 'qtattributionsscanner') + scanner = os.path.join(libexec_dir, 'qtattributionsscanner') command = f'{scanner} --output-format json {directory}' jsonS = subprocess.check_output(command, shell=True) if not jsonS: @@ -116,7 +95,7 @@ def runScanner(directory, targetFileName): url = entry['Homepage'] version = entry['Version'] if url and version: - content = f"{content}{rstUrl('Project Homepage', url)}, upstream version: {version}\n\n" + content = f"{content}{rstUrl('Project Homepage', url)}, upstream version: {version}\n\n" # noqa E:501 copyright = entry['Copyright'] if copyright: content += rstLiteralBlockFromText(copyright) @@ -129,10 +108,16 @@ def runScanner(directory, targetFileName): warnings.warn(f'"{licenseFile}" is not a file', RuntimeWarning) targetFile.write(content) -if len(sys.argv) < 3: - print("Usage: qtattributionsscannertorst [directory] [file]'") - sys.exit(0) -directory = sys.argv[1] -targetFileName = sys.argv[2] -runScanner(directory, targetFileName) +if __name__ == '__main__': + parser = ArgumentParser(description=USAGE, formatter_class=RawTextHelpFormatter) + parser.add_argument("-l", "--libexec", type=str, help="libexec directory of Qt") + parser.add_argument('directory') + parser.add_argument('target') + options = parser.parse_args() + directory = options.directory + targetFileName = options.target + libexec_dir = options.libexec + if not libexec_dir: + libexec_dir = get_libexec_dir() + runScanner(directory, targetFileName, libexec_dir) |