From e2e5a99d85fba1a092e446ea45fa044384869ba9 Mon Sep 17 00:00:00 2001 From: Cory Sanin Date: Thu, 6 Nov 2025 00:36:58 -0500 Subject: [PATCH] tsc --- distribution/src/pkgbase.js | 9 +++--- distribution/src/pkgbase.js.map | 2 +- distribution/src/router.js | 50 +++++++++++++++++++++++++++++++++ distribution/src/router.js.map | 1 + 4 files changed, 56 insertions(+), 6 deletions(-) create mode 100644 distribution/src/router.js create mode 100644 distribution/src/router.js.map diff --git a/distribution/src/pkgbase.js b/distribution/src/pkgbase.js index 78736cc..e09cff0 100644 --- a/distribution/src/pkgbase.js +++ b/distribution/src/pkgbase.js @@ -6,7 +6,7 @@ async function parse(previous, current) { const actions = curr?.actions; const result = { build: false, - move: false, + move: [], delete: [], actions, }; @@ -14,10 +14,9 @@ async function parse(previous, current) { const repo = prev.repos[actions.removeRepo]; result.delete.push(...parseRepoContents(repo, actions.removeRepo)); } - else if (prev && (result.move = isMove(actions))) { - const moving = parseRepoContents(curr.repos[actions.addRepo], actions.removeRepo); + else if (prev && isMove(actions)) { + const moving = result.move = parseRepoContents(curr.repos[actions.addRepo], actions.removeRepo); result.delete.push(...getDropped(parseRepoContents(prev.repos[actions.addRepo], actions.addRepo), moving)); - result.delete.push(...moving); } else if ((result.build = isAdd(actions)) && prev) { result.delete.push(...getDropped(parseRepoContents(prev.repos[actions.addRepo], actions.addRepo), parseRepoContents(curr.repos[actions.addRepo], actions.addRepo))); @@ -55,5 +54,5 @@ async function tryRead(file) { return null; } } -export { parse }; +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 64cc153..319e302 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: boolean;\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: false,\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 && (result.move = isMove(actions))) {\n const moving = parseRepoContents(curr.repos[actions.addRepo], actions.removeRepo);\n result.delete.push(...getDropped(parseRepoContents(prev.repos[actions.addRepo], actions.addRepo), moving));\n result.delete.push(...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 };\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\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 diff --git a/distribution/src/router.js b/distribution/src/router.js new file mode 100644 index 0000000..bb186c6 --- /dev/null +++ b/distribution/src/router.js @@ -0,0 +1,50 @@ +import * as core from '@actions/core'; +import { context } from '@actions/github'; +import ky from 'ky'; +import { parse } from './pkgbase.js'; +; +async function main() { + const mode = core.getInput('mode', { required: true }).toLocaleLowerCase(); + if (mode === 'parse') { + await doParse(); + return; + } + const parsedData = JSON.parse(core.getInput('parsed-data', { required: true })); + const username = core.getInput('username', { required: true }); + const token = core.getInput('token', { required: true }); + const headers = { + Authorization: `Basic ${btoa(`${username}:${token}`)}` + }; + if (mode === 'move') { + for (const pkg of parsedData.move) { + const filename = getFilename(pkg); + const files = await ky.get(`${context.serverUrl}/api/v1/packages/${context.repo.owner}/arch/${pkg.package}/${pkg.version}/files`).json(); + const match = files.filter(f => f.name === filename); + if (match.length !== 1) { + throw new Error(`Expected one matching package, found ${match.length}`); + } + const packageUrl = `${context.serverUrl}/${context.repo.owner}/-/packages/arch/${pkg.package}/${pkg.version}/files/${match[0].id}`; + // const req = (await ky.get(packageUrl)).body.pipeThrough; + } + parsedData.delete.push(...parsedData.move); + } + for (const pkg of parsedData.delete) { + await ky.delete(`${context.serverUrl}/api/packages/${context.repo.owner}/arch/${pkg.repository}/${pkg.package}/${pkg.version}/${pkg.architecture}`, { + headers + }); + } +} +function getFilename(pkg) { + return `${pkg.package}-${pkg.version}-${pkg.architecture}.pkg.tar.zst`; +} +function getCurrent() { + return core.getInput('current', { required: true }); +} +async function doParse() { + const previous = core.getInput('previous', { required: true }); + const current = getCurrent(); + const diff = await parse(previous, current); + core.setOutput('parsed-data', JSON.stringify(diff)); +} +export { main }; +//# sourceMappingURL=router.js.map \ No newline at end of file diff --git a/distribution/src/router.js.map b/distribution/src/router.js.map new file mode 100644 index 0000000..9c2d32a --- /dev/null +++ b/distribution/src/router.js.map @@ -0,0 +1 @@ +{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"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","sourcesContent":["import * as core from '@actions/core'\nimport { context } from '@actions/github'\nimport ky from 'ky';\nimport { parse, type Result, type PackageInfo } from './pkgbase.js';\n\ntype Mode = 'parse' | 'move' | 'delete';\n\ninterface PackageFile {\n id: number,\n size: number,\n name: string,\n md5: string,\n sha1: string,\n sha256: string,\n sha512: string\n};\n\nasync function main() {\n const mode = core.getInput('mode', { required: true }).toLocaleLowerCase() as Mode;\n\n if (mode === 'parse') {\n await doParse();\n return;\n }\n const parsedData: Result = JSON.parse(core.getInput('parsed-data', { required: true }));\n const username = core.getInput('username', { required: true });\n const token = core.getInput('token', { required: true });\n const headers = {\n Authorization: `Basic ${btoa(`${username}:${token}`)}`\n }\n if (mode === 'move') {\n for (const pkg of parsedData.move) {\n const filename = getFilename(pkg);\n const files = await ky.get(`${context.serverUrl}/api/v1/packages/${context.repo.owner}/arch/${pkg.package}/${pkg.version}/files`).json();\n const match = files.filter(f => f.name === filename);\n if (match.length !== 1) {\n throw new Error(`Expected one matching package, found ${match.length}`);\n }\n const packageUrl = `${context.serverUrl}/${context.repo.owner}/-/packages/arch/${pkg.package}/${pkg.version}/files/${match[0].id}`;\n // const req = (await ky.get(packageUrl)).body.pipeThrough;\n }\n parsedData.delete.push(...parsedData.move);\n }\n\n for (const pkg of parsedData.delete) {\n await ky.delete(`${context.serverUrl}/api/packages/${context.repo.owner}/arch/${pkg.repository}/${pkg.package}/${pkg.version}/${pkg.architecture}`, {\n headers\n });\n }\n}\n\nfunction getFilename(pkg: PackageInfo) {\n return `${pkg.package}-${pkg.version}-${pkg.architecture}.pkg.tar.zst`;\n}\n\nfunction getCurrent(): string {\n return core.getInput('current', { required: true });\n}\n\nasync function doParse() {\n const previous = core.getInput('previous', { required: true });\n const current = getCurrent();\n const diff = await parse(previous, current);\n core.setOutput('parsed-data', JSON.stringify(diff));\n}\n\nexport { main };\n"]} \ No newline at end of file