#!/usr/bin/env python3 # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import json import re import shutil import sys # Helper program for generating LICENSE contents for dependencies under web-console. # Generates entries for MIT-licensed deps and dumps info for non-MIT deps. # Uses JSON output from https://www.npmjs.com/package/license-checker. if len(sys.argv) != 3: sys.stderr.write('usage: program \n') sys.stderr.write('Run the following command in web-console/ to generate the input license report:\n') sys.stderr.write(' license-checker --production --json\n') sys.exit(1) license_report_path = sys.argv[1] license_output_path = sys.argv[2] non_mit_licenses = [] license_entry_template = "This product bundles {} version {}, copyright {},\n which is available under an MIT license. For details, see licenses/{}.MIT.\n" with open(license_report_path, 'r') as license_report_file: license_report = json.load(license_report_file) for dependency_name_version in license_report: dependency = license_report[dependency_name_version] match_result = re.match("(.+)@(.+)", dependency_name_version) dependency_name = match_result.group(1) nice_dependency_name = dependency_name.replace("/", "-") dependency_ver = match_result.group(2) try: licenseType = dependency["licenses"] licenseFile = dependency["licenseFile"] except: print("No license file for {}".format(dependency_name_version)) try: publisher = dependency["publisher"] except: publisher = "" if licenseType != "MIT": non_mit_licenses.append(dependency) continue fullDependencyPath = dependency["path"] partialDependencyPath = re.match(".*/(web-console.*)", fullDependencyPath).group(1) print(license_entry_template.format(dependency_name, dependency_ver, publisher, nice_dependency_name)) shutil.copy2(licenseFile, license_output_path + "/" + nice_dependency_name + ".MIT") print("\nNon-MIT licenses:\n--------------------\n") for non_mit_license in non_mit_licenses: print(non_mit_license)