@intelligentgraphics/ig.gfx.packager 3.0.0-alpha.1 → 3.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cli.mjs +595 -0
- package/build/cli.mjs.map +1 -0
- package/build/commands/{build.js → build.mjs} +73 -77
- package/build/commands/build.mjs.map +1 -0
- package/build/commands/{generate.js → generate.mjs} +31 -58
- package/build/commands/generate.mjs.map +1 -0
- package/build/commands/postinstall.mjs +49 -0
- package/build/commands/postinstall.mjs.map +1 -0
- package/build/commands/publishNpm.mjs +129 -0
- package/build/commands/publishNpm.mjs.map +1 -0
- package/build/commands/{release.js → release.mjs} +101 -124
- package/build/commands/release.mjs.map +1 -0
- package/build/{dependencies.js → dependencies.mjs} +16 -40
- package/build/dependencies.mjs.map +1 -0
- package/build/index.mjs +6 -0
- package/build/index.mjs.map +1 -0
- package/build/scripts.mjs +11 -0
- package/build/scripts.mjs.map +1 -0
- package/build/versionFile.mjs +365 -0
- package/build/versionFile.mjs.map +1 -0
- package/package.json +12 -11
- package/readme.md +12 -0
- package/build/cli.js +0 -8316
- package/build/cli.js.map +0 -1
- package/build/commands/build.js.map +0 -1
- package/build/commands/generate.js.map +0 -1
- package/build/commands/postinstall.js +0 -78
- package/build/commands/postinstall.js.map +0 -1
- package/build/commands/publishNpm.js +0 -157
- package/build/commands/publishNpm.js.map +0 -1
- package/build/commands/release.js.map +0 -1
- package/build/dependencies.js.map +0 -1
- package/build/index.js +0 -8
- package/build/index.js.map +0 -1
- package/build/scripts.js +0 -32
- package/build/scripts.js.map +0 -1
- package/build/versionFile.js +0 -182
- package/build/versionFile.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release.mjs","sources":["../../src/lib/assetService.ts","../../src/commands/release/zip.ts","../../src/commands/release/index.ts"],"sourcesContent":["import axios from \"axios\";\nimport * as fs from \"fs\";\n\nimport { Authentication } from \"./authentication\";\n\nexport interface SessionStartParams\n\textends Omit<\n\t\tSessionStartPayload,\n\t\t\"user\" | \"password\" | \"license\" | \"plugin\"\n\t> {\n\tauthentication: Authentication;\n\turl: string;\n}\n\nexport interface SessionStartPayload {\n\tplugin: string;\n\taddress: string | undefined;\n\tdomain: string;\n\tsubDomain: string;\n\tuser: string | undefined;\n\tpassword: string | undefined;\n\tlicense: string | undefined;\n}\n\nexport interface SessionStartResponse {\n\tsession: string;\n\tstate: string;\n}\n\nconst PLUGIN_ID = \"0feba3a0-b6d1-11e6-9598-0800200c9a66\";\n\nexport interface Session {\n\turl: string;\n\tsessionId: string;\n\tdomain: string;\n\tsubDomain: string;\n}\n\n/**\n * Starts an asset service session and returns the sessionId\n *\n * @param {SessionStartParams} params\n * @returns\n */\nexport const startSession = async ({\n\turl,\n\tauthentication,\n\t...params\n}: SessionStartParams): Promise<Session> => {\n\tconst payload: SessionStartPayload = {\n\t\t...params,\n\t\tuser: undefined,\n\t\tpassword: undefined,\n\t\tlicense: undefined,\n\t\tplugin: PLUGIN_ID,\n\t};\n\n\tif (authentication.type === \"credentials\") {\n\t\tpayload.user = authentication.username;\n\t\tpayload.password = authentication.password;\n\t} else if (authentication.type === \"license\") {\n\t\tpayload.license = authentication.license;\n\t}\n\n\tconst {\n\t\tdata: { session: sessionId, state },\n\t} = await axios.post<SessionStartResponse>(\n\t\t`Session/Start2`,\n\t\tJSON.stringify(payload),\n\t\t{\n\t\t\tbaseURL: url,\n\t\t},\n\t);\n\n\tif (state !== \"SUCCESS\") {\n\t\tthrow new Error(\n\t\t\t`Could not start session: Asset server responded with ${state}`,\n\t\t);\n\t}\n\n\treturn {\n\t\turl,\n\t\tsessionId,\n\t\tdomain: params.domain,\n\t\tsubDomain: params.subDomain,\n\t};\n};\n\nexport const closeSession = async (session: Session) => {\n\tawait axios.get(`Session/Close/${session.sessionId}`, {\n\t\tbaseURL: session.url,\n\t});\n};\n\nexport interface UploadPackageDetails {\n\tname: string;\n\tversion: string;\n}\n\nexport const uploadPackage = async (\n\tsession: Session,\n\t{ name, version }: UploadPackageDetails,\n\tzipFilePath: string,\n) => {\n\ttry {\n\t\tawait uploadPackageToUrl(\n\t\t\tsession.url,\n\t\t\t`UploadPackage/${session.sessionId}/${name}_${version}`,\n\t\t\tzipFilePath,\n\t\t);\n\t} catch (err) {\n\t\tawait uploadPackageToUrl(\n\t\t\tsession.url,\n\t\t\t`UploadPackage/${session.sessionId}/${name}_${version}/`,\n\t\t\tzipFilePath,\n\t\t);\n\t}\n};\n\nexport interface ExistingPackage {\n\tscope: string;\n\tinformalVersion: string;\n\tsupport: boolean;\n\tnumericVersion: number;\n}\n\nexport const getExistingPackages = async (\n\tsession: Session,\n): Promise<ExistingPackage[] | undefined> =>\n\taxios\n\t\t.get(`Script/GetInformation/${session.sessionId}`, {\n\t\t\tbaseURL: session.url,\n\t\t\tvalidateStatus: (status) => status === 404 || status === 200,\n\t\t})\n\t\t.then(({ data }) => (Array.isArray(data) ? data : undefined));\n\nconst uploadPackageToUrl = (url: string, path: string, zipFilePath: string) =>\n\taxios\n\t\t.post(path, fs.createReadStream(zipFilePath), {\n\t\t\tbaseURL: url,\n\t\t})\n\t\t.then(({ data, status }) => {\n\t\t\tlet objectBody: any;\n\n\t\t\tif (typeof data === \"string\") {\n\t\t\t\ttry {\n\t\t\t\t\tobjectBody = JSON.parse(data);\n\t\t\t\t} catch (err) {}\n\t\t\t} else if (typeof data === \"object\") {\n\t\t\t\tobjectBody = data;\n\t\t\t}\n\n\t\t\tif (objectBody !== undefined) {\n\t\t\t\tif (\"state\" in objectBody && objectBody.state !== \"SUCCESS\") {\n\t\t\t\t\tthrow new Error(objectBody.response ?? objectBody.state);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (status >= 400) {\n\t\t\t\tif (objectBody !== undefined) {\n\t\t\t\t\tlet text = \"\";\n\n\t\t\t\t\tfor (const key in objectBody) {\n\t\t\t\t\t\ttext += key + \": \\n\";\n\t\t\t\t\t\tif (typeof objectBody[key] === \"object\") {\n\t\t\t\t\t\t\ttext += JSON.stringify(\n\t\t\t\t\t\t\t\tobjectBody[key],\n\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttext += objectBody[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttext += \"\\n\\n\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow new Error(text);\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(data);\n\t\t\t}\n\n\t\t\treturn data;\n\t\t});\n","import Ajv, { ValidateFunction } from \"ajv\";\nimport axios from \"axios\";\nimport JSZip from \"jszip\";\nimport * as path from \"path\";\nimport * as fs from \"fs\";\nimport terser from \"terser\";\n\nimport { isErrorENOENT } from \"../../lib/error\";\nimport { logPackageMessage } from \"../../lib/log\";\nimport {\n\tCreatorPackage,\n\treadPackageCreatorManifest,\n\twritePackageCreatorManifest,\n\treadPackageAnimationList,\n\treadPackageCreatorIndex,\n\tparseCreatorPackageName,\n\tPackageLocation,\n\tPackageNpmManifest,\n} from \"../../lib/package\";\nimport { getWorkspaceOutputPath, WorkspaceLocation } from \"../../lib/workspace\";\nimport {\n\tPublishedPackageLocation,\n\treadPublishedPackageCreatorIndex,\n} from \"../../lib/publishedPackage\";\n\nexport const buildArchiveFromPublishedPackage = (\n\tlocation: PublishedPackageLocation,\n\tmanifest: PackageNpmManifest,\n\tcreatorPackage: CreatorPackage,\n) => {\n\tconst archive = new JSZip();\n\n\tarchive.file(\"_Package.json\", JSON.stringify(creatorPackage, null, 2));\n\n\tconst index = readPublishedPackageCreatorIndex(location);\n\n\tif (index !== undefined) {\n\t\tarchive.file(\"_Index.json\", JSON.stringify(index, null, 2));\n\t}\n\n\tarchive.file(\n\t\tmanifest.main,\n\t\tfs.createReadStream(path.join(location.path, manifest.main)),\n\t);\n\n\treturn archive;\n};\n\nlet validateSchema: ValidateFunction | undefined;\n\nconst runtimeScripts: CreatorPackage[\"Type\"][] = [\n\t\"Interactor\",\n\t\"Core\",\n\t\"Mixed\",\n];\n\nconst notRuntimeScripts: CreatorPackage[\"Type\"][] = [\"Context\", \"Evaluator\"];\n\nexport const buildArchiveFromPackage = async (\n\tworkspaceLocation: WorkspaceLocation,\n\tpackageLocation: PackageLocation,\n\tdata: CreatorPackage,\n) => {\n\tconst { domain, subdomain } = parseCreatorPackageName(data);\n\n\tconst logStep = (step: string) => logPackageMessage(data.Package, step);\n\n\tif (validateSchema === undefined) {\n\t\tvalidateSchema = await axios\n\t\t\t.get(\n\t\t\t\t\"https://archive.intelligentgraphics.biz/schemas/gfx/animation.json\",\n\t\t\t)\n\t\t\t.then(({ data }) =>\n\t\t\t\tnew Ajv({\n\t\t\t\t\tcoerceTypes: true,\n\t\t\t\t\tallErrors: true,\n\t\t\t\t\tremoveAdditional: true,\n\t\t\t\t\tuseDefaults: \"empty\",\n\t\t\t\t\tvalidateSchema: \"log\",\n\t\t\t\t}).compile(data),\n\t\t\t);\n\t}\n\n\tconst libFilePath = path.join(\n\t\tgetWorkspaceOutputPath(workspaceLocation),\n\t\t`${data.Package}.min.js`,\n\t);\n\n\tconst scriptDirectories: string[] = [\n\t\tpackageLocation.path,\n\t\tpackageLocation.scriptsDir,\n\t];\n\n\tif (subdomain === \"GFX.Standard\") {\n\t\tlogStep(`Including Images folder`);\n\t\tscriptDirectories.push(path.join(packageLocation.path, \"Images\"));\n\t}\n\n\tconst manifest = readPackageCreatorManifest(packageLocation);\n\n\tif (manifest !== undefined) {\n\t\tif (manifest.RunTime && notRuntimeScripts.includes(manifest.Type)) {\n\t\t\tlogStep(\"Setting script RunTime to false because of script type\");\n\t\t\twritePackageCreatorManifest(packageLocation, {\n\t\t\t\t...manifest,\n\t\t\t\tRunTime: false,\n\t\t\t});\n\t\t} else if (\n\t\t\t!manifest.RunTime &&\n\t\t\truntimeScripts.includes(manifest.Type)\n\t\t) {\n\t\t\tlogStep(\"Setting script RunTime to true because of script type\");\n\t\t\twritePackageCreatorManifest(packageLocation, {\n\t\t\t\t...manifest,\n\t\t\t\tRunTime: true,\n\t\t\t});\n\t\t}\n\t}\n\n\t// if (index === undefined) {\n\t// \tthrow new Error(\n\t// \t\t`Could not find an \"${INDEX_FILE}\" file in \"${primaryScriptDir}\"`,\n\t// \t);\n\t// }\n\n\tconst animations = new Map<string, string>();\n\n\tfor (const scriptFilePath of readPackageAnimationList(packageLocation)) {\n\t\tconst content = fs.readFileSync(scriptFilePath, { encoding: \"utf8\" })!;\n\n\t\tlet data: { Id: string };\n\n\t\ttry {\n\t\t\tdata = JSON.parse(content);\n\t\t} catch (err) {\n\t\t\tconst relativePath = path.relative(\n\t\t\t\tworkspaceLocation.path,\n\t\t\t\tscriptFilePath,\n\t\t\t);\n\n\t\t\tif (err instanceof SyntaxError) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Encountered invalid syntax in file \"${relativePath}\": ${String(\n\t\t\t\t\t\terr,\n\t\t\t\t\t)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new Error(\n\t\t\t\t`Encountered an unexpected error while parsing animation json file at path \"${relativePath}\"`,\n\t\t\t\t{\n\t\t\t\t\tcause: err,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tvalidateSchema!(data);\n\n\t\tanimations.set(data.Id, JSON.stringify(data));\n\t}\n\n\tlet libFile: string | undefined;\n\n\ttry {\n\t\tlibFile = fs.readFileSync(libFilePath, { encoding: \"utf8\" });\n\t} catch (err) {\n\t\tif (!isErrorENOENT(err)) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tif (libFile === undefined) {\n\t\tif (animations.size === 0) {\n\t\t\tthrow new Error(`Could not find a javascript file at \"${libFilePath}\".\nPackaging without a javascript file is only allowed when animation json files are available`);\n\t\t}\n\t}\n\n\tconst archive = new JSZip();\n\n\tlet library: string = \"\";\n\n\tif (libFile) {\n\t\tlibrary = libFile;\n\t}\n\n\tif (!library) {\n\t\tconst date = new Date(Date.now());\n\t\tlibrary = `/* This file is part of the ${domain} Data Packages.\n\t\t* Copyright (C) ${date.getFullYear()} intelligentgraphics. All Rights Reserved. */`;\n\t}\n\n\tif (animations.size > 0) {\n\t\tconst scopeParts = data.Scope.split(\".\");\n\t\tconst scope = data.Scope;\n\n\t\tlibrary += createNamespace(scopeParts);\n\n\t\tfor (const [name, data] of animations) {\n\t\t\tlibrary += `${scope}.${name} = ` + data + \";\";\n\t\t\tlogPackageMessage(\n\t\t\t\tmanifest.Package,\n\t\t\t\t`Added animation ${scope}.${name}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tconst minifyResult = terser.minify(library, { ecma: 5 });\n\n\tarchive.file(`${data.Package}.js`, minifyResult.code!);\n\tarchive.file(`_Package.json`, JSON.stringify(data, null, 2));\n\n\tconst creatorIndex = readPackageCreatorIndex(packageLocation);\n\n\tif (creatorIndex !== undefined) {\n\t\tarchive.file(`_Index.json`, JSON.stringify(creatorIndex, null, 2));\n\t}\n\n\tfor (const directory of scriptDirectories) {\n\t\ttry {\n\t\t\tfor (const file of fs.readdirSync(directory)) {\n\t\t\t\tconst { ext } = path.parse(file);\n\n\t\t\t\tswitch (ext) {\n\t\t\t\t\tcase \".png\":\n\t\t\t\t\tcase \".jpeg\":\n\t\t\t\t\tcase \".jpg\":\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tarchive.file(\n\t\t\t\t\tfile,\n\t\t\t\t\tfs.createReadStream(path.join(directory, file)),\n\t\t\t\t);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconsole.error(`Script directory \"${directory}\" does not exist`);\n\t\t}\n\t}\n\n\treturn archive;\n};\n\nconst createNamespace = (parts: string[]) => {\n\tlet code = `var ${parts[0]};`;\n\n\tfor (let index = 0; index < parts.length; index++) {\n\t\tconst path = parts.slice(0, index + 1).join(\".\");\n\n\t\tcode += `\\n(${path} = ${path} || {});`;\n\t}\n\n\treturn code;\n};\n","import * as path from \"path\";\nimport * as fs from \"fs\";\nimport { pipeline } from \"stream/promises\";\nimport { execSync } from \"child_process\";\n\nimport { logPackageMessage } from \"../../lib/log\";\nimport { translate } from \"../../lib/localization\";\nimport { Authentication } from \"../../lib/authentication\";\nimport {\n\tCreatorPackage,\n\tdetectPackage,\n\tgetPackageReleasesDirectory,\n\tparseCreatorPackageName,\n\treadPackageCreatorManifest,\n} from \"../../lib/package\";\nimport {\n\tdetectWorkspace,\n\tgetWorkspaceOutputPath,\n\treadWorkspaceNpmManifest,\n\tWorkspaceLocation,\n} from \"../../lib/workspace\";\nimport { getVersionInformationFromGit } from \"../../lib/git\";\nimport { getWorkspaceBannerText } from \"../../lib/banner\";\nimport {\n\tparseVersionFromNumericVersion,\n\tparseVersionFromString,\n} from \"../../lib/parseVersion\";\nimport { getVersionFileHandler } from \"../../lib/versionFile\";\nimport * as AssetService from \"../../lib/assetService\";\nimport { isErrorENOENT } from \"../../lib/error\";\nimport { determineWorkspaceIGLibraries } from \"../../lib/dependencies\";\nimport {\n\treadPublishedPackageCreatorManifest,\n\treadPublishedPackageNpmManifest,\n} from \"../../lib/publishedPackage\";\nimport { Prompter } from \"../../lib/prompter\";\nimport { PackageVersion } from \"../../lib/packageVersion\";\n\nimport { BuildFoldersOptions, buildFolders } from \"../build\";\nimport {\n\tbuildArchiveFromPackage,\n\tbuildArchiveFromPublishedPackage,\n} from \"./zip\";\n\nexport interface ReleaseFolderOptions\n\textends Omit<\n\t\tBuildFoldersOptions,\n\t\t\"skipPackagesWithoutTsFiles\" | \"banner\" | \"directories\"\n\t> {\n\tdirectory: string;\n\tnoUpload: boolean;\n\tnewVersion: string;\n\tdomain?: string;\n\tsubdomain?: string;\n\taddress?: string;\n\tservice: string;\n\tauthentication?: Authentication;\n\tpushOnly: boolean;\n\tbanner?: boolean;\n\tprompter: Prompter;\n}\n\nexport const releaseFolder = async (options: ReleaseFolderOptions) => {\n\tconst workspace = detectWorkspace(options.cwd);\n\tconst location = detectPackage(workspace, options.directory);\n\n\tconst { write: writeVersionFile, reset: resetVersionFile } =\n\t\tgetVersionFileHandler(location);\n\n\tconst packageDescription = readPackageCreatorManifest(location);\n\tconst fullPackageName = packageDescription.Package;\n\tconst { domain, subdomain } = parseCreatorPackageName(packageDescription);\n\n\tconst publishDomain = options.domain ?? domain;\n\tconst publishSubdomain = options.subdomain ?? subdomain;\n\n\tconst sharedPackageJson = readWorkspaceNpmManifest(workspace);\n\n\tlet newVersion: PackageVersion;\n\ttry {\n\t\tnewVersion = parseVersionFromString(options.newVersion);\n\t} catch (err) {\n\t\tthrow new Error(`Please enter a version in this format 1.0.0.100`);\n\t}\n\n\tif (newVersion.buildNumber < 100) {\n\t\tnewVersion.preRelease = {\n\t\t\ttype: \"beta\",\n\t\t\tversion: newVersion.buildNumber,\n\t\t};\n\t} else if (newVersion.buildNumber > 100) {\n\t\tnewVersion.preRelease = {\n\t\t\ttype: \"patch\",\n\t\t\tversion: newVersion.buildNumber - 100,\n\t\t};\n\t}\n\n\tif (sharedPackageJson !== undefined) {\n\t\tlogPackageMessage(\n\t\t\tpackageDescription.Package,\n\t\t\t`Running npm install to make sure all dependencies are up to date`,\n\t\t);\n\t\texecSync(`npm install`, { encoding: \"utf-8\", cwd: workspace.path });\n\t}\n\n\tconst binDir = getWorkspaceOutputPath(workspace);\n\tfs.mkdirSync(binDir, { recursive: true });\n\n\tlet assetServerPackageDetails: AssetService.UploadPackageDetails;\n\n\tlet packageNameWithVersion: string;\n\n\t{\n\t\tconst versionWithoutPrelease = newVersion.clone();\n\t\tversionWithoutPrelease.preRelease = undefined;\n\t\tconst newVersionString = versionWithoutPrelease.toVersionString({\n\t\t\tbuildNumber: true,\n\t\t});\n\t\tpackageNameWithVersion = `${packageDescription.Package}_${newVersionString}`;\n\n\t\tassetServerPackageDetails = {\n\t\t\tname: packageDescription.Package,\n\t\t\tversion: newVersionString,\n\t\t};\n\t}\n\n\tconst zipFilePath = path.join(binDir, packageNameWithVersion + \".zip\");\n\n\ttry {\n\t\tif (options.pushOnly) {\n\t\t\tif (!fs.existsSync(zipFilePath)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Expected a zip file to exist at path ${zipFilePath} since pushOnly is specified`,\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tconst gitVersionInformation = await getVersionInformationFromGit(\n\t\t\t\tworkspace,\n\t\t\t\tlocation,\n\t\t\t);\n\n\t\t\twriteVersionFile(fullPackageName, newVersion);\n\n\t\t\tconst bannerText =\n\t\t\t\tsharedPackageJson !== undefined\n\t\t\t\t\t? getWorkspaceBannerText(sharedPackageJson)\n\t\t\t\t\t: undefined;\n\n\t\t\tawait buildFolders({\n\t\t\t\t...options,\n\t\t\t\tdirectories: [location.path],\n\t\t\t\tskipPackagesWithoutTsFiles: true,\n\t\t\t\tbanner: options.banner\n\t\t\t\t\t? {\n\t\t\t\t\t\t\ttext: bannerText,\n\t\t\t\t\t\t\tcommit: gitVersionInformation.commit,\n\t\t\t\t\t\t\tcommitDirty: gitVersionInformation.dirty,\n\t\t\t\t\t\t\tversion: newVersion.toVersionString({\n\t\t\t\t\t\t\t\tbuildNumber: true,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tdate: new Date(Date.now()),\n\t\t\t\t\t\t\t// gitVersionInformation.commitDate\n\t\t\t\t\t\t\t// \t? new Date(gitVersionInformation.commitDate)\n\t\t\t\t\t\t\t// \t: new Date(Date.now()),\n\t\t\t\t\t }\n\t\t\t\t\t: undefined,\n\t\t\t});\n\n\t\t\tnewVersion.preRelease = undefined;\n\n\t\t\ttry {\n\t\t\t\tfs.rmSync(zipFilePath);\n\t\t\t} catch (err) {\n\t\t\t\tif (!isErrorENOENT(err)) {\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst archive = await buildArchiveFromPackage(\n\t\t\t\tworkspace,\n\t\t\t\tlocation,\n\t\t\t\tpackageDescription,\n\t\t\t);\n\n\t\t\tconst zipOutputStream = fs.createWriteStream(zipFilePath);\n\t\t\tawait pipeline(archive.generateNodeStream(), zipOutputStream);\n\t\t}\n\n\t\tif (!options.noUpload) {\n\t\t\tif (!options.authentication) {\n\t\t\t\tthrow new Error(`Expected authentication to be available`);\n\t\t\t}\n\n\t\t\tlogPackageMessage(\n\t\t\t\tpackageDescription.Package,\n\t\t\t\t`Opening connection to asset server`,\n\t\t\t);\n\n\t\t\tconst sessionManager = await createSessionManager({\n\t\t\t\turl: options.service,\n\t\t\t\taddress: options.address,\n\t\t\t\tdomain: publishDomain,\n\t\t\t\tsubDomain: publishSubdomain,\n\t\t\t\tauthentication: options.authentication,\n\t\t\t});\n\n\t\t\tlogPackageMessage(\n\t\t\t\tpackageDescription.Package,\n\t\t\t\t`Making sure all dependencies are available with an acceptable version`,\n\t\t\t);\n\n\t\t\tif (\n\t\t\t\t!(await ensureRequiredVersions(\n\t\t\t\t\tworkspace,\n\t\t\t\t\tpackageDescription,\n\t\t\t\t\tsessionManager,\n\t\t\t\t\toptions.prompter,\n\t\t\t\t))\n\t\t\t) {\n\t\t\t\tlogPackageMessage(\n\t\t\t\t\tpackageDescription.Package,\n\t\t\t\t\t\"AssetService does not yet support required apis for dependency check\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tlogPackageMessage(\n\t\t\t\tpackageDescription.Package,\n\t\t\t\t`Uploading package to ${publishDomain}.${publishSubdomain}`,\n\t\t\t);\n\n\t\t\tawait AssetService.uploadPackage(\n\t\t\t\tsessionManager.getTargetSession(),\n\t\t\t\tassetServerPackageDetails,\n\t\t\t\tzipFilePath,\n\t\t\t);\n\n\t\t\tawait sessionManager.destroy().catch((err) => {\n\t\t\t\tlogPackageMessage(\n\t\t\t\t\tpackageDescription.Package,\n\t\t\t\t\t`Failed to close asset service session(s): ${err}`,\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t} catch (err) {\n\t\tresetVersionFile();\n\t\tthrow err;\n\t}\n\n\tif (newVersion.buildNumber >= 100 && !options.pushOnly) {\n\t\tlogPackageMessage(\n\t\t\tfullPackageName,\n\t\t\ttranslate(\"messages.movingReleaseZip\"),\n\t\t);\n\n\t\tconst zipFileName = `${packageNameWithVersion}.zip`;\n\t\tconst releasesPath = getPackageReleasesDirectory(location);\n\n\t\tfs.mkdirSync(releasesPath, { recursive: true });\n\t\tfs.copyFileSync(zipFilePath, path.join(releasesPath, zipFileName));\n\t}\n};\n\nconst ensureRequiredVersions = async (\n\tworkspaceLocation: WorkspaceLocation,\n\tcreatorPackage: CreatorPackage,\n\tsessionManager: SessionManager,\n\tprompter: Prompter,\n) => {\n\tinterface UploadedPackage\n\t\textends Omit<AssetService.ExistingPackage, \"version\"> {\n\t\tversion: PackageVersion;\n\t}\n\n\tconst targetSession = sessionManager.getTargetSession();\n\n\tconst rawUploadedPackages = await AssetService.getExistingPackages(\n\t\ttargetSession,\n\t);\n\n\tif (rawUploadedPackages === undefined) {\n\t\treturn false;\n\t}\n\n\tconst uploadedPackages = rawUploadedPackages.map(\n\t\t(entry): UploadedPackage => {\n\t\t\tlet version: PackageVersion;\n\n\t\t\ttry {\n\t\t\t\tversion = parseVersionFromNumericVersion(entry.numericVersion);\n\t\t\t} catch (err) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Encountered invalid format for version ${entry.numericVersion}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (version.buildNumber < 100) {\n\t\t\t\tversion.preRelease = {\n\t\t\t\t\ttype: \"beta\",\n\t\t\t\t\tversion: version.buildNumber,\n\t\t\t\t};\n\t\t\t} else if (version.buildNumber > 100) {\n\t\t\t\tversion.preRelease = {\n\t\t\t\t\ttype: \"patch\",\n\t\t\t\t\tversion: version.buildNumber - 100,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...entry,\n\t\t\t\tversion,\n\t\t\t};\n\t\t},\n\t);\n\n\tconst libraries = determineWorkspaceIGLibraries(workspaceLocation);\n\n\tfor (const libraryLocation of libraries) {\n\t\tconst libraryManifest =\n\t\t\treadPublishedPackageNpmManifest(libraryLocation);\n\t\tconst libraryCreatorPackage =\n\t\t\treadPublishedPackageCreatorManifest(libraryLocation);\n\n\t\tif (\n\t\t\tlibraryCreatorPackage === undefined ||\n\t\t\tlibraryManifest.main === undefined ||\n\t\t\tlibraryCreatorPackage.Package === creatorPackage.Package\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst libraryVersion = PackageVersion.extractFromLine(\n\t\t\tlibraryManifest.version,\n\t\t);\n\n\t\tif (libraryVersion.preRelease) {\n\t\t\tlibraryVersion.buildNumber = libraryVersion.preRelease.version;\n\t\t\tlibraryVersion.preRelease = undefined;\n\t\t} else {\n\t\t\tlibraryVersion.buildNumber = 100;\n\t\t}\n\n\t\tlet uploadedPackageInBasics: UploadedPackage | undefined;\n\t\tlet uploadedPackageInTarget: UploadedPackage | undefined;\n\n\t\tfor (const uploadedPackage of uploadedPackages) {\n\t\t\tif (uploadedPackage.scope === libraryCreatorPackage.Package) {\n\t\t\t\tif (uploadedPackage.support) {\n\t\t\t\t\tuploadedPackageInBasics = uploadedPackage;\n\t\t\t\t} else {\n\t\t\t\t\tuploadedPackageInTarget = uploadedPackage;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst validInBasics =\n\t\t\tuploadedPackageInBasics !== undefined &&\n\t\t\t!uploadedPackageInBasics.version.isLesserThan(libraryVersion);\n\t\tconst validInTarget =\n\t\t\tuploadedPackageInTarget !== undefined &&\n\t\t\t!uploadedPackageInTarget.version.isLesserThan(libraryVersion);\n\n\t\tif (validInBasics || validInTarget) {\n\t\t\tif (\n\t\t\t\ttargetSession.subDomain !== \"Basics\" &&\n\t\t\t\t(uploadedPackageInBasics !== undefined ||\n\t\t\t\t\tuploadedPackageInTarget !== undefined)\n\t\t\t) {\n\t\t\t\tlogPackageMessage(\n\t\t\t\t\tcreatorPackage.Package,\n\t\t\t\t\t`Package ${libraryCreatorPackage.Package} is uploaded both for Basics and ${targetSession.subDomain}. The package within ${targetSession.subDomain} will be used.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tlogPackageMessage(\n\t\t\tcreatorPackage.Package,\n\t\t\t`Requested at least version ${libraryVersion.toVersionString({\n\t\t\t\tbuildNumber: true,\n\t\t\t})} for package ${libraryCreatorPackage.Package}`,\n\t\t);\n\n\t\tif (uploadedPackageInBasics) {\n\t\t\tlogPackageMessage(\n\t\t\t\tcreatorPackage.Package,\n\t\t\t\t`Found invalid version ${uploadedPackageInBasics.version.toVersionString(\n\t\t\t\t\t{ buildNumber: true },\n\t\t\t\t)} for package ${libraryCreatorPackage.Package} in Basics`,\n\t\t\t);\n\t\t}\n\t\tif (targetSession.subDomain !== \"Basics\" && uploadedPackageInTarget) {\n\t\t\tlogPackageMessage(\n\t\t\t\tcreatorPackage.Package,\n\t\t\t\t`Found invalid version ${uploadedPackageInTarget.version.toVersionString(\n\t\t\t\t\t{ buildNumber: true },\n\t\t\t\t)} for package ${libraryCreatorPackage.Package} in ${\n\t\t\t\t\ttargetSession.subDomain\n\t\t\t\t}`,\n\t\t\t);\n\t\t}\n\n\t\tconst possibleTargets: string[] = [\"Basics\"];\n\n\t\tif (targetSession.subDomain !== \"Basics\") {\n\t\t\tpossibleTargets.push(targetSession.subDomain);\n\t\t}\n\n\t\tconst uploadTargetScope = await prompter.ask({\n\t\t\tmessage: `Select the scope to upload the required version of ${libraryCreatorPackage.Package} to or select \"skip\" to skip the upload.`,\n\t\t\toptions: [...possibleTargets, \"Skip\"],\n\t\t\tdefault: possibleTargets[0],\n\t\t});\n\n\t\tif (uploadTargetScope === \"Skip\") {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst archive = buildArchiveFromPublishedPackage(\n\t\t\tlibraryLocation,\n\t\t\tlibraryManifest,\n\t\t\tlibraryCreatorPackage,\n\t\t);\n\n\t\tconst newVersionString = libraryVersion.toVersionString({\n\t\t\tbuildNumber: true,\n\t\t});\n\t\tconst packageNameWithVersion = `${libraryCreatorPackage.Package}_${newVersionString}`;\n\n\t\tconst zipFilePath = path.join(\n\t\t\tgetWorkspaceOutputPath(workspaceLocation),\n\t\t\t`${packageNameWithVersion}.zip`,\n\t\t);\n\n\t\ttry {\n\t\t\tfs.rmSync(zipFilePath);\n\t\t} catch (err) {\n\t\t\tif (!isErrorENOENT(err)) {\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\n\t\tconst zipOutputStream = fs.createWriteStream(zipFilePath);\n\t\tawait pipeline(archive.generateNodeStream(), zipOutputStream);\n\n\t\tconst session =\n\t\t\tuploadTargetScope === \"Basics\"\n\t\t\t\t? await sessionManager.getBasicsSession()\n\t\t\t\t: targetSession;\n\n\t\tlogPackageMessage(\n\t\t\tcreatorPackage.Package,\n\t\t\t`Uploading package ${libraryCreatorPackage.Package} with version ${newVersionString} to ${session.domain}.${session.subDomain}`,\n\t\t);\n\n\t\tawait AssetService.uploadPackage(\n\t\t\tsession,\n\t\t\t{\n\t\t\t\tname: libraryCreatorPackage.Package,\n\t\t\t\tversion: newVersionString,\n\t\t\t},\n\t\t\tzipFilePath,\n\t\t);\n\t}\n\n\treturn true;\n};\n\ninterface SessionManager {\n\tgetBasicsSession: () => Promise<AssetService.Session>;\n\tgetTargetSession: () => AssetService.Session;\n\tdestroy: () => Promise<void>;\n}\n\nconst createSessionManager = async (\n\tparams: AssetService.SessionStartParams,\n): Promise<SessionManager> => {\n\tconst targetSession = await AssetService.startSession(params);\n\tlet basicsSession: AssetService.Session | undefined;\n\n\treturn {\n\t\tgetBasicsSession: async () => {\n\t\t\tif (targetSession.subDomain === \"Basics\") {\n\t\t\t\treturn targetSession;\n\t\t\t}\n\n\t\t\tif (basicsSession === undefined) {\n\t\t\t\tbasicsSession = await AssetService.startSession({\n\t\t\t\t\t...params,\n\t\t\t\t\tsubDomain: \"Basics\",\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn basicsSession;\n\t\t},\n\n\t\tgetTargetSession: () => targetSession,\n\n\t\tdestroy: async () => {\n\t\t\tawait AssetService.closeSession(targetSession);\n\n\t\t\tif (basicsSession !== undefined) {\n\t\t\t\tawait AssetService.closeSession(basicsSession);\n\t\t\t}\n\t\t},\n\t};\n};\n"],"names":["PLUGIN_ID","startSession","url","authentication","params","payload","user","undefined","password","license","plugin","type","username","data","session","sessionId","state","axios","post","JSON","stringify","baseURL","Error","domain","subDomain","closeSession","get","uploadPackage","name","version","zipFilePath","uploadPackageToUrl","err","getExistingPackages","validateStatus","status","then","Array","isArray","path","fs","createReadStream","objectBody","parse","response","text","key","buildArchiveFromPublishedPackage","location","manifest","creatorPackage","archive","JSZip","file","index","readPublishedPackageCreatorIndex","main","join","validateSchema","runtimeScripts","notRuntimeScripts","buildArchiveFromPackage","workspaceLocation","packageLocation","subdomain","parseCreatorPackageName","logStep","step","logPackageMessage","Package","Ajv","coerceTypes","allErrors","removeAdditional","useDefaults","compile","libFilePath","getWorkspaceOutputPath","scriptDirectories","scriptsDir","push","readPackageCreatorManifest","RunTime","includes","Type","writePackageCreatorManifest","animations","Map","scriptFilePath","readPackageAnimationList","content","readFileSync","encoding","relativePath","relative","SyntaxError","String","cause","set","Id","libFile","isErrorENOENT","size","library","date","Date","now","getFullYear","scopeParts","Scope","split","scope","createNamespace","minifyResult","terser","minify","ecma","code","creatorIndex","readPackageCreatorIndex","directory","readdirSync","ext","console","error","parts","length","slice","releaseFolder","options","workspace","detectWorkspace","cwd","detectPackage","write","writeVersionFile","reset","resetVersionFile","getVersionFileHandler","packageDescription","fullPackageName","publishDomain","publishSubdomain","sharedPackageJson","readWorkspaceNpmManifest","newVersion","parseVersionFromString","buildNumber","preRelease","execSync","binDir","mkdirSync","recursive","assetServerPackageDetails","packageNameWithVersion","versionWithoutPrelease","clone","newVersionString","toVersionString","pushOnly","existsSync","gitVersionInformation","getVersionInformationFromGit","bannerText","getWorkspaceBannerText","buildFolders","directories","skipPackagesWithoutTsFiles","banner","commit","commitDirty","dirty","rmSync","zipOutputStream","createWriteStream","pipeline","generateNodeStream","noUpload","sessionManager","createSessionManager","service","address","ensureRequiredVersions","prompter","AssetService","getTargetSession","destroy","catch","translate","zipFileName","releasesPath","getPackageReleasesDirectory","copyFileSync","targetSession","rawUploadedPackages","uploadedPackages","map","entry","parseVersionFromNumericVersion","numericVersion","libraries","determineWorkspaceIGLibraries","libraryLocation","libraryManifest","readPublishedPackageNpmManifest","libraryCreatorPackage","readPublishedPackageCreatorManifest","libraryVersion","PackageVersion","extractFromLine","uploadedPackageInBasics","uploadedPackageInTarget","uploadedPackage","support","validInBasics","isLesserThan","validInTarget","possibleTargets","uploadTargetScope","ask","message","default","getBasicsSession","basicsSession"],"mappings":"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"}
|
|
@@ -1,32 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var resolve = require('resolve');
|
|
7
|
-
var cli = require('./cli.js');
|
|
8
|
-
|
|
9
|
-
function _interopNamespaceDefault(e) {
|
|
10
|
-
var n = Object.create(null);
|
|
11
|
-
if (e) {
|
|
12
|
-
Object.keys(e).forEach(function (k) {
|
|
13
|
-
if (k !== 'default') {
|
|
14
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
15
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
16
|
-
enumerable: true,
|
|
17
|
-
get: function () { return e[k]; }
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
n.default = e;
|
|
23
|
-
return Object.freeze(n);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
var path__namespace = /*#__PURE__*/_interopNamespaceDefault(path);
|
|
27
|
-
var fs__namespace = /*#__PURE__*/_interopNamespaceDefault(fs);
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
import resolve from 'resolve';
|
|
5
|
+
import { j as readNpmManifest, i as isErrorENOENT, f as readWorkspaceNpmManifest } from './cli.mjs';
|
|
28
6
|
|
|
29
7
|
const PACKAGE_FILE = "_Package.json";
|
|
8
|
+
const INDEX_FILE = "_Index.json";
|
|
30
9
|
|
|
31
10
|
/**
|
|
32
11
|
* Describes the location of a single published package.
|
|
@@ -41,7 +20,7 @@ const detectPublishedPackageByModuleName = (workspace, name) => {
|
|
|
41
20
|
const manifestPath = resolve.sync(name + "/package.json", {
|
|
42
21
|
basedir: workspace.path
|
|
43
22
|
});
|
|
44
|
-
const dir =
|
|
23
|
+
const dir = path.dirname(manifestPath);
|
|
45
24
|
return detectPublishedPackage(dir);
|
|
46
25
|
};
|
|
47
26
|
const detectPublishedPackage = path => ({
|
|
@@ -49,12 +28,12 @@ const detectPublishedPackage = path => ({
|
|
|
49
28
|
path
|
|
50
29
|
});
|
|
51
30
|
const readPublishedPackageNpmManifest = location => {
|
|
52
|
-
return
|
|
31
|
+
return readNpmManifest(location.path);
|
|
53
32
|
};
|
|
54
33
|
const readPublishedPackageCreatorManifest = location => {
|
|
55
34
|
try {
|
|
56
|
-
const packageJsonPath =
|
|
57
|
-
const packageJson =
|
|
35
|
+
const packageJsonPath = path.join(location.path, PACKAGE_FILE);
|
|
36
|
+
const packageJson = fs.readFileSync(packageJsonPath, {
|
|
58
37
|
encoding: "utf8"
|
|
59
38
|
});
|
|
60
39
|
const result = JSON.parse(packageJson);
|
|
@@ -63,7 +42,7 @@ const readPublishedPackageCreatorManifest = location => {
|
|
|
63
42
|
Scope: result.Scope || result.Package
|
|
64
43
|
};
|
|
65
44
|
} catch (err) {
|
|
66
|
-
if (
|
|
45
|
+
if (isErrorENOENT(err)) {
|
|
67
46
|
return undefined;
|
|
68
47
|
}
|
|
69
48
|
throw err;
|
|
@@ -71,14 +50,14 @@ const readPublishedPackageCreatorManifest = location => {
|
|
|
71
50
|
};
|
|
72
51
|
const readPublishedPackageCreatorIndex = location => {
|
|
73
52
|
try {
|
|
74
|
-
const packageJsonPath =
|
|
75
|
-
const packageJson =
|
|
53
|
+
const packageJsonPath = path.join(location.path, INDEX_FILE);
|
|
54
|
+
const packageJson = fs.readFileSync(packageJsonPath, {
|
|
76
55
|
encoding: "utf8"
|
|
77
56
|
});
|
|
78
57
|
const result = JSON.parse(packageJson);
|
|
79
58
|
return result;
|
|
80
59
|
} catch (err) {
|
|
81
|
-
if (
|
|
60
|
+
if (isErrorENOENT(err)) {
|
|
82
61
|
return undefined;
|
|
83
62
|
}
|
|
84
63
|
throw err;
|
|
@@ -124,7 +103,7 @@ const readPublishedPackageCreatorIndex = location => {
|
|
|
124
103
|
* @returns {PublishedPackageLocation[]}
|
|
125
104
|
*/
|
|
126
105
|
const determineWorkspaceIGLibraries = workspace => {
|
|
127
|
-
const manifest =
|
|
106
|
+
const manifest = readWorkspaceNpmManifest(workspace);
|
|
128
107
|
if (manifest === undefined) {
|
|
129
108
|
return [];
|
|
130
109
|
}
|
|
@@ -158,8 +137,5 @@ const collectIGLibraries = (workspace, manifest) => {
|
|
|
158
137
|
return result;
|
|
159
138
|
};
|
|
160
139
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
exports.readPublishedPackageCreatorManifest = readPublishedPackageCreatorManifest;
|
|
164
|
-
exports.readPublishedPackageNpmManifest = readPublishedPackageNpmManifest;
|
|
165
|
-
//# sourceMappingURL=dependencies.js.map
|
|
140
|
+
export { readPublishedPackageNpmManifest as a, readPublishedPackageCreatorManifest as b, determineWorkspaceIGLibraries as d, readPublishedPackageCreatorIndex as r };
|
|
141
|
+
//# sourceMappingURL=dependencies.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies.mjs","sources":["../src/lib/publishedPackage.ts","../src/lib/dependencies.ts"],"sourcesContent":["import * as path from \"path\";\nimport * as fs from \"fs\";\nimport resolve from \"resolve\";\n\nimport { readNpmManifest } from \"./npmPackage\";\nimport { CreatorPackage, PackageNpmManifest } from \"./package\";\nimport { isErrorENOENT } from \"./error\";\nimport { WorkspaceLocation } from \"./workspace\";\n\nconst PACKAGE_FILE = \"_Package.json\";\nconst INDEX_FILE = \"_Index.json\";\n\n/**\n * Describes the location of a single published package.\n *\n * I.e. node_modules/@intelligentgraphics/3d.ig.gfx.core\n *\n * @export\n * @interface PublishedPackageLocation\n */\nexport interface PublishedPackageLocation {\n\t_kind: \"PublishedPackageLocation\";\n\tpath: string;\n}\n\nexport const detectPublishedPackageByModuleName = (\n\tworkspace: WorkspaceLocation,\n\tname: string,\n) => {\n\tconst manifestPath = resolve.sync(name + \"/package.json\", {\n\t\tbasedir: workspace.path,\n\t});\n\tconst dir = path.dirname(manifestPath);\n\treturn detectPublishedPackage(dir);\n};\n\nexport const detectPublishedPackage = (\n\tpath: string,\n): PublishedPackageLocation => ({\n\t_kind: \"PublishedPackageLocation\",\n\tpath,\n});\n\nexport const readPublishedPackageNpmManifest = (\n\tlocation: PublishedPackageLocation,\n): PackageNpmManifest => {\n\treturn readNpmManifest<PackageNpmManifest>(location.path);\n};\n\nexport const readPublishedPackageCreatorManifest = (\n\tlocation: PublishedPackageLocation,\n): CreatorPackage | undefined => {\n\ttry {\n\t\tconst packageJsonPath = path.join(location.path, PACKAGE_FILE);\n\t\tconst packageJson = fs.readFileSync(packageJsonPath, {\n\t\t\tencoding: \"utf8\",\n\t\t});\n\t\tconst result: Omit<CreatorPackage, \"Scope\"> & { Scope?: string } =\n\t\t\tJSON.parse(packageJson);\n\t\treturn {\n\t\t\t...result,\n\t\t\tScope: result.Scope || result.Package,\n\t\t};\n\t} catch (err) {\n\t\tif (isErrorENOENT(err)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tthrow err;\n\t}\n};\n\nexport const readPublishedPackageCreatorIndex = (\n\tlocation: PublishedPackageLocation,\n) => {\n\ttry {\n\t\tconst packageJsonPath = path.join(location.path, INDEX_FILE);\n\t\tconst packageJson = fs.readFileSync(packageJsonPath, {\n\t\t\tencoding: \"utf8\",\n\t\t});\n\t\tconst result: object = JSON.parse(packageJson);\n\t\treturn result;\n\t} catch (err) {\n\t\tif (isErrorENOENT(err)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tthrow err;\n\t}\n};\n","import { CreatorPackage } from \"./package\";\nimport { PackageJSON } from \"./packageJSON\";\nimport {\n\tdetectPublishedPackageByModuleName,\n\tPublishedPackageLocation,\n\treadPublishedPackageCreatorManifest,\n\treadPublishedPackageNpmManifest,\n} from \"./publishedPackage\";\nimport { readWorkspaceNpmManifest, WorkspaceLocation } from \"./workspace\";\n\n// /**\n// * Determines the implicit dependencies of a an actual data workspace package.\n// *\n// * An implicit dependency is a dependency that is installed for the workspace and has the same runtime environment (evaluator, interactor) as the package.\n// *\n// * @param {WorkspaceLocation} workspace\n// * @param {CreatorPackage} creatorPackage\n// * @returns {PublishedPackageLocation[]}\n// */\n// export const determinePackageImplicitDependencies = (\n// \tworkspace: WorkspaceLocation,\n// \tcreatorPackage: CreatorPackage,\n// ): PublishedPackageLocation[] => {\n// \tconst libraries = determineWorkspaceIGLibraries(workspace);\n\n// \tconst results: PublishedPackageLocation[] = [];\n// \tfor (const librarylocation of libraries) {\n// \t\tconst libraryManifest =\n// \t\t\treadPublishedPackageCreatorManifest(librarylocation);\n\n// \t\tif (\n// \t\t\tlibraryManifest !== undefined &&\n// \t\t\t(libraryManifest.Type === \"Mixed\" ||\n// \t\t\t\tlibraryManifest.RunTime === creatorPackage.RunTime)\n// \t\t) {\n// \t\t\tresults.push(librarylocation);\n// \t\t}\n// \t}\n\n// \treturn results;\n// };\n\n/**\n * Recursively determines all installed ig libraries for a workspace.\n *\n * @param {WorkspaceLocation} workspace\n * @returns {PublishedPackageLocation[]}\n */\nexport const determineWorkspaceIGLibraries = (\n\tworkspace: WorkspaceLocation,\n): PublishedPackageLocation[] => {\n\tconst manifest = readWorkspaceNpmManifest(workspace);\n\n\tif (manifest === undefined) {\n\t\treturn [];\n\t}\n\n\tconst libraries = collectIGLibraries(workspace, manifest);\n\tconst results = new Map<string, PublishedPackageLocation>();\n\n\tfor (const location of libraries) {\n\t\tconst manifest = readPublishedPackageNpmManifest(location);\n\t\tif (!results.has(manifest.name)) {\n\t\t\tresults.set(manifest.name, location);\n\t\t}\n\t}\n\n\treturn Array.from(results.values());\n};\n\nconst collectIGLibraries = (\n\tworkspace: WorkspaceLocation,\n\tmanifest: PackageJSON,\n): PublishedPackageLocation[] => {\n\tif (!manifest.dependencies) {\n\t\treturn [];\n\t}\n\n\tconst runtimeDependencies = Object.getOwnPropertyNames(\n\t\tmanifest.dependencies,\n\t);\n\n\tconst result: PublishedPackageLocation[] = [];\n\n\tfor (const runtimeDependency of runtimeDependencies) {\n\t\tconst location = detectPublishedPackageByModuleName(\n\t\t\tworkspace,\n\t\t\truntimeDependency,\n\t\t);\n\n\t\tconst runtimeManifest = readPublishedPackageNpmManifest(location);\n\n\t\t// packages need to explicitly be marked as ig scriptingLibraries\n\t\tif (runtimeManifest.ig?.scriptingLibrary) {\n\t\t\tresult.push(location);\n\t\t\tresult.push(...collectIGLibraries(workspace, runtimeManifest));\n\t\t}\n\t}\n\n\treturn result;\n};\n"],"names":["PACKAGE_FILE","INDEX_FILE","detectPublishedPackageByModuleName","workspace","name","manifestPath","resolve","sync","basedir","path","dir","dirname","detectPublishedPackage","_kind","readPublishedPackageNpmManifest","location","readNpmManifest","readPublishedPackageCreatorManifest","packageJsonPath","join","packageJson","fs","readFileSync","encoding","result","JSON","parse","Scope","Package","err","isErrorENOENT","undefined","readPublishedPackageCreatorIndex","determineWorkspaceIGLibraries","manifest","readWorkspaceNpmManifest","libraries","collectIGLibraries","results","Map","has","set","Array","from","values","dependencies","runtimeDependencies","Object","getOwnPropertyNames","runtimeDependency","runtimeManifest","ig","scriptingLibrary","push"],"mappings":"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"}
|
package/build/index.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import \"source-map-support/register.js\";\nimport \"v8-compile-cache\";\n\nimport(\"./cli\");\n"],"names":[],"mappings":";;;;AAGA,OAAO,WAAO,oCAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import glob from 'glob';
|
|
3
|
+
|
|
4
|
+
const getPackageTypescriptFiles = location => glob.sync("**/*.ts", {
|
|
5
|
+
absolute: true,
|
|
6
|
+
cwd: location.scriptsDir,
|
|
7
|
+
ignore: "node_modules/**/*"
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
export { getPackageTypescriptFiles as g };
|
|
11
|
+
//# sourceMappingURL=scripts.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts.mjs","sources":["../src/lib/scripts.ts"],"sourcesContent":["import glob from \"glob\";\n\nimport { PackageLocation } from \"./package\";\n\nexport const getPackageTypescriptFiles = (location: PackageLocation) =>\n\tglob.sync(\"**/*.ts\", {\n\t\tabsolute: true,\n\t\tcwd: location.scriptsDir,\n\t\tignore: \"node_modules/**/*\",\n\t});\n"],"names":["getPackageTypescriptFiles","location","glob","sync","absolute","cwd","scriptsDir","ignore"],"mappings":";;;AAIO,MAAMA,yBAAyB,GAAIC,QAAyB,IAClEC,IAAI,CAACC,IAAI,CAAC,SAAS,EAAE;AACpBC,EAAAA,QAAQ,EAAE,IAAI;EACdC,GAAG,EAAEJ,QAAQ,CAACK,UAAU;AACxBC,EAAAA,MAAM,EAAE,mBAAA;AACT,CAAC;;;;"}
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import simpleGit from 'simple-git';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import { i as isErrorENOENT } from './cli.mjs';
|
|
6
|
+
|
|
7
|
+
const getVersionInformationFromGit = async (workspaceLocation, packageLocation) => {
|
|
8
|
+
try {
|
|
9
|
+
var _log$latest, _log$latest2;
|
|
10
|
+
const git = simpleGit({
|
|
11
|
+
baseDir: workspaceLocation.path
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
// check wether the files for a folder are changed
|
|
15
|
+
// if so, mark as dirty
|
|
16
|
+
const diff = await git.diffSummary();
|
|
17
|
+
const dirty = diff.files.some(file => {
|
|
18
|
+
if (file.file.toLowerCase().includes("releases") || file.file.toLowerCase().endsWith("version.ts")) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
const fullPath = path.resolve(workspaceLocation.path, file.file);
|
|
22
|
+
const relativePath = path.relative(packageLocation.path, fullPath);
|
|
23
|
+
return !relativePath.startsWith("..");
|
|
24
|
+
});
|
|
25
|
+
const log = await git.log({
|
|
26
|
+
maxCount: 1
|
|
27
|
+
});
|
|
28
|
+
const commit = !((_log$latest = log.latest) !== null && _log$latest !== void 0 && _log$latest.hash) ? undefined : log.latest.hash.substring(0, 7);
|
|
29
|
+
return {
|
|
30
|
+
commit,
|
|
31
|
+
dirty,
|
|
32
|
+
commitDate: (_log$latest2 = log.latest) === null || _log$latest2 === void 0 ? void 0 : _log$latest2.date
|
|
33
|
+
};
|
|
34
|
+
} catch (err) {
|
|
35
|
+
return {};
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const getWorkspaceBannerText = manifest => {
|
|
40
|
+
var _manifest$packager;
|
|
41
|
+
let bannerText = manifest === null || manifest === void 0 ? void 0 : (_manifest$packager = manifest.packager) === null || _manifest$packager === void 0 ? void 0 : _manifest$packager.banner;
|
|
42
|
+
if (bannerText) {
|
|
43
|
+
const match = bannerText.match(/Copyright \(C\) (\d+)( ?- ?(\d+))?/);
|
|
44
|
+
if (match !== null) {
|
|
45
|
+
const startYear = parseInt(match[1]);
|
|
46
|
+
const endYear = new Date().getFullYear();
|
|
47
|
+
if (startYear !== endYear) {
|
|
48
|
+
bannerText = bannerText.replace(match[0], `Copyright (C) ${startYear} - ${endYear}`);
|
|
49
|
+
} else {
|
|
50
|
+
bannerText = bannerText.replace(match[0], `Copyright (C) ${startYear}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return bannerText;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// Stolen from ig.tools.core
|
|
58
|
+
|
|
59
|
+
class PackageVersion {
|
|
60
|
+
// https://regex101.com/r/90PEY9/1
|
|
61
|
+
static fullTextMatcher = /(\d+)(\.(\d+)(\.(\d+)(\.(\d+))?(-([^\.]+)\.(\d+))?)?)?/;
|
|
62
|
+
static lineMatcher = /^(\d+)(\.(\d+)(\.(\d+)(\.(\d+))?(-([^\.]+)\.(\d+))?)?)?$/;
|
|
63
|
+
static extractFromText(input, description) {
|
|
64
|
+
if (input === undefined) {
|
|
65
|
+
throw new Error(`Can not parse version from undefined`);
|
|
66
|
+
}
|
|
67
|
+
const match = input.match(PackageVersion.fullTextMatcher);
|
|
68
|
+
if (!match) {
|
|
69
|
+
throw new Error(`Could not extract a version from input: ${input}`);
|
|
70
|
+
}
|
|
71
|
+
return PackageVersion.fromMatch(match, description);
|
|
72
|
+
}
|
|
73
|
+
static extractFromLine(input, description) {
|
|
74
|
+
if (input === undefined) {
|
|
75
|
+
throw new Error(`Can not parse version from undefined`);
|
|
76
|
+
}
|
|
77
|
+
const match = input.match(PackageVersion.lineMatcher);
|
|
78
|
+
if (!match) {
|
|
79
|
+
throw new Error(`Could not parse version from input: ${input}`);
|
|
80
|
+
}
|
|
81
|
+
return PackageVersion.fromMatch(match, description);
|
|
82
|
+
}
|
|
83
|
+
static equals(a, b, checkPrerelease = false) {
|
|
84
|
+
if (a.major !== b.major || a.minor !== b.minor || a.patch !== b.patch) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
if (checkPrerelease === false) {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
if (a.preRelease === b.preRelease) {
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
if (a.preRelease === undefined || b.preRelease === undefined) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
return a.preRelease.type === b.preRelease.type && a.preRelease.version === b.preRelease.version;
|
|
97
|
+
}
|
|
98
|
+
static fromMatch([, major,, minor = "0",, patch = "0",, build,, preReleaseType, preReleaseNumber], description) {
|
|
99
|
+
let preRelease = undefined;
|
|
100
|
+
let buildNumber = 100;
|
|
101
|
+
if (preReleaseType && preReleaseNumber) {
|
|
102
|
+
preRelease = {
|
|
103
|
+
type: preReleaseType,
|
|
104
|
+
version: parseInt(preReleaseNumber)
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
if (build) {
|
|
108
|
+
buildNumber = Number(build);
|
|
109
|
+
} else if (description) {
|
|
110
|
+
const descriptionMatch = description.match(/(\d+)\)$/);
|
|
111
|
+
if (descriptionMatch) {
|
|
112
|
+
buildNumber = parseInt(descriptionMatch[1]);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return new PackageVersion(parseInt(major), parseInt(minor), parseInt(patch), preRelease, buildNumber);
|
|
116
|
+
}
|
|
117
|
+
static sort(a, b, ascending = true) {
|
|
118
|
+
const createSortResult = (a, b) => ascending ? a - b : b - a;
|
|
119
|
+
if (a.major !== b.major) {
|
|
120
|
+
return createSortResult(a.major, b.major);
|
|
121
|
+
}
|
|
122
|
+
if (a.minor !== b.minor) {
|
|
123
|
+
return createSortResult(a.minor, b.minor);
|
|
124
|
+
}
|
|
125
|
+
if (a.patch !== b.patch) {
|
|
126
|
+
return createSortResult(a.patch, b.patch);
|
|
127
|
+
}
|
|
128
|
+
return createSortResult(a.preRelease ? a.preRelease.version : 0, b.preRelease ? b.preRelease.version : 0);
|
|
129
|
+
}
|
|
130
|
+
static toNumber(version) {
|
|
131
|
+
return ((version.major * 1000 + version.minor) * 1000 + version.patch) * 1000 + version.buildNumber;
|
|
132
|
+
}
|
|
133
|
+
constructor(major, minor, patch, preRelease, buildNumber) {
|
|
134
|
+
this.major = major;
|
|
135
|
+
this.minor = minor;
|
|
136
|
+
this.patch = patch;
|
|
137
|
+
this.preRelease = preRelease;
|
|
138
|
+
this.buildNumber = buildNumber;
|
|
139
|
+
}
|
|
140
|
+
isPreRelease() {
|
|
141
|
+
return this.preRelease !== undefined;
|
|
142
|
+
}
|
|
143
|
+
clone() {
|
|
144
|
+
return new PackageVersion(this.major, this.minor, this.patch, this.preRelease ? {
|
|
145
|
+
...this.preRelease
|
|
146
|
+
} : undefined, this.buildNumber);
|
|
147
|
+
}
|
|
148
|
+
incrementMajor() {
|
|
149
|
+
this.preRelease = undefined;
|
|
150
|
+
this.patch = 0;
|
|
151
|
+
this.minor = 0;
|
|
152
|
+
this.major++;
|
|
153
|
+
}
|
|
154
|
+
incrementMinor() {
|
|
155
|
+
this.preRelease = undefined;
|
|
156
|
+
this.patch = 0;
|
|
157
|
+
this.minor++;
|
|
158
|
+
}
|
|
159
|
+
incrementPatch() {
|
|
160
|
+
this.preRelease = undefined;
|
|
161
|
+
this.patch++;
|
|
162
|
+
}
|
|
163
|
+
createPreRelease(type) {
|
|
164
|
+
if (!this.preRelease) {
|
|
165
|
+
this.buildNumber = 1;
|
|
166
|
+
} else {
|
|
167
|
+
this.buildNumber++;
|
|
168
|
+
}
|
|
169
|
+
if (this.preRelease && type === this.preRelease.type) {
|
|
170
|
+
this.preRelease.version++;
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
this.preRelease = {
|
|
174
|
+
version: 0,
|
|
175
|
+
type
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
createRelease() {
|
|
179
|
+
this.preRelease = undefined;
|
|
180
|
+
this.buildNumber = 100;
|
|
181
|
+
}
|
|
182
|
+
toVersionString({
|
|
183
|
+
buildNumber
|
|
184
|
+
} = {}) {
|
|
185
|
+
let version = [this.major, this.minor, this.patch].join(".");
|
|
186
|
+
if (buildNumber) {
|
|
187
|
+
version += "." + this.buildNumber;
|
|
188
|
+
}
|
|
189
|
+
if (this.preRelease) {
|
|
190
|
+
version += `-${this.preRelease.type}.${this.preRelease.version}`;
|
|
191
|
+
}
|
|
192
|
+
return version;
|
|
193
|
+
}
|
|
194
|
+
toDescriptionString(packageName) {
|
|
195
|
+
const base = [this.major, this.minor, this.patch].join(".");
|
|
196
|
+
const parts = [packageName, base];
|
|
197
|
+
if (this.preRelease) {
|
|
198
|
+
parts.push(upperCaseFirst(this.preRelease.type));
|
|
199
|
+
parts.push(this.preRelease.version);
|
|
200
|
+
}
|
|
201
|
+
parts.push(`(${base}.${this.buildNumber})`);
|
|
202
|
+
return parts.join(" ");
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Determines wether the version is lesser than the input version
|
|
207
|
+
*
|
|
208
|
+
* @param {PackageVersion} version
|
|
209
|
+
* @returns
|
|
210
|
+
*/
|
|
211
|
+
isLesserThan(version) {
|
|
212
|
+
return PackageVersion.toNumber(this) < PackageVersion.toNumber(version);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Determines wether the version is greater than the input version
|
|
217
|
+
*
|
|
218
|
+
* @param {PackageVersion} version
|
|
219
|
+
* @returns
|
|
220
|
+
*/
|
|
221
|
+
isGreaterThan(version) {
|
|
222
|
+
return PackageVersion.toNumber(this) > PackageVersion.toNumber(version);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const upperCaseFirst = input => {
|
|
226
|
+
return input.slice(0, 1).toUpperCase() + input.slice(1);
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
const parseVersionFromString = input => {
|
|
230
|
+
if (input === undefined) {
|
|
231
|
+
throw new Error(`Can not parse version from undefined`);
|
|
232
|
+
}
|
|
233
|
+
let match;
|
|
234
|
+
let major;
|
|
235
|
+
let minor;
|
|
236
|
+
let patch;
|
|
237
|
+
let build;
|
|
238
|
+
let preReleaseType;
|
|
239
|
+
let preReleaseNumber;
|
|
240
|
+
if (
|
|
241
|
+
// first try to find a full match with build number
|
|
242
|
+
(match = input.match(/(\d+)\.(\d+)\.(\d+)\.(\d+)(-([^\.]+)\.(\d+))?/)) !== null) {
|
|
243
|
+
[, major, minor, patch, build, preReleaseType, preReleaseNumber] = match;
|
|
244
|
+
} else if ((match = input.match(/(\d+)\.(\d+)\.(\d+)(-([^\.]+)\.(\d+))?/)) !== null) {
|
|
245
|
+
[, major, minor, patch,, preReleaseType, preReleaseNumber] = match;
|
|
246
|
+
}
|
|
247
|
+
if (match === null) {
|
|
248
|
+
throw new Error(`Could not parse version from input: ${input}`);
|
|
249
|
+
}
|
|
250
|
+
let preRelease = undefined;
|
|
251
|
+
let buildNumber = 100;
|
|
252
|
+
if (preReleaseType && preReleaseNumber) {
|
|
253
|
+
preRelease = {
|
|
254
|
+
type: preReleaseType,
|
|
255
|
+
version: parseInt(preReleaseNumber)
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
if (build) {
|
|
259
|
+
buildNumber = Number(build);
|
|
260
|
+
} else if (input) {
|
|
261
|
+
const descriptionMatch = input.match(/(\d+)\)$/);
|
|
262
|
+
if (descriptionMatch) {
|
|
263
|
+
buildNumber = parseInt(descriptionMatch[1]);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return new PackageVersion(parseInt(major), parseInt(minor), parseInt(patch), preRelease, buildNumber);
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
// 1000001001 -> 1.0.1.1
|
|
270
|
+
// 1002017001 -> 1.2.17.1
|
|
271
|
+
const parseVersionFromNumericVersion = version => {
|
|
272
|
+
const major = Math.floor(version / 1000000000);
|
|
273
|
+
const minor = Math.floor(version % 1000000000 / 1000000);
|
|
274
|
+
const patch = Math.floor(version % 1000000 / 1000);
|
|
275
|
+
const buildNumber = version % 1000;
|
|
276
|
+
return new PackageVersion(major, minor, patch, undefined, buildNumber);
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
const readStringFromFile = filePath => fs.readFileSync(filePath, {
|
|
280
|
+
encoding: "utf8"
|
|
281
|
+
});
|
|
282
|
+
const readStringFromFileOrUndefined = filePath => {
|
|
283
|
+
try {
|
|
284
|
+
return readStringFromFile(filePath);
|
|
285
|
+
} catch (err) {
|
|
286
|
+
if (!isErrorENOENT(err)) {
|
|
287
|
+
throw err;
|
|
288
|
+
}
|
|
289
|
+
return undefined;
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
// https://regex101.com/r/LtGAu5/1
|
|
294
|
+
const logRegex = /console\.log\(\s*"([\w\s\.\(\)]+)\ *Copyright[\w\s\(\)\.]+(\d{4}|\d{4} - \d{4})([\w\s\(\)\.]+)?",?\s*\)/i;
|
|
295
|
+
const currentYear = new Date(Date.now()).getFullYear();
|
|
296
|
+
const getVersionFileHandler = location => {
|
|
297
|
+
const filePath = path.join(location.scriptsDir, "Version.ts");
|
|
298
|
+
const invalidVersionFile = versionFile => ({
|
|
299
|
+
version: undefined,
|
|
300
|
+
write: (name, newVersion) => {
|
|
301
|
+
const scriptsContent = fs.readdirSync(location.scriptsDir);
|
|
302
|
+
const tsFiles = scriptsContent.filter(file => file.endsWith(".ts"));
|
|
303
|
+
if (tsFiles.length > 0) {
|
|
304
|
+
return createVersionFileWriter([currentYear], "")(name, newVersion);
|
|
305
|
+
}
|
|
306
|
+
},
|
|
307
|
+
reset: () => {
|
|
308
|
+
if (versionFile !== undefined) {
|
|
309
|
+
fs.writeFileSync(filePath, versionFile, {
|
|
310
|
+
encoding: "utf8"
|
|
311
|
+
});
|
|
312
|
+
} else {
|
|
313
|
+
try {
|
|
314
|
+
fs.rmSync(filePath);
|
|
315
|
+
} catch (err) {
|
|
316
|
+
if (!isErrorENOENT(err)) {
|
|
317
|
+
throw err;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
const createVersionFileWriter = (copyright = [currentYear], copyrightStuff = "") => (name, newVersion) => {
|
|
324
|
+
const descriptionText = newVersion.toDescriptionString(name);
|
|
325
|
+
const copyrightText = createYearString(copyright);
|
|
326
|
+
const result = `console.log("${descriptionText}. Copyright (C) ${copyrightText}${copyrightStuff}");`;
|
|
327
|
+
fs.writeFileSync(filePath, result, {
|
|
328
|
+
encoding: "utf-8"
|
|
329
|
+
});
|
|
330
|
+
};
|
|
331
|
+
let rawVersionFile = readStringFromFileOrUndefined(filePath);
|
|
332
|
+
if (rawVersionFile === undefined) {
|
|
333
|
+
return invalidVersionFile(rawVersionFile);
|
|
334
|
+
}
|
|
335
|
+
const versionFile = rawVersionFile.replace(/\n/g, "");
|
|
336
|
+
const match = versionFile.match(logRegex);
|
|
337
|
+
if (!match) {
|
|
338
|
+
return invalidVersionFile(versionFile);
|
|
339
|
+
}
|
|
340
|
+
const [_full, _description, copyright, copyrightStuff] = match;
|
|
341
|
+
const copyrightYears = copyright.match(/^(\d+)( ?- ?(\d+))?$/);
|
|
342
|
+
let years;
|
|
343
|
+
if (copyrightYears === null) {
|
|
344
|
+
years = [currentYear];
|
|
345
|
+
} else {
|
|
346
|
+
years = [Number(copyrightYears[1]), currentYear];
|
|
347
|
+
}
|
|
348
|
+
return {
|
|
349
|
+
write: createVersionFileWriter(years, copyrightStuff),
|
|
350
|
+
reset: () => {
|
|
351
|
+
fs.writeFileSync(filePath, versionFile, {
|
|
352
|
+
encoding: "utf8"
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
};
|
|
357
|
+
const createYearString = years => {
|
|
358
|
+
if (years[1] === undefined || years[0] === years[1]) {
|
|
359
|
+
return years[0].toString();
|
|
360
|
+
}
|
|
361
|
+
return `${years[0]} - ${years[1]}`;
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
export { PackageVersion as P, getVersionInformationFromGit as a, getWorkspaceBannerText as b, parseVersionFromNumericVersion as c, getVersionFileHandler as g, parseVersionFromString as p };
|
|
365
|
+
//# sourceMappingURL=versionFile.mjs.map
|