From 6d8f1d007da2d2c8af7295d6cd9a5bca0b4f9d1a Mon Sep 17 00:00:00 2001 From: Cory Sanin Date: Fri, 7 Nov 2025 00:13:00 -0500 Subject: [PATCH] simplify exports --- distribution/src/pkgbase.js | 5 ++--- distribution/src/pkgbase.js.map | 2 +- src/pkgbase.ts | 17 +++++++---------- src/router.ts | 4 +--- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/distribution/src/pkgbase.js b/distribution/src/pkgbase.js index e09cff0..3263c41 100644 --- a/distribution/src/pkgbase.js +++ b/distribution/src/pkgbase.js @@ -1,6 +1,6 @@ import fsp from 'fs/promises'; import * as YAML from 'yaml'; -async function parse(previous, current) { +export async function parse(previous, current) { const prev = await tryRead(previous); const curr = await tryRead(current); const actions = curr?.actions; @@ -45,7 +45,7 @@ function isAdd(actions) { function isMove(actions) { return !!(actions.removeRepo && actions.addRepo); } -async function tryRead(file) { +export async function tryRead(file) { try { const contents = await fsp.readFile(file, { encoding: 'utf-8' }); return YAML.parse(contents); @@ -54,5 +54,4 @@ async function tryRead(file) { return null; } } -export { parse, tryRead }; //# sourceMappingURL=pkgbase.js.map \ No newline at end of file diff --git a/distribution/src/pkgbase.js.map b/distribution/src/pkgbase.js.map index 319e302..28a608d 100644 --- a/distribution/src/pkgbase.js.map +++ b/distribution/src/pkgbase.js.map @@ -1 +1 @@ -{"version":3,"file":"pkgbase.js","sourceRoot":"","sources":["../../src/pkgbase.ts"],"names":[],"mappings":"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","sourcesContent":["import { type PathLike } from 'fs';\nimport fsp from 'fs/promises';\nimport * as YAML from 'yaml';\n\ninterface PackageInfo {\n package: string;\n repository: string;\n version: string;\n architecture: string;\n}\n\ninterface Actions {\n addRepo: string | null;\n removeRepo: string | null;\n triggersBuild: boolean;\n triggersRebuild: boolean;\n triggersRepoAdd: boolean;\n triggersRepoRemove: boolean;\n triggersNoCheck: boolean;\n}\n\ninterface Result {\n build: boolean;\n move: PackageInfo[];\n delete: PackageInfo[];\n actions: Actions;\n}\n\ninterface RepoContents {\n version: string | null;\n packages: string[];\n debug: string[];\n}\n\ninterface PkgBase {\n actions: Actions;\n team: string;\n repos: {\n \"system-goblins\": RepoContents;\n \"system-gremlins\": RepoContents;\n \"system\": RepoContents;\n \"world-goblins\": RepoContents;\n \"world-gremlins\": RepoContents;\n \"world\": RepoContents;\n \"lib32-goblins\": RepoContents;\n \"lib32-gremlins\": RepoContents;\n \"lib32\": RepoContents;\n \"galaxy-goblins\": RepoContents;\n \"galaxy-gremlins\": RepoContents;\n \"galaxy\": RepoContents;\n }\n}\n\nasync function parse(previous: PathLike, current: PathLike): Promise {\n const prev = await tryRead(previous);\n const curr = await tryRead(current);\n const actions = curr?.actions;\n const result: Result = {\n build: false,\n move: [],\n delete: [],\n actions,\n };\n\n if (isDelete(actions)) {\n const repo: RepoContents = prev.repos[actions.removeRepo];\n result.delete.push(...parseRepoContents(repo, actions.removeRepo));\n }\n else if (prev && isMove(actions)) {\n const moving = result.move = parseRepoContents(curr.repos[actions.addRepo], actions.removeRepo);\n result.delete.push(...getDropped(parseRepoContents(prev.repos[actions.addRepo], actions.addRepo), moving));\n }\n else if ((result.build = isAdd(actions)) && prev) {\n result.delete.push(...getDropped(parseRepoContents(prev.repos[actions.addRepo], actions.addRepo), parseRepoContents(curr.repos[actions.addRepo], actions.addRepo)));\n }\n\n return result;\n}\n\nfunction parseRepoContents(repoContents: RepoContents, repository: string): PackageInfo[] {\n return repoContents.packages.map(p => {\n return {\n version: repoContents.version,\n repository,\n package: p.split(`-${repoContents.version}`)[0],\n architecture: p.split(`${repoContents.version}-`)[1].split('.')[0]\n }\n });\n}\n\nfunction getDropped(oldPackages: PackageInfo[], newPackages: PackageInfo[]): PackageInfo[] {\n return oldPackages.filter(p => newPackages.filter(np => np.package === p.package).length === 0);\n}\n\nfunction isDelete(actions: Actions): boolean {\n return !!(actions.removeRepo && actions.addRepo === null);\n}\n\nfunction isAdd(actions: Actions): boolean {\n return !!(actions.addRepo && actions.removeRepo === null);\n}\n\nfunction isMove(actions: Actions): boolean {\n return !!(actions.removeRepo && actions.addRepo);\n}\n\nasync function tryRead(file: PathLike): Promise {\n try {\n const contents = await fsp.readFile(file, { encoding: 'utf-8' });\n return YAML.parse(contents);\n }\n catch {\n return null;\n }\n}\n\nexport { parse, tryRead };\nexport type { Actions, Result, RepoContents, PkgBase, PackageInfo };\n"]} \ No newline at end of file +{"version":3,"file":"pkgbase.js","sourceRoot":"","sources":["../../src/pkgbase.ts"],"names":[],"mappings":"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","sourcesContent":["import { type PathLike } from 'fs';\nimport fsp from 'fs/promises';\nimport * as YAML from 'yaml';\n\nexport interface PackageInfo {\n package: string;\n repository: string;\n version: string;\n architecture: string;\n}\n\nexport interface Actions {\n addRepo: string | null;\n removeRepo: string | null;\n triggersBuild: boolean;\n triggersRebuild: boolean;\n triggersRepoAdd: boolean;\n triggersRepoRemove: boolean;\n triggersNoCheck: boolean;\n}\n\nexport interface Result {\n build: boolean;\n move: PackageInfo[];\n delete: PackageInfo[];\n actions: Actions;\n}\n\nexport interface RepoContents {\n version: string | null;\n packages: string[];\n debug: string[];\n}\n\nexport interface PkgBase {\n actions: Actions;\n team: string;\n repos: {\n \"system-goblins\": RepoContents;\n \"system-gremlins\": RepoContents;\n \"system\": RepoContents;\n \"world-goblins\": RepoContents;\n \"world-gremlins\": RepoContents;\n \"world\": RepoContents;\n \"lib32-goblins\": RepoContents;\n \"lib32-gremlins\": RepoContents;\n \"lib32\": RepoContents;\n \"galaxy-goblins\": RepoContents;\n \"galaxy-gremlins\": RepoContents;\n \"galaxy\": RepoContents;\n }\n}\n\nexport async function parse(previous: PathLike, current: PathLike): Promise {\n const prev = await tryRead(previous);\n const curr = await tryRead(current);\n const actions = curr?.actions;\n const result: Result = {\n build: false,\n move: [],\n delete: [],\n actions,\n };\n\n if (isDelete(actions)) {\n const repo: RepoContents = prev.repos[actions.removeRepo];\n result.delete.push(...parseRepoContents(repo, actions.removeRepo));\n }\n else if (prev && isMove(actions)) {\n const moving = result.move = parseRepoContents(curr.repos[actions.addRepo], actions.removeRepo);\n result.delete.push(...getDropped(parseRepoContents(prev.repos[actions.addRepo], actions.addRepo), moving));\n }\n else if ((result.build = isAdd(actions)) && prev) {\n result.delete.push(...getDropped(parseRepoContents(prev.repos[actions.addRepo], actions.addRepo), parseRepoContents(curr.repos[actions.addRepo], actions.addRepo)));\n }\n\n return result;\n}\n\nfunction parseRepoContents(repoContents: RepoContents, repository: string): PackageInfo[] {\n return repoContents.packages.map(p => {\n return {\n version: repoContents.version,\n repository,\n package: p.split(`-${repoContents.version}`)[0],\n architecture: p.split(`${repoContents.version}-`)[1].split('.')[0]\n }\n });\n}\n\nfunction getDropped(oldPackages: PackageInfo[], newPackages: PackageInfo[]): PackageInfo[] {\n return oldPackages.filter(p => newPackages.filter(np => np.package === p.package).length === 0);\n}\n\nfunction isDelete(actions: Actions): boolean {\n return !!(actions.removeRepo && actions.addRepo === null);\n}\n\nfunction isAdd(actions: Actions): boolean {\n return !!(actions.addRepo && actions.removeRepo === null);\n}\n\nfunction isMove(actions: Actions): boolean {\n return !!(actions.removeRepo && actions.addRepo);\n}\n\nexport async function tryRead(file: PathLike): Promise {\n try {\n const contents = await fsp.readFile(file, { encoding: 'utf-8' });\n return YAML.parse(contents);\n }\n catch {\n return null;\n }\n}\n"]} \ No newline at end of file diff --git a/src/pkgbase.ts b/src/pkgbase.ts index aa79d0d..e377101 100644 --- a/src/pkgbase.ts +++ b/src/pkgbase.ts @@ -2,14 +2,14 @@ import { type PathLike } from 'fs'; import fsp from 'fs/promises'; import * as YAML from 'yaml'; -interface PackageInfo { +export interface PackageInfo { package: string; repository: string; version: string; architecture: string; } -interface Actions { +export interface Actions { addRepo: string | null; removeRepo: string | null; triggersBuild: boolean; @@ -19,20 +19,20 @@ interface Actions { triggersNoCheck: boolean; } -interface Result { +export interface Result { build: boolean; move: PackageInfo[]; delete: PackageInfo[]; actions: Actions; } -interface RepoContents { +export interface RepoContents { version: string | null; packages: string[]; debug: string[]; } -interface PkgBase { +export interface PkgBase { actions: Actions; team: string; repos: { @@ -51,7 +51,7 @@ interface PkgBase { } } -async function parse(previous: PathLike, current: PathLike): Promise { +export async function parse(previous: PathLike, current: PathLike): Promise { const prev = await tryRead(previous); const curr = await tryRead(current); const actions = curr?.actions; @@ -104,7 +104,7 @@ function isMove(actions: Actions): boolean { return !!(actions.removeRepo && actions.addRepo); } -async function tryRead(file: PathLike): Promise { +export async function tryRead(file: PathLike): Promise { try { const contents = await fsp.readFile(file, { encoding: 'utf-8' }); return YAML.parse(contents); @@ -113,6 +113,3 @@ async function tryRead(file: PathLike): Promise { return null; } } - -export { parse, tryRead }; -export type { Actions, Result, RepoContents, PkgBase, PackageInfo }; diff --git a/src/router.ts b/src/router.ts index c154f06..a7528c2 100644 --- a/src/router.ts +++ b/src/router.ts @@ -15,7 +15,7 @@ interface PackageFile { sha512: string }; -async function main() { +export async function main() { const mode = core.getInput('mode', { required: true }).toLocaleLowerCase() as Mode; if (mode === 'parse') { @@ -67,5 +67,3 @@ async function doParse() { const diff = await parse(previous, current); core.setOutput('parsed-data', JSON.stringify(diff)); } - -export { main };