X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/55a2a6db88bee277ed0cf43720428199f8d6ffc1..refs/pull/5313/head:/dev/licensing/gen-js-licenses diff --git a/dev/licensing/gen-js-licenses b/dev/licensing/gen-js-licenses index 6c44791aa..191a16f30 100644 --- a/dev/licensing/gen-js-licenses +++ b/dev/licensing/gen-js-licenses @@ -4,10 +4,12 @@ // This script reads the project composer.lock file to generate // clear license details for our PHP dependencies. +declare(strict_types=1); +require "gen-licenses-shared.php"; + $rootPath = dirname(__DIR__, 2); $outputPath = "{$rootPath}/dev/licensing/js-library-licenses.txt"; $outputSeparator = "\n-----------\n"; -$warnings = []; $packages = [ ...glob("{$rootPath}/node_modules/*/package.json"), @@ -20,12 +22,7 @@ $licenseInfo = implode($outputSeparator, $packageOutput) . "\n"; file_put_contents($outputPath, $licenseInfo); echo "License information written to {$outputPath}\n"; -echo implode("\n", $warnings); - -function dd(mixed $data): never { - print_r($data); - exit(0); -} +echo implode("\n", getWarnings()) . "\n"; function packageToOutput(string $packagePath): string { @@ -64,58 +61,3 @@ function packageToOutput(string $packagePath): string return implode("\n", $output); } - -function findLicenseFile(string $packageName, string $packagePath): string -{ - $licenseNameOptions = [ - 'license', 'LICENSE', 'License', - 'license.*', 'LICENSE.*', 'License.*', - 'license-*.*', 'LICENSE-*.*', 'License-*.*', - ]; - $packageDir = dirname($packagePath); - - $foundLicenses = []; - foreach ($licenseNameOptions as $option) { - $search = glob("{$packageDir}/$option"); - array_push($foundLicenses, ...$search); - } - - if (count($foundLicenses) > 1) { - warn("Package {$packageName}: more than one license file found"); - } - - if (count($foundLicenses) > 0) { - $fileName = basename($foundLicenses[0]); - return "{$packageDir}/{$fileName}"; - } - - warn("Package {$packageName}: no license files found"); - return ''; -} - -function findCopyright(string $licenseFile): string -{ - $fileContents = file_get_contents($licenseFile); - $pattern = '/^.*?copyright (\(c\)|\d{4})[\s\S]*?(\n\n|\.\n)/mi'; - $matches = []; - preg_match($pattern, $fileContents, $matches); - $copyright = trim($matches[0] ?? ''); - - if (str_contains($copyright, 'i.e.')) { - return ''; - } - - $emailPattern = '/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/i'; - return preg_replace_callback($emailPattern, obfuscateEmail(...), $copyright); -} - -function obfuscateEmail(array $matches): string -{ - return preg_replace('/[^@.]/', '*', $matches[1]); -} - -function warn(string $text): void -{ - global $warnings; - $warnings[] = "WARN:" . $text; -} \ No newline at end of file