aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/doc/qtattributionsscannertorst.py
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside6/doc/qtattributionsscannertorst.py')
-rw-r--r--sources/pyside6/doc/qtattributionsscannertorst.py95
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)