From 1fa468a3b796bb394ff36e55358328e70fca960b Mon Sep 17 00:00:00 2001 From: Cory Sanin Date: Thu, 6 Nov 2025 00:35:05 -0500 Subject: [PATCH] list package moves --- src/pkgbase.ts | 11 +++++------ test/pkgbase.test.ts | 41 ++++++++++++++++++++++------------------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/src/pkgbase.ts b/src/pkgbase.ts index 884e14a..aa79d0d 100644 --- a/src/pkgbase.ts +++ b/src/pkgbase.ts @@ -21,7 +21,7 @@ interface Actions { interface Result { build: boolean; - move: boolean; + move: PackageInfo[]; delete: PackageInfo[]; actions: Actions; } @@ -57,7 +57,7 @@ async function parse(previous: PathLike, current: PathLike): Promise { const actions = curr?.actions; const result: Result = { build: false, - move: false, + move: [], delete: [], actions, }; @@ -66,10 +66,9 @@ async function parse(previous: PathLike, current: PathLike): Promise { const repo: RepoContents = 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))); @@ -115,5 +114,5 @@ async function tryRead(file: PathLike): Promise { } } -export { parse }; +export { parse, tryRead }; export type { Actions, Result, RepoContents, PkgBase, PackageInfo }; diff --git a/test/pkgbase.test.ts b/test/pkgbase.test.ts index 6a736ff..12863e6 100644 --- a/test/pkgbase.test.ts +++ b/test/pkgbase.test.ts @@ -6,7 +6,7 @@ describe('pkgbase parser', () => { it('can detect an add operation', async () => { const expected: Result = { build: true, - move: false, + move: [], delete: [], actions: { addRepo: 'system-goblins', @@ -25,7 +25,7 @@ describe('pkgbase parser', () => { it('can detect an add operation on a new repo', async () => { const expected: Result = { build: true, - move: false, + move: [], delete: [], actions: { addRepo: 'world', @@ -44,7 +44,7 @@ describe('pkgbase parser', () => { it('can remove dangling packages in an add operation', async () => { const expected: Result = { build: true, - move: false, + move: [], delete: [ { architecture: "x86_64", @@ -70,13 +70,15 @@ describe('pkgbase parser', () => { it('can detect a move operation', async () => { const expected: Result = { build: false, - move: true, - delete: [{ - architecture: "x86_64", - package: "opencascade", - repository: "world-gremlins", - version: "1:7.9.2-1", - }], + move: [ + { + architecture: "x86_64", + package: "opencascade", + repository: "world-gremlins", + version: "1:7.9.2-1", + } + ], + delete: [], actions: { addRepo: 'world', removeRepo: 'world-gremlins', @@ -94,14 +96,7 @@ describe('pkgbase parser', () => { it('can remove dangling packages in a move operation', async () => { const expected: Result = { build: false, - move: true, - delete: [ - { - architecture: "x86_64", - package: "pidgin", - repository: "world", - version: "2.14.14-3", - }, + move: [ { architecture: "x86_64", package: "libpurple", @@ -115,6 +110,14 @@ describe('pkgbase parser', () => { version: "2.14.14-4", } ], + delete: [ + { + architecture: "x86_64", + package: "pidgin", + repository: "world", + version: "2.14.14-3", + } + ], actions: { addRepo: 'world', removeRepo: 'world-gremlins', @@ -132,7 +135,7 @@ describe('pkgbase parser', () => { it('can detect a delete operation', async () => { const expected: Result = { build: false, - move: false, + move: [], delete: [ { architecture: "any",