Skip to content

Commit

Permalink
refactor: add new variable to match all
Browse files Browse the repository at this point in the history
  • Loading branch information
lucaspearson committed Apr 19, 2024
1 parent ed94782 commit 968c47e
Show file tree
Hide file tree
Showing 10 changed files with 59 additions and 13 deletions.
23 changes: 12 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,18 @@ table below) on them and then deleting the matching versions.
### Inputs

| Name | Description | Required | Default |
| ----------------- | ---------------------------------------------------------- | ---------------------- | ------------- |
| `user` | User containing the package(s) | | |
| `organization` | Organization containing the package(s) | | |
| `names` | Names of the package(s) | :heavy_check_mark: | |
| `type` | The type of package (e.g. npm) | :heavy_check_mark: | |
| `semver-pattern` | [Semver](https://semver.org) range of the versions | | |
| `version-pattern` | Regex pattern of the versions | | `^.+$` |
| `keep` | Number of versions to exclude from deletions | | 2 |
| `token` | Token with the necessary scopes to delete package versions | Depends on the package | Set by GitHub |
| `dry-run` | If the action should only print what it would do | | `false` |
| Name | Description | Required | Default |
| ----------------------| -----------------------------------------------------------------| ---------------------- | ------------- |
| `user` | User containing the package(s) | | |
| `organization` | Organization containing the package(s) | | |
| `names` | Names of the package(s) | :heavy_check_mark: | |
| `type` | The type of package (e.g. npm) | :heavy_check_mark: | |
| `semver-pattern` | [Semver](https://semver.org) range of the versions | | |
| `version-pattern` | Regex pattern of the versions | | `^.+$` |
| `version-pattern-all` | Whether to require all versions to match version pattern or some | | false |
| `keep` | Number of versions to exclude from deletions | | 2 |
| `token` | Token with the necessary scopes to delete package versions | Depends on the package | Set by GitHub |
| `dry-run` | If the action should only print what it would do | | `false` |

> :warning: Certain options can not be combined with each other and will lead to errors. These are:
>
Expand Down
6 changes: 6 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,12 @@ inputs:
Regex pattern of the versions.
Defaults to true for all versions.
required: false

version-pattern-all:
description: >-
Whether to require all versions to match version pattern or some.
required: false
default: "false"

keep:
description: >-
Expand Down
1 change: 1 addition & 0 deletions src/input.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ export function getActionInput(): Input {
dryRun: getBooleanInput("dry-run"),
user: getInput("user"),
organization: getInput("organization"),
versionPatternAll: getBooleanInput("version-pattern-all"),
}
}

Expand Down
5 changes: 4 additions & 1 deletion src/process/process.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,10 @@ export function findVersionsToDelete(input: Input, versions: PackageVersion[]):
})
} else if (input.versionPattern) {
return versions.filter((version) => {
return version.names.every((name) => input.versionPattern?.test(name));
return (input.versionPatternAll
? version.names.every((name) => input.versionPattern?.test(name))
: version.names.some((name) => input.versionPattern?.test(name))
)
})
} else {
return versions
Expand Down
1 change: 1 addition & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export type Input = {
dryRun: boolean
user: string
organization: string
versionPatternAll: boolean
}

export type Package = {
Expand Down
4 changes: 4 additions & 0 deletions test/action.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ test("queries and deletes packages", async () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
}

const queryStrategy = mock<QueryStrategy>({ queryPackages: () => Promise.resolve(packages) })
Expand All @@ -54,6 +55,7 @@ test("filters by semver-pattern", async () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
}

const queryStrategy = mock<QueryStrategy>({ queryPackages: () => Promise.resolve(packages) })
Expand Down Expand Up @@ -96,6 +98,7 @@ test("deletes whole package if last version", async () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
}

const queryStrategy = mock<QueryStrategy>({ queryPackages: () => Promise.resolve(packages_single) })
Expand All @@ -117,6 +120,7 @@ test("Does nothing when empty packages are returned", async () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
}

const queryStrategy = mock<QueryStrategy>({ queryPackages: () => Promise.resolve([]) })
Expand Down
3 changes: 3 additions & 0 deletions test/delete/delete.strategy.factory.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ test("decide default delete strategy", () => {
user: "",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
}

expect(decideDeleteStrategy(input)).toBeInstanceOf(UserDeleteStrategy)
Expand All @@ -29,6 +30,7 @@ test("decide rest user delete strategy", () => {
dryRun: false,
user: "user",
organization: "",
versionPatternAll: false,
}

expect(decideDeleteStrategy(input)).toBeInstanceOf(UserDeleteStrategy)
Expand All @@ -44,6 +46,7 @@ test("decide rest organization delete strategy", () => {
dryRun: false,
user: "",
organization: "org",
versionPatternAll: false,
}

expect(decideDeleteStrategy(input)).toBeInstanceOf(OrganizationDeleteStrategy)
Expand Down
14 changes: 14 additions & 0 deletions test/input.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ describe("getActionInput", () => {
INPUT_TOKEN: "token",
INPUT_USER: "user",
"INPUT_VERSION-PATTERN": "\\d+\\.\\d+\\.\\d+-RC\\d+",
"INPUT_VERSION-PATTERN-ALL": "false",
"INPUT_DRY-RUN": "true",
INPUT_TYPE: "npm",
}
Expand All @@ -36,6 +37,7 @@ describe("getActionInput", () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
}

expect(result).toEqual(expected)
Expand All @@ -49,6 +51,7 @@ describe("getActionInput", () => {
INPUT_TOKEN: "token",
INPUT_USER: "user",
"INPUT_SEMVER-PATTERN": "^1.0.0",
"INPUT_VERSION-PATTERN-ALL": "false",
"INPUT_DRY-RUN": "true",
INPUT_TYPE: "npm",
}
Expand All @@ -63,6 +66,7 @@ describe("getActionInput", () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
}

expect(result).toEqual(expected)
Expand All @@ -77,6 +81,7 @@ describe("getActionInput", () => {
INPUT_USER: "user",
INPUT_TYPE: "npm",
"INPUT_DRY-RUN": "true",
"INPUT_VERSION-PATTERN-ALL": "false",
}

const result = getActionInput()
Expand All @@ -88,6 +93,7 @@ describe("getActionInput", () => {
dryRun: true,
user: "user",
organization: "",
versionPatternAll: false,
}

expect(result).toEqual(expected)
Expand Down Expand Up @@ -169,6 +175,7 @@ describe("validateInput", () => {
dryRun: true,
user: "user",
organization: "",
versionPatternAll: false,
}

expect(() => {
Expand All @@ -185,6 +192,7 @@ describe("validateInput", () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
}

expect(() => {
Expand All @@ -203,6 +211,7 @@ describe("validateInput", () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
}

expect(() => {
Expand All @@ -219,6 +228,7 @@ describe("validateInput", () => {
dryRun: true,
user: "user",
organization: "org",
versionPatternAll: false,
}

expect(() => {
Expand All @@ -235,6 +245,7 @@ describe("validateInput", () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
}

expect(() => {
Expand All @@ -251,6 +262,7 @@ describe("validateInput", () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
}

expect(() => {
Expand All @@ -267,6 +279,7 @@ describe("validateInput", () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
}

expect(() => {
Expand All @@ -283,6 +296,7 @@ describe("validateInput", () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
}

expect(() => {
Expand Down
11 changes: 10 additions & 1 deletion test/process/process.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ test("filters correctly", () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
},
[
{
Expand Down Expand Up @@ -55,6 +56,7 @@ test("filters based on semver", () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
},
[
{
Expand Down Expand Up @@ -86,6 +88,7 @@ test("filters based on regex", () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
},
[
{
Expand Down Expand Up @@ -127,6 +130,7 @@ test("filters based on regex release", () => {
user: "user",
organization: "",
type: PackageType.Container,
versionPatternAll: true,
},
[
{
Expand Down Expand Up @@ -168,6 +172,7 @@ test("respects keep", () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
},
[
{
Expand Down Expand Up @@ -207,6 +212,7 @@ test("filters with multiple names", () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
},
[
{
Expand All @@ -227,7 +233,10 @@ test("filters with multiple names", () => {
},
],
)
expect(result).toHaveLength(0)
expect(result).toHaveLength(1)
expect(result[0].name).toEqual("test")
expect(result[0].versions.map((it) => it.id)).toEqual(["b"])
expect(result[0].totalVersions).toEqual(2)
})

const containerTestResponse: Endpoints["GET /users/{username}/packages/{package_type}/{package_name}/versions"]["response"] =
Expand Down
4 changes: 4 additions & 0 deletions test/query/query.strategy.factory.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ test("decide user query strategy", () => {
user: "user",
organization: "",
type: PackageType.Npm,
versionPatternAll: false,
}

expect(decideQueryStrategy(input)).toBeInstanceOf(UserQueryStrategy)
Expand All @@ -29,6 +30,7 @@ test("decide organization query strategy", () => {
user: "",
organization: "org",
type: PackageType.Npm,
versionPatternAll: false,
}

expect(decideQueryStrategy(input)).toBeInstanceOf(OrganizationQueryStrategy)
Expand All @@ -44,6 +46,7 @@ test("decide default query strategy", () => {
dryRun: false,
user: "",
organization: "",
versionPatternAll: false,
}

expect(decideQueryStrategy(input)).toBeInstanceOf(UserQueryStrategy)
Expand All @@ -59,6 +62,7 @@ test("decide rest user strategy", () => {
dryRun: false,
user: "user",
organization: "",
versionPatternAll: false,
}

expect(decideQueryStrategy(input)).toBeInstanceOf(UserQueryStrategy)
Expand Down

0 comments on commit 968c47e

Please sign in to comment.