Compare commits

..
25 Commits
Author SHA1 Message Date
Pavel Zwerschke ccc5c07ed9 Add env path to cache key (#36) 2023-11-14 20:11:14 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 69d34221c7 Bump the dev-dependencies group with 5 updates (#34)
Bumps the dev-dependencies group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.8.10` | `20.9.0` |
| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `6.9.1` | `6.10.0` |
| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `6.9.1` | `6.10.0` |
| [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) | `16.2.0` | `16.3.1` |
| [prettier](https://github.com/prettier/prettier) | `3.0.3` | `3.1.0` |


Updates `@types/node` from 20.8.10 to 20.9.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@typescript-eslint/eslint-plugin` from 6.9.1 to 6.10.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.10.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 6.9.1 to 6.10.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.10.0/packages/parser)

Updates `eslint-plugin-n` from 16.2.0 to 16.3.1
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/16.2.0...16.3.1)

Updates `prettier` from 3.0.3 to 3.1.0
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.0.3...3.1.0)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: eslint-plugin-n
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-13 11:30:34 +00:00
Pavel Zwerschke f5fc2c8748 Enable cache by default (#33) 2023-11-09 15:55:30 +00:00
Pavel Zwerschke b4f12ad354 Remove pixiRunShell variable (#32) 2023-11-09 15:22:45 +00:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> cc9010b767 Bump the dev-dependencies group with 4 updates (#31)
Bumps the dev-dependencies group with 4 updates: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node), [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [eslint](https://github.com/eslint/eslint).


Updates `@types/node` from 20.8.9 to 20.8.10
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@typescript-eslint/eslint-plugin` from 6.9.0 to 6.9.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.9.1/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 6.9.0 to 6.9.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.9.1/packages/parser)

Updates `eslint` from 8.52.0 to 8.53.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.52.0...v8.53.0)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-06 10:10:23 +01:00
dependabot[bot] ed6036947b Bump the dev-dependencies group with 4 updates (#29) 2023-10-30 08:45:08 +00:00
dependabot[bot] 28e30101b7 Bump actions/setup-node from 3 to 4 (#30) 2023-10-30 09:38:05 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 557d81653f Bump the dev-dependencies group with 4 updates (#28)
Bumps the dev-dependencies group with 4 updates: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node), [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [eslint](https://github.com/eslint/eslint).


Updates `@types/node` from 20.8.6 to 20.8.7
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@typescript-eslint/eslint-plugin` from 6.7.5 to 6.8.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.8.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 6.7.5 to 6.8.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.8.0/packages/parser)

Updates `eslint` from 8.51.0 to 8.52.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.51.0...v8.52.0)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-23 11:16:43 +02:00
Pavel Zwerschke a784a3155d Fix typo (#27) 2023-10-17 20:20:48 +00:00
Pavel Zwerschke f19fc8f1fd Add comment about pixi-bin-path for self-hosted (#26) 2023-10-17 16:35:32 +00:00
dependabot[bot] b6cda42ffe Bump the dev-dependencies group with 5 updates (#24) 2023-10-16 09:02:55 +02:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Pavel Zwerschke
5eaef48d51 Bump zod from 3.22.2 to 3.22.4 (#23)
* Bump zod from 3.22.2 to 3.22.4

Bumps [zod](https://github.com/colinhacks/zod) from 3.22.2 to 3.22.4.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Changelog](https://github.com/colinhacks/zod/blob/master/CHANGELOG.md)
- [Commits](https://github.com/colinhacks/zod/compare/v3.22.2...v3.22.4)

---
updated-dependencies:
- dependency-name: zod
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Pavel Zwerschke <pavelzw@gmail.com>
2023-10-09 08:04:41 +00:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> fbf0d0d598 Bump the dev-dependencies group with 4 updates (#22)
Bumps the dev-dependencies group with 4 updates: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node), [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [eslint](https://github.com/eslint/eslint).


Updates `@types/node` from 20.8.2 to 20.8.3
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@typescript-eslint/eslint-plugin` from 6.7.3 to 6.7.4
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.7.4/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 6.7.3 to 6.7.4
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.7.4/packages/parser)

Updates `eslint` from 8.50.0 to 8.51.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.50.0...v8.51.0)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-09 07:54:59 +00:00
Pavel Zwerschke e2bb9e2af8 Add support for --locked and --frozen (#21) 2023-10-03 11:52:52 +00:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 041b177283 Bump the dev-dependencies group with 3 updates (#20)
Bumps the dev-dependencies group with 3 updates: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node), [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser).


Updates `@types/node` from 20.6.5 to 20.8.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@typescript-eslint/eslint-plugin` from 6.7.2 to 6.7.3
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.7.3/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 6.7.2 to 6.7.3
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.7.3/packages/parser)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 07:13:20 +02:00
Pavel Zwerschke c2b1b0900e Add proper auth test (#13) 2023-09-29 14:03:10 +00:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> fa1893576e Bump the dev-dependencies group with 4 updates (#19)
Bumps the dev-dependencies group with 4 updates: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node), [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [eslint](https://github.com/eslint/eslint).


Updates `@types/node` from 20.6.2 to 20.6.5
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@typescript-eslint/eslint-plugin` from 6.7.0 to 6.7.2
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.7.2/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 6.7.0 to 6.7.2
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.7.2/packages/parser)

Updates `eslint` from 8.49.0 to 8.50.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.49.0...v8.50.0)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-25 11:36:59 +00:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Pavel Zwerschke
2d8ad6d40b Bump @actions/core from 1.10.0 to 1.10.1 (#18)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Pavel Zwerschke <pavelzw@gmail.com>
2023-09-18 07:50:14 +00:00
dependabot[bot] 3386b66ca6 Bump the dev-dependencies group with 3 updates (#17) 2023-09-18 08:57:59 +02:00
Pavel Zwerschke f2b00643d1 Improve error messages (#16) 2023-09-13 13:53:07 +00:00
dependabot[bot] baaee6ddca Bump the dev-dependencies group with 1 update (#12) 2023-09-11 08:13:20 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 0588e20b3b Bump actions/checkout from 3 to 4 (#9)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-10 08:49:39 +00:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> cd462a6dae Bump the dev-dependencies group with 4 updates (#10)
Bumps the dev-dependencies group with 4 updates: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node), [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) and [eslint](https://github.com/eslint/eslint).


Updates `@types/node` from 20.5.9 to 20.6.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@typescript-eslint/eslint-plugin` from 6.5.0 to 6.6.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.6.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 6.5.0 to 6.6.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.6.0/packages/parser)

Updates `eslint` from 8.48.0 to 8.49.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.48.0...v8.49.0)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-10 08:41:40 +00:00
Pavel Zwerschke 1004096c21 Migrate to prefix-dev 2023-09-10 10:20:06 +02:00
Pavel Zwerschke 3416289b3a Add shields (#8) 2023-09-09 19:32:59 +00:00
21 changed files with 4006 additions and 506 deletions
+9 -6
View File
@@ -3,21 +3,24 @@ changelog:
labels:
- ignore for release
categories:
- title: New features
- title: 💥 Breaking changes
labels:
- breaking
- title: ✨ New features
labels:
- enhancement
- title: CI
- title: 👷🏻 CI
labels:
- ci
- title: Bug fixes
- title: 🐛 Bug fixes
labels:
- bug
- title: Documentation
- title: 📝 Documentation
labels:
- documentation
- title: Dependency updates
- title: ⬆️ Dependency updates
labels:
- dependencies
- title: Other changes
- title: 🤷🏻 Other changes
labels:
- "*"
+2 -2
View File
@@ -11,7 +11,7 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v2
@@ -19,7 +19,7 @@ jobs:
version: 8
- name: Install Node.js
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
+2 -2
View File
@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v2
@@ -20,7 +20,7 @@ jobs:
version: 8
- name: Install Node.js
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
+1 -1
View File
@@ -12,7 +12,7 @@ jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: Quantco/ui-actions/version-metadata@v1
id: version-metadata
with:
+153
View File
@@ -12,12 +12,17 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
cache: [true, false]
runs-on: ${{ matrix.os }}
name: default ${{ matrix.cache == true && 'with' || 'without' }} cache (${{ matrix.os }})
steps:
- uses: actions/checkout@v4
- name: Move pixi.toml
run: mv test/default/* .
- uses: ./
# check the action logs to see if the cache was used or not
with:
cache: ${{ matrix.cache }}
- run: |
set -o pipefail
pixi info
@@ -48,6 +53,7 @@ jobs:
- uses: ./
with:
run-install: false
cache: false
- run: |
! test -d .pixi
shell: bash
@@ -63,9 +69,42 @@ jobs:
run: mv test/default/* .
- uses: ./
with:
cache: false
pixi-version: v0.1.0
# pixi 0.1.0 doesn't support --locked
locked: false
- run: pixi --version | grep -q "pixi 0.1.0"
frozen:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Move pixi.toml
run: mv test/default/* .
- uses: ./
with:
cache: false
frozen: true
- run: pixi run python --version | grep -q 3.11
locked:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Move pixi.toml
run: mv test/default/* .
- uses: ./
with:
cache: false
locked: true
- run: pixi run python --version | grep -q 3.11
custom-pixi-url:
runs-on: ubuntu-latest
steps:
@@ -74,7 +113,10 @@ jobs:
run: mv test/default/* .
- uses: ./
with:
cache: false
pixi-url: https://github.com/prefix-dev/pixi/releases/download/v0.0.8/pixi-x86_64-unknown-linux-musl
# pixi 0.0.8 doesn't support --locked
locked: false
- run: pixi --version | grep -q "pixi 0.0.8"
custom-manifest-path:
@@ -86,6 +128,7 @@ jobs:
- uses: actions/checkout@v4
- uses: ./
with:
cache: false
manifest-path: test/default/pixi.toml
different-log-level:
@@ -99,6 +142,7 @@ jobs:
run: mv test/default/* .
- uses: ./
with:
cache: false
log-level: v
custom-bin-path:
@@ -112,6 +156,7 @@ jobs:
run: mv test/default/* .
- uses: ./
with:
cache: false
pixi-bin-path: custom-bin/pixi${{ matrix.os == 'windows-latest' && '.exe' || '' }}
- run: |
test -f custom-bin/pixi${{ matrix.os == 'windows-latest' && '.exe' || '' }}
@@ -131,6 +176,7 @@ jobs:
run: mv test/default/* .
- uses: ./
with:
cache: false
auth-host: https://custom-conda-registry.com
auth-token: custom-token
- run: |
@@ -152,6 +198,7 @@ jobs:
run: mv test/default/* .
- uses: ./
with:
cache: false
auth-host: https://custom-conda-registry.com
auth-username: custom-username
auth-password: custom-password
@@ -175,6 +222,7 @@ jobs:
run: mv test/default/* .
- uses: ./
with:
cache: false
auth-host: https://custom-conda-registry.com
auth-conda-token: custom-conda-token
- run: |
@@ -186,6 +234,24 @@ jobs:
# https://github.com/prefix-dev/pixi/issues/330
if: matrix.os == 'ubuntu-latest'
auth-token-install:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Move pixi.toml
run: mv test/auth/* .
- uses: ./
with:
cache: false
auth-host: https://repo.prefix.dev
auth-token: ${{ secrets.PREFIX_DEV_TOKEN }}
- name: Ensure private-package is installed
run: |
test -f .pixi/env/conda-meta/private-package-0.0.1-0.json
pixi-shell:
strategy:
matrix:
@@ -196,6 +262,8 @@ jobs:
- name: Move pixi.toml
run: mv test/default/* .
- uses: ./
with:
cache: false
- run: |
python --version | grep -q "3.11"
shell: pixi run bash {0}
@@ -224,6 +292,7 @@ jobs:
${{ matrix.post-cleanup == 'true' && '! ' || '' }}test -f ~/.pixi/bin/pixi
- uses: ./
with:
cache: false
post-cleanup: ${{ matrix.post-cleanup }}
# ~/.rattler is only created if the user has logged in
auth-host: https://custom-conda-registry.com
@@ -248,6 +317,7 @@ jobs:
${{ matrix.post-cleanup == 'true' && '! ' || '' }}test -f ~/.pixi/bin/pixi
- uses: ./
with:
cache: false
post-cleanup: ${{ matrix.post-cleanup }}
post-cleanup-macos:
@@ -268,6 +338,7 @@ jobs:
${{ matrix.post-cleanup == 'true' && '! ' || '' }}test -f ~/.pixi/bin/pixi
- uses: ./
with:
cache: false
post-cleanup: ${{ matrix.post-cleanup }}
post-cleanup-windows:
@@ -288,6 +359,7 @@ jobs:
${{ matrix.post-cleanup == 'true' && '! ' || '' }}test -f ~/.pixi/bin/pixi
- uses: ./
with:
cache: false
post-cleanup: ${{ matrix.post-cleanup }}
no-lockfile:
@@ -405,3 +477,84 @@ jobs:
# cache-key: test-cache-no-lockfile-${{ github.sha }}-${{ github.run_attempt }}-
# - run: exit 1
# if: success()
# test-incorrect-version:
# runs-on: ${{ matrix.os }}
# strategy:
# fail-fast: false
# matrix:
# os: [windows-latest, ubuntu-latest, macos-latest]
# steps:
# - uses: actions/checkout@v4
# - name: Move pixi files
# run: mv test/default/* .
# - uses: ./
# with:
# pixi-version: 0.1.0
# - run: exit 1
# if: success()
# test-frozen-and-locked:
# runs-on: ${{ matrix.os }}
# strategy:
# fail-fast: false
# matrix:
# os: [windows-latest, ubuntu-latest, macos-latest]
# steps:
# - uses: actions/checkout@v4
# - name: Move pixi files
# run: mv test/default/* .
# - uses: ./
# with:
# pixi-version: v0.5.0
# frozen: true
# locked: true
# - run: exit 1
# if: success()
# test-frozen-no-lockfile:
# runs-on: ${{ matrix.os }}
# strategy:
# fail-fast: false
# matrix:
# os: [windows-latest, ubuntu-latest, macos-latest]
# steps:
# - uses: actions/checkout@v4
# - name: Move pixi files
# run: mv test/no-lockfile/* .
# - uses: ./
# with:
# frozen: true
# - run: exit 1
# if: success()
# test-locked-no-lockfile:
# runs-on: ${{ matrix.os }}
# strategy:
# fail-fast: false
# matrix:
# os: [windows-latest, ubuntu-latest, macos-latest]
# steps:
# - uses: actions/checkout@v4
# - name: Move pixi files
# run: mv test/no-lockfile/* .
# - uses: ./
# with:
# locked: true
# - run: exit 1
# if: success()
# test-lockfile-not-up-to-date:
# runs-on: ${{ matrix.os }}
# strategy:
# fail-fast: false
# matrix:
# os: [windows-latest, ubuntu-latest, macos-latest]
# steps:
# - uses: actions/checkout@v4
# - name: Move pixi files
# run: mv test/lockfile-not-up-to-date/* .
# - uses: ./
# # locked: true is implicit
# - run: exit 1
# if: success()
+52 -15
View File
@@ -1,15 +1,31 @@
# setup-pixi 📦
<h1 align="center">
[![CI](https://github.com/pavelzw/setup-pixi/actions/workflows/test.yml/badge.svg)](https://github.com/pavelzw/setup-pixi/actions/workflows/test.yml)
[![License][license-badge]][license]
[![CI][build-badge]][build]
[![Latest release][latest-release-badge]][releases]
[![Project Chat][chat-badge]][chat-url]
[license-badge]: https://img.shields.io/github/license/prefix-dev/setup-pixi?style=flat-square
[license]: ./LICENSE
[build-badge]: https://img.shields.io/github/actions/workflow/status/prefix-dev/setup-pixi/test.yml?style=flat-square
[build]: https://github.com/prefix-dev/setup-pixi/actions/
[latest-release-badge]: https://img.shields.io/github/v/tag/prefix-dev/setup-pixi?style=flat-square&label=latest&sort=semver
[releases]: https://github.com/prefix-dev/setup-pixi/releases
[chat-badge]: https://img.shields.io/discord/1082332781146800168.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2&style=flat-square
[chat-url]: https://discord.gg/kKV8ZxyzY4
</h1>
# setup-pixi 📦
GitHub Action to set up the [pixi](https://github.com/prefix-dev/pixi) package manager.
## Usage
```yml
- uses: pavelzw/setup-pixi@v0.2.0
- uses: prefix-dev/setup-pixi@v0.3.0
with:
pixi-version: '0.2.0'
pixi-version: v0.5.0
cache: true
auth-host: prefix.dev
auth-token: ${{ secrets.PREFIX_DEV_TOKEN }}
@@ -18,7 +34,7 @@ GitHub Action to set up the [pixi](https://github.com/prefix-dev/pixi) package m
> [!WARNING]
> Since pixi is not yet stable, the API of this action may change between minor versions.
> Please pin the versions of this action to a specific version (i.e., `pavelzw/setup-pixi@v0.2.0`) to avoid breaking changes.
> Please pin the versions of this action to a specific version (i.e., `prefix-dev/setup-pixi@v0.3.0`) to avoid breaking changes.
> You can automatically update the version of this action by using [Dependabot](https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot).
## Features
@@ -27,9 +43,11 @@ To see all available input arguments, see the [`action.yml`](action.yml) file.
### Caching
The action supports caching of the pixi environment. To enable caching, set `cache: true`.
The action supports caching of the pixi environment.
By default, caching is enabled if a `pixi.lock` file is present.
It will then use the `pixi.lock` file to generate a hash of the environment and cache it.
If the cache is hit, the action will skip the installation and use the cached environment.
You can specify the behavior by setting the `cache` input argument.
If you need to customize your cache-key, you can use the `cache-key` input argument.
This will be the prefix of the cache key. The full cache key will be `<cache-key><conda-arch>-<hash>`.
@@ -55,7 +73,7 @@ Specify the token using the `auth-token` input argument.
This form of authentication (bearer token in the request headers) is mainly used at [prefix.dev](https://prefix.dev).
```yml
- uses: pavelzw/setup-pixi@v0.2.0
- uses: prefix-dev/setup-pixi@v0.3.0
with:
auth-host: prefix.dev
auth-token: ${{ secrets.PREFIX_DEV_TOKEN }}
@@ -67,7 +85,7 @@ Specify the username and password using the `auth-username` and `auth-password`
This form of authentication (HTTP Basic Auth) is used in some enterprise environments with [artifactory](https://jfrog.com/artifactory) for example.
```yml
- uses: pavelzw/setup-pixi@v0.2.0
- uses: prefix-dev/setup-pixi@v0.3.0
with:
auth-host: custom-artifactory.com
auth-username: ${{ secrets.PIXI_USERNAME }}
@@ -80,7 +98,7 @@ Specify the conda-token using the `conda-token` input argument.
This form of authentication (token is encoded in URL: `https://my-quetz-instance.com/t/<token>/get/custom-channel`) is used at [anaconda.org](https://anaconda.org) or with [quetz instances](https://github.com/mamba-org/quetz).
```yml
- uses: pavelzw/setup-pixi@v0.2.0
- uses: prefix-dev/setup-pixi@v0.3.0
with:
auth-host: anaconda.org # or my-quetz-instance.com
conda-token: ${{ secrets.CONDA_TOKEN }}
@@ -112,6 +130,21 @@ You can even run python scripts like this:
> This file does not have the executable bit set, so you cannot use `shell: pixi run {0}` directly but instead have to use `shell: pixi run bash {0}`.
> See the [official documentation](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#custom-shell) and [ADR 0277](https://github.com/actions/runner/blob/main/docs/adrs/0277-run-action-shell-options.md) for more information about how the `shell:` input works in GitHub Actions.
### `--frozen` and `--locked`
You can specify whether `setup-pixi` should run `pixi install --frozen` or `pixi install --locked` depending on the `frozen` or the `locked` input argument.
See the [official documentation](https://prefix.dev/docs/pixi/cli#install) for more information about the `--frozen` and `--locked` flags.
```yml
- uses: prefix-dev/setup-pixi@v0.3.0
with:
locked: true
# or
frozen: true
```
If you don't specify anything, the default behavior is to run `pixi install --locked` if a `pixi.lock` file is present and `pixi install` otherwise.
### Debugging
There are two types of debug logging that you can enable.
@@ -122,7 +155,7 @@ The first one is the debug logging of the action itself.
This can be enabled by running the action with the `RUNNER_DEBUG` environment variable set to `true`.
```yml
- uses: pavelzw/setup-pixi@v0.2.0
- uses: prefix-dev/setup-pixi@v0.3.0
env:
RUNNER_DEBUG: true
```
@@ -140,7 +173,7 @@ The second type is the debug logging of the pixi executable.
This can be specified by setting the `log-level` input.
```yml
- uses: pavelzw/setup-pixi@v0.2.0
- uses: prefix-dev/setup-pixi@v0.3.0
with:
# one of `q`, `default`, `v`, `vv`, or `vvv`.
log-level: vvv
@@ -148,9 +181,9 @@ This can be specified by setting the `log-level` input.
If nothing is specified, `setup-pixi` will default to `default` or `vv` depending on if [debug logging is enabled for the action](#debug-logging-of-the-action).
### Post action cleanup
### Self-hosted runners
On self hosted runners, it may happen that some files are persisted between jobs.
On self-hosted runners, it may happen that some files are persisted between jobs.
This can lead to problems or secrets getting leaked between job runs.
To avoid this, you can use the `post-cleanup` input to specify the post cleanup behavior of the action (i.e., what happens _after_ all your commands have been executed).
@@ -163,10 +196,14 @@ If you set `post-cleanup` to `true`, the action will delete the following files:
If nothing is specified, `setup-pixi` will default to `true`.
On self-hosted runners, you also might want to alter the default pixi install location to a temporary location. You can use `pixi-bin-path: ${{ runner.temp }}/bin/pixi` to do this.
```yml
- uses: pavelzw/setup-pixi@v0.2.0
- uses: prefix-dev/setup-pixi@v0.3.0
with:
post-cleanup: false
post-cleanup: true
# ${{ runner.temp }}\Scripts\pixi.exe on Windows
pixi-bin-path: ${{ runner.temp }}/bin/pixi
```
## More examples
+4
View File
@@ -18,6 +18,10 @@ inputs:
description: Path to the manifest file (i.e., `pixi.toml`) to use for the pixi CLI. Defaults to `pixi.toml`.
run-install:
description: Whether to run `pixi install` after setting up the environment. Defaults to `true`.
locked:
description: Whether to use `pixi install --locked`. Defaults to `true` when the lockfile is present, otherwise `false`.
frozen:
description: Whether to use `pixi install --frozen`. Defaults to `false`.
cache:
description: Whether to cache the pixi environment. Defaults to `true`. Only works if `pixi.lock` is present.
cache-key:
Generated Vendored
+147 -64
View File
@@ -33,9 +33,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/utils.js
// node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/utils.js
var require_utils = __commonJS({
"node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/utils.js"(exports) {
"node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/utils.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.toCommandProperties = exports.toCommandValue = void 0;
@@ -65,9 +65,9 @@ var require_utils = __commonJS({
}
});
// node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/command.js
// node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/command.js
var require_command = __commonJS({
"node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/command.js"(exports) {
"node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/command.js"(exports) {
"use strict";
var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0)
@@ -500,9 +500,9 @@ var init_esm_node = __esm({
}
});
// node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/file-command.js
// node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/file-command.js
var require_file_command = __commonJS({
"node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/file-command.js"(exports) {
"node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/file-command.js"(exports) {
"use strict";
var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0)
@@ -1570,9 +1570,9 @@ var require_auth = __commonJS({
}
});
// node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/oidc-utils.js
// node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/oidc-utils.js
var require_oidc_utils = __commonJS({
"node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/oidc-utils.js"(exports) {
"node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/oidc-utils.js"(exports) {
"use strict";
var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) {
function adopt(value) {
@@ -1637,7 +1637,7 @@ var require_oidc_utils = __commonJS({
Error Code : ${error2.statusCode}
Error Message: ${error2.result.message}`);
Error Message: ${error2.message}`);
});
const id_token = (_a2 = res.result) === null || _a2 === void 0 ? void 0 : _a2.value;
if (!id_token) {
@@ -1668,9 +1668,9 @@ var require_oidc_utils = __commonJS({
}
});
// node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/summary.js
// node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/summary.js
var require_summary = __commonJS({
"node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/summary.js"(exports) {
"node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/summary.js"(exports) {
"use strict";
var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) {
function adopt(value) {
@@ -1962,9 +1962,9 @@ var require_summary = __commonJS({
}
});
// node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/path-utils.js
// node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/path-utils.js
var require_path_utils = __commonJS({
"node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/path-utils.js"(exports) {
"node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/path-utils.js"(exports) {
"use strict";
var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0)
@@ -2012,9 +2012,9 @@ var require_path_utils = __commonJS({
}
});
// node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/core.js
// node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/core.js
var require_core = __commonJS({
"node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/core.js"(exports) {
"node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/core.js"(exports) {
"use strict";
var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0)
@@ -2152,15 +2152,15 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
command_1.issue("echo", enabled2 ? "on" : "off");
}
exports.setCommandEcho = setCommandEcho;
function setFailed2(message) {
function setFailed3(message) {
process.exitCode = ExitCode.Failure;
error2(message);
}
exports.setFailed = setFailed2;
function isDebug2() {
exports.setFailed = setFailed3;
function isDebug3() {
return process.env["RUNNER_DEBUG"] === "1";
}
exports.isDebug = isDebug2;
exports.isDebug = isDebug3;
function debug5(message) {
command_1.issueCommand("debug", {}, message);
}
@@ -22602,9 +22602,9 @@ var init_requestPolicy = __esm({
/**
* The main method to implement that manipulates a request/response.
*/
constructor(_nextPolicy, _options) {
constructor(_nextPolicy, _options2) {
this._nextPolicy = _nextPolicy;
this._options = _options;
this._options = _options2;
}
/**
* Get whether or not a log with the provided log level should be logged.
@@ -29352,10 +29352,10 @@ var init_userAgentPolicy = __esm({
init_httpHeaders();
getDefaultUserAgentHeaderName = getDefaultUserAgentKey;
UserAgentPolicy = class extends BaseRequestPolicy {
constructor(_nextPolicy, _options, headerKey, headerValue) {
super(_nextPolicy, _options);
constructor(_nextPolicy, _options2, headerKey, headerValue) {
super(_nextPolicy, _options2);
this._nextPolicy = _nextPolicy;
this._options = _options;
this._options = _options2;
this.headerKey = headerKey;
this.headerValue = headerValue;
}
@@ -30781,7 +30781,7 @@ var init_ProxyTracer = __esm({
ProxyTracer2.prototype.startSpan = function(name, options2, context3) {
return this._getTracer().startSpan(name, options2, context3);
};
ProxyTracer2.prototype.startActiveSpan = function(_name, _options, _context, _fn) {
ProxyTracer2.prototype.startActiveSpan = function(_name, _options2, _context, _fn) {
var tracer = this._getTracer();
return Reflect.apply(tracer.startActiveSpan, tracer, arguments);
};
@@ -30811,7 +30811,7 @@ var init_NoopTracerProvider = __esm({
function() {
function NoopTracerProvider2() {
}
NoopTracerProvider2.prototype.getTracer = function(_name, _version, _options) {
NoopTracerProvider2.prototype.getTracer = function(_name, _version, _options2) {
return new NoopTracer();
};
return NoopTracerProvider2;
@@ -46011,7 +46011,7 @@ var init_Credential = __esm({
* @param _nextPolicy -
* @param _options -
*/
create(_nextPolicy, _options) {
create(_nextPolicy, _options2) {
throw new Error("Method should be implemented in children classes.");
}
};
@@ -57377,15 +57377,18 @@ var require_cache = __commonJS({
var import_promises2 = __toESM(require("fs/promises"));
var import_os3 = __toESM(require("os"));
var import_path3 = __toESM(require("path"));
var import_process2 = require("process");
var core4 = __toESM(require_core());
var import_tool_cache = __toESM(require_tool_cache());
// src/options.ts
var import_path = __toESM(require("path"));
var import_os = __toESM(require("os"));
var import_process = require("process");
var import_fs = require("fs");
var core = __toESM(require_core());
// node_modules/.pnpm/zod@3.22.2/node_modules/zod/lib/index.mjs
// node_modules/.pnpm/zod@3.22.4/node_modules/zod/lib/index.mjs
var util;
(function(util4) {
util4.assertEqual = (val) => val;
@@ -58126,10 +58129,11 @@ var ZodType = class {
};
var cuidRegex = /^c[^\s-]{8,}$/i;
var cuid2Regex = /^[a-z][a-z0-9]*$/;
var ulidRegex = /[0-9A-HJKMNP-TV-Z]{26}/;
var ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/;
var uuidRegex = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i;
var emailRegex = /^([A-Z0-9_+-]+\.?)*[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i;
var emojiRegex = /^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u;
var emailRegex = /^(?!\.)(?!.*\.\.)([A-Z0-9_+-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i;
var _emojiRegex = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;
var emojiRegex;
var ipv4Regex = /^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/;
var ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;
var datetimeRegex = (args) => {
@@ -58163,27 +58167,6 @@ function isValidIP(ip, version3) {
return false;
}
var ZodString = class _ZodString extends ZodType {
constructor() {
super(...arguments);
this._regex = (regex, validation, message) => this.refinement((data) => regex.test(data), {
validation,
code: ZodIssueCode.invalid_string,
...errorUtil.errToObj(message)
});
this.nonempty = (message) => this.min(1, errorUtil.errToObj(message));
this.trim = () => new _ZodString({
...this._def,
checks: [...this._def.checks, { kind: "trim" }]
});
this.toLowerCase = () => new _ZodString({
...this._def,
checks: [...this._def.checks, { kind: "toLowerCase" }]
});
this.toUpperCase = () => new _ZodString({
...this._def,
checks: [...this._def.checks, { kind: "toUpperCase" }]
});
}
_parse(input) {
if (this._def.coerce) {
input.data = String(input.data);
@@ -58268,6 +58251,9 @@ var ZodString = class _ZodString extends ZodType {
status.dirty();
}
} else if (check.kind === "emoji") {
if (!emojiRegex) {
emojiRegex = new RegExp(_emojiRegex, "u");
}
if (!emojiRegex.test(input.data)) {
ctx = this._getOrReturnCtx(input, ctx);
addIssueToContext(ctx, {
@@ -58404,6 +58390,13 @@ var ZodString = class _ZodString extends ZodType {
}
return { status: status.value, value: input.data };
}
_regex(regex, validation, message) {
return this.refinement((data) => regex.test(data), {
validation,
code: ZodIssueCode.invalid_string,
...errorUtil.errToObj(message)
});
}
_addCheck(check) {
return new _ZodString({
...this._def,
@@ -58501,6 +58494,31 @@ var ZodString = class _ZodString extends ZodType {
...errorUtil.errToObj(message)
});
}
/**
* @deprecated Use z.string().min(1) instead.
* @see {@link ZodString.min}
*/
nonempty(message) {
return this.min(1, errorUtil.errToObj(message));
}
trim() {
return new _ZodString({
...this._def,
checks: [...this._def.checks, { kind: "trim" }]
});
}
toLowerCase() {
return new _ZodString({
...this._def,
checks: [...this._def.checks, { kind: "toLowerCase" }]
});
}
toUpperCase() {
return new _ZodString({
...this._def,
checks: [...this._def.checks, { kind: "toUpperCase" }]
});
}
get isDatetime() {
return !!this._def.checks.find((ch) => ch.kind === "datetime");
}
@@ -60965,12 +60983,19 @@ var logLevelSchema = enumType(["q", "default", "v", "vv", "vvv"]);
var PATHS = {
pixiBin: import_path.default.join(import_os.default.homedir(), ".pixi", "bin", `pixi${import_os.default.platform() === "win32" ? ".exe" : ""}`)
};
var parseOrUndefined = (key, schema) => {
var parseOrUndefined = (key, schema, errorMessage) => {
const input = core.getInput(key);
if (input === "") {
return void 0;
}
return schema.parse(input);
const maybeResult = schema.safeParse(input);
if (!maybeResult.success) {
if (!errorMessage) {
throw new Error(`${key} is not valid: ${maybeResult.error.message}`);
}
throw new Error(errorMessage);
}
return maybeResult.data;
};
var parseOrUndefinedJSON = (key, schema) => {
const input = core.getInput(key);
@@ -60989,6 +61014,15 @@ var validateInputs = (inputs) => {
if (inputs.runInstall === false && inputs.cache === true) {
throw new Error("Cannot cache without running install");
}
if (inputs.runInstall === false && inputs.frozen === true) {
throw new Error("Cannot use `frozen: true` when not running install");
}
if (inputs.runInstall === false && inputs.locked === true) {
throw new Error("Cannot use `locked: true` when not running install");
}
if (inputs.locked === true && inputs.frozen === true) {
throw new Error("Cannot use `locked: true` and `frozen: true` at the same time");
}
if (inputs.authUsername && !inputs.authPassword || !inputs.authUsername && inputs.authPassword) {
throw new Error("You need to specify both auth-username and auth-password");
}
@@ -61015,9 +61049,12 @@ var inferOptions = (inputs) => {
const logLevel = inputs.logLevel ?? (core.isDebug() ? "vv" : "default");
const manifestPath = inputs.manifestPath ? import_path.default.resolve(untildify(inputs.manifestPath)) : "pixi.toml";
const pixiLockFile = import_path.default.join(import_path.default.dirname(manifestPath), import_path.default.basename(manifestPath).replace(/\.toml$/, ".lock"));
const cache2 = inputs.cacheKey ? { cacheKeyPrefix: inputs.cacheKey, cacheWrite: inputs.cacheWrite ?? true } : inputs.cache ? { cacheKeyPrefix: "pixi-", cacheWrite: true } : void 0;
const lockFileAvailable = (0, import_fs.existsSync)(pixiLockFile);
core.debug(`lockFileAvailable: ${lockFileAvailable}`);
const cache2 = inputs.cacheKey ? { cacheKeyPrefix: inputs.cacheKey, cacheWrite: inputs.cacheWrite ?? true } : inputs.cache === true || lockFileAvailable && inputs.cache !== false ? { cacheKeyPrefix: "pixi-", cacheWrite: true } : void 0;
const pixiBinPath = inputs.pixiBinPath ? import_path.default.resolve(untildify(inputs.pixiBinPath)) : PATHS.pixiBin;
const pixiRunShell = import_path.default.join(import_path.default.dirname(pixiBinPath), "pixi-shell");
const frozen = inputs.frozen ?? false;
const locked = inputs.locked ?? (lockFileAvailable && !frozen);
const auth = !inputs.authHost ? void 0 : inputs.authToken ? {
host: inputs.authHost,
token: inputs.authToken
@@ -61036,22 +61073,33 @@ var inferOptions = (inputs) => {
manifestPath,
pixiLockFile,
runInstall,
frozen,
locked,
cache: cache2,
pixiBinPath,
pixiRunShell,
auth,
postCleanup
};
};
var assertOptions = (_options) => {
var assertOptions = (_options2) => {
};
var getOptions = () => {
const inputs = {
pixiVersion: parseOrUndefined("pixi-version", unionType([literalType("latest"), stringType().regex(/^v\d+\.\d+\.\d+$/)])),
pixiVersion: parseOrUndefined(
"pixi-version",
unionType([literalType("latest"), stringType().regex(/^v\d+\.\d+\.\d+$/)]),
"pixi-version must either be `latest` or a version string matching `vX.Y.Z`."
),
pixiUrl: parseOrUndefined("pixi-url", stringType().url()),
logLevel: parseOrUndefined("log-level", logLevelSchema),
logLevel: parseOrUndefined(
"log-level",
logLevelSchema,
"log-level must be one of `q`, `default`, `v`, `vv`, `vvv`."
),
manifestPath: parseOrUndefined("manifest-path", stringType()),
runInstall: parseOrUndefinedJSON("run-install", booleanType()),
locked: parseOrUndefinedJSON("locked", booleanType()),
frozen: parseOrUndefinedJSON("frozen", booleanType()),
cache: parseOrUndefinedJSON("cache", booleanType()),
cacheKey: parseOrUndefined("cache-key", stringType()),
cacheWrite: parseOrUndefinedJSON("cache-write", booleanType()),
@@ -61070,7 +61118,23 @@ var getOptions = () => {
assertOptions(options2);
return options2;
};
var options = getOptions();
var _options;
try {
_options = getOptions();
} catch (error2) {
if (core.isDebug()) {
throw error2;
}
if (error2 instanceof Error) {
core.setFailed(error2.message);
(0, import_process.exit)(1);
} else if (typeof error2 === "string") {
core.setFailed(error2);
(0, import_process.exit)(1);
}
throw error2;
}
var options = _options;
// src/util.ts
var import_crypto4 = require("crypto");
@@ -61164,7 +61228,12 @@ var import_promises = __toESM(require("fs/promises"));
var import_path2 = __toESM(require("path"));
var core3 = __toESM(require_core());
var cache = __toESM(require_cache());
var generateCacheKey = async (cacheKeyPrefix) => import_promises.default.readFile(options.pixiLockFile, "utf-8").then((content) => `${cacheKeyPrefix}${getCondaArch()}-${sha256(content)}`).catch((err) => {
var generateCacheKey = async (cacheKeyPrefix) => import_promises.default.readFile(options.pixiLockFile, "utf-8").then((content) => {
const contentsSha = sha256(content);
const lockFileSha = sha256(options.pixiLockFile);
const sha = sha256(contentsSha + lockFileSha);
return `${cacheKeyPrefix}${getCondaArch()}-${sha}`;
}).catch((err) => {
throw new Error(`Failed to generate cache key: ${err}`);
});
var cachePath = import_path2.default.join(import_path2.default.dirname(options.pixiLockFile), ".pixi");
@@ -61251,7 +61320,9 @@ var pixiInstall = async () => {
core4.debug("Skipping pixi install.");
return Promise.resolve();
}
return tryRestoreCache().then((_cacheKey) => execute(pixiCmd("install"))).then(saveCache2);
return tryRestoreCache().then(
(_cacheKey) => execute(pixiCmd(`install${options.frozen ? " --frozen" : ""}${options.locked ? " --locked" : ""}`))
).then(saveCache2);
};
var generateInfo = () => core4.group("pixi info", () => execute(pixiCmd("info")));
var run = async () => {
@@ -61263,7 +61334,19 @@ var run = async () => {
await pixiInstall();
await generateInfo();
};
run().catch((error2) => core4.setFailed(error2.message));
run().catch((error2) => {
if (core4.isDebug()) {
throw error2;
}
if (error2 instanceof Error) {
core4.setFailed(error2.message);
(0, import_process2.exit)(1);
} else if (typeof error2 === "string") {
core4.setFailed(error2);
(0, import_process2.exit)(1);
}
throw error2;
});
/*! Bundled license information:
mime-db/index.js:
Generated Vendored
+130 -54
View File
@@ -33,9 +33,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/utils.js
// node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/utils.js
var require_utils = __commonJS({
"node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/utils.js"(exports) {
"node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/utils.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.toCommandProperties = exports.toCommandValue = void 0;
@@ -65,9 +65,9 @@ var require_utils = __commonJS({
}
});
// node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/command.js
// node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/command.js
var require_command = __commonJS({
"node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/command.js"(exports) {
"node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/command.js"(exports) {
"use strict";
var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0)
@@ -500,9 +500,9 @@ var init_esm_node = __esm({
}
});
// node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/file-command.js
// node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/file-command.js
var require_file_command = __commonJS({
"node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/file-command.js"(exports) {
"node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/file-command.js"(exports) {
"use strict";
var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0)
@@ -1570,9 +1570,9 @@ var require_auth = __commonJS({
}
});
// node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/oidc-utils.js
// node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/oidc-utils.js
var require_oidc_utils = __commonJS({
"node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/oidc-utils.js"(exports) {
"node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/oidc-utils.js"(exports) {
"use strict";
var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) {
function adopt(value) {
@@ -1637,7 +1637,7 @@ var require_oidc_utils = __commonJS({
Error Code : ${error.statusCode}
Error Message: ${error.result.message}`);
Error Message: ${error.message}`);
});
const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;
if (!id_token) {
@@ -1668,9 +1668,9 @@ var require_oidc_utils = __commonJS({
}
});
// node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/summary.js
// node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/summary.js
var require_summary = __commonJS({
"node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/summary.js"(exports) {
"node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/summary.js"(exports) {
"use strict";
var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) {
function adopt(value) {
@@ -1962,9 +1962,9 @@ var require_summary = __commonJS({
}
});
// node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/path-utils.js
// node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/path-utils.js
var require_path_utils = __commonJS({
"node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/path-utils.js"(exports) {
"node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/path-utils.js"(exports) {
"use strict";
var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0)
@@ -2012,9 +2012,9 @@ var require_path_utils = __commonJS({
}
});
// node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/core.js
// node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/core.js
var require_core = __commonJS({
"node_modules/.pnpm/@actions+core@1.10.0/node_modules/@actions/core/lib/core.js"(exports) {
"node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/core.js"(exports) {
"use strict";
var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0)
@@ -2152,15 +2152,15 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
command_1.issue("echo", enabled ? "on" : "off");
}
exports.setCommandEcho = setCommandEcho;
function setFailed(message) {
function setFailed3(message) {
process.exitCode = ExitCode.Failure;
error(message);
}
exports.setFailed = setFailed;
function isDebug2() {
exports.setFailed = setFailed3;
function isDebug3() {
return process.env["RUNNER_DEBUG"] === "1";
}
exports.isDebug = isDebug2;
exports.isDebug = isDebug3;
function debug3(message) {
command_1.issueCommand("debug", {}, message);
}
@@ -2245,14 +2245,17 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
var import_promises = __toESM(require("fs/promises"));
var import_path2 = __toESM(require("path"));
var os3 = __toESM(require("os"));
var import_process2 = require("process");
var core2 = __toESM(require_core());
// src/options.ts
var import_path = __toESM(require("path"));
var import_os = __toESM(require("os"));
var import_process = require("process");
var import_fs = require("fs");
var core = __toESM(require_core());
// node_modules/.pnpm/zod@3.22.2/node_modules/zod/lib/index.mjs
// node_modules/.pnpm/zod@3.22.4/node_modules/zod/lib/index.mjs
var util;
(function(util2) {
util2.assertEqual = (val) => val;
@@ -2993,10 +2996,11 @@ var ZodType = class {
};
var cuidRegex = /^c[^\s-]{8,}$/i;
var cuid2Regex = /^[a-z][a-z0-9]*$/;
var ulidRegex = /[0-9A-HJKMNP-TV-Z]{26}/;
var ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/;
var uuidRegex = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i;
var emailRegex = /^([A-Z0-9_+-]+\.?)*[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i;
var emojiRegex = /^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u;
var emailRegex = /^(?!\.)(?!.*\.\.)([A-Z0-9_+-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i;
var _emojiRegex = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;
var emojiRegex;
var ipv4Regex = /^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/;
var ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;
var datetimeRegex = (args) => {
@@ -3030,27 +3034,6 @@ function isValidIP(ip, version2) {
return false;
}
var ZodString = class _ZodString extends ZodType {
constructor() {
super(...arguments);
this._regex = (regex, validation, message) => this.refinement((data) => regex.test(data), {
validation,
code: ZodIssueCode.invalid_string,
...errorUtil.errToObj(message)
});
this.nonempty = (message) => this.min(1, errorUtil.errToObj(message));
this.trim = () => new _ZodString({
...this._def,
checks: [...this._def.checks, { kind: "trim" }]
});
this.toLowerCase = () => new _ZodString({
...this._def,
checks: [...this._def.checks, { kind: "toLowerCase" }]
});
this.toUpperCase = () => new _ZodString({
...this._def,
checks: [...this._def.checks, { kind: "toUpperCase" }]
});
}
_parse(input) {
if (this._def.coerce) {
input.data = String(input.data);
@@ -3135,6 +3118,9 @@ var ZodString = class _ZodString extends ZodType {
status.dirty();
}
} else if (check.kind === "emoji") {
if (!emojiRegex) {
emojiRegex = new RegExp(_emojiRegex, "u");
}
if (!emojiRegex.test(input.data)) {
ctx = this._getOrReturnCtx(input, ctx);
addIssueToContext(ctx, {
@@ -3271,6 +3257,13 @@ var ZodString = class _ZodString extends ZodType {
}
return { status: status.value, value: input.data };
}
_regex(regex, validation, message) {
return this.refinement((data) => regex.test(data), {
validation,
code: ZodIssueCode.invalid_string,
...errorUtil.errToObj(message)
});
}
_addCheck(check) {
return new _ZodString({
...this._def,
@@ -3368,6 +3361,31 @@ var ZodString = class _ZodString extends ZodType {
...errorUtil.errToObj(message)
});
}
/**
* @deprecated Use z.string().min(1) instead.
* @see {@link ZodString.min}
*/
nonempty(message) {
return this.min(1, errorUtil.errToObj(message));
}
trim() {
return new _ZodString({
...this._def,
checks: [...this._def.checks, { kind: "trim" }]
});
}
toLowerCase() {
return new _ZodString({
...this._def,
checks: [...this._def.checks, { kind: "toLowerCase" }]
});
}
toUpperCase() {
return new _ZodString({
...this._def,
checks: [...this._def.checks, { kind: "toUpperCase" }]
});
}
get isDatetime() {
return !!this._def.checks.find((ch) => ch.kind === "datetime");
}
@@ -5832,12 +5850,19 @@ var logLevelSchema = enumType(["q", "default", "v", "vv", "vvv"]);
var PATHS = {
pixiBin: import_path.default.join(import_os.default.homedir(), ".pixi", "bin", `pixi${import_os.default.platform() === "win32" ? ".exe" : ""}`)
};
var parseOrUndefined = (key, schema) => {
var parseOrUndefined = (key, schema, errorMessage) => {
const input = core.getInput(key);
if (input === "") {
return void 0;
}
return schema.parse(input);
const maybeResult = schema.safeParse(input);
if (!maybeResult.success) {
if (!errorMessage) {
throw new Error(`${key} is not valid: ${maybeResult.error.message}`);
}
throw new Error(errorMessage);
}
return maybeResult.data;
};
var parseOrUndefinedJSON = (key, schema) => {
const input = core.getInput(key);
@@ -5856,6 +5881,15 @@ var validateInputs = (inputs) => {
if (inputs.runInstall === false && inputs.cache === true) {
throw new Error("Cannot cache without running install");
}
if (inputs.runInstall === false && inputs.frozen === true) {
throw new Error("Cannot use `frozen: true` when not running install");
}
if (inputs.runInstall === false && inputs.locked === true) {
throw new Error("Cannot use `locked: true` when not running install");
}
if (inputs.locked === true && inputs.frozen === true) {
throw new Error("Cannot use `locked: true` and `frozen: true` at the same time");
}
if (inputs.authUsername && !inputs.authPassword || !inputs.authUsername && inputs.authPassword) {
throw new Error("You need to specify both auth-username and auth-password");
}
@@ -5882,9 +5916,12 @@ var inferOptions = (inputs) => {
const logLevel = inputs.logLevel ?? (core.isDebug() ? "vv" : "default");
const manifestPath = inputs.manifestPath ? import_path.default.resolve(untildify(inputs.manifestPath)) : "pixi.toml";
const pixiLockFile = import_path.default.join(import_path.default.dirname(manifestPath), import_path.default.basename(manifestPath).replace(/\.toml$/, ".lock"));
const cache = inputs.cacheKey ? { cacheKeyPrefix: inputs.cacheKey, cacheWrite: inputs.cacheWrite ?? true } : inputs.cache ? { cacheKeyPrefix: "pixi-", cacheWrite: true } : void 0;
const lockFileAvailable = (0, import_fs.existsSync)(pixiLockFile);
core.debug(`lockFileAvailable: ${lockFileAvailable}`);
const cache = inputs.cacheKey ? { cacheKeyPrefix: inputs.cacheKey, cacheWrite: inputs.cacheWrite ?? true } : inputs.cache === true || lockFileAvailable && inputs.cache !== false ? { cacheKeyPrefix: "pixi-", cacheWrite: true } : void 0;
const pixiBinPath = inputs.pixiBinPath ? import_path.default.resolve(untildify(inputs.pixiBinPath)) : PATHS.pixiBin;
const pixiRunShell = import_path.default.join(import_path.default.dirname(pixiBinPath), "pixi-shell");
const frozen = inputs.frozen ?? false;
const locked = inputs.locked ?? (lockFileAvailable && !frozen);
const auth = !inputs.authHost ? void 0 : inputs.authToken ? {
host: inputs.authHost,
token: inputs.authToken
@@ -5903,22 +5940,33 @@ var inferOptions = (inputs) => {
manifestPath,
pixiLockFile,
runInstall,
frozen,
locked,
cache,
pixiBinPath,
pixiRunShell,
auth,
postCleanup
};
};
var assertOptions = (_options) => {
var assertOptions = (_options2) => {
};
var getOptions = () => {
const inputs = {
pixiVersion: parseOrUndefined("pixi-version", unionType([literalType("latest"), stringType().regex(/^v\d+\.\d+\.\d+$/)])),
pixiVersion: parseOrUndefined(
"pixi-version",
unionType([literalType("latest"), stringType().regex(/^v\d+\.\d+\.\d+$/)]),
"pixi-version must either be `latest` or a version string matching `vX.Y.Z`."
),
pixiUrl: parseOrUndefined("pixi-url", stringType().url()),
logLevel: parseOrUndefined("log-level", logLevelSchema),
logLevel: parseOrUndefined(
"log-level",
logLevelSchema,
"log-level must be one of `q`, `default`, `v`, `vv`, `vvv`."
),
manifestPath: parseOrUndefined("manifest-path", stringType()),
runInstall: parseOrUndefinedJSON("run-install", booleanType()),
locked: parseOrUndefinedJSON("locked", booleanType()),
frozen: parseOrUndefinedJSON("frozen", booleanType()),
cache: parseOrUndefinedJSON("cache", booleanType()),
cacheKey: parseOrUndefined("cache-key", stringType()),
cacheWrite: parseOrUndefinedJSON("cache-write", booleanType()),
@@ -5937,7 +5985,23 @@ var getOptions = () => {
assertOptions(options2);
return options2;
};
var options = getOptions();
var _options;
try {
_options = getOptions();
} catch (error) {
if (core.isDebug()) {
throw error;
}
if (error instanceof Error) {
core.setFailed(error.message);
(0, import_process.exit)(1);
} else if (typeof error === "string") {
core.setFailed(error);
(0, import_process.exit)(1);
}
throw error;
}
var options = _options;
// src/post.ts
var removeEmptyParentDirs = (dirPath) => {
@@ -5996,5 +6060,17 @@ var run = () => {
core2.debug("Skipping post-cleanup.");
return Promise.resolve();
};
run();
run().catch((error) => {
if (core2.isDebug()) {
throw error;
}
if (error instanceof Error) {
core2.setFailed(error.message);
(0, import_process2.exit)(1);
} else if (typeof error === "string") {
core2.setFailed(error);
(0, import_process2.exit)(1);
}
throw error;
});
//# sourceMappingURL=post.js.map
+13 -12
View File
@@ -1,12 +1,13 @@
{
"name": "setup-pixi",
"version": "0.2.0",
"version": "0.4.1",
"private": true,
"description": "Action to set up the pixi package manager.",
"scripts": {
"build": "tsup",
"dev": "tsup --watch",
"lint": "eslint ./src --ext ts"
"lint": "eslint ./src --ext ts",
"lint:fix": "eslint ./src --ext ts --fix"
},
"repository": {
"type": "git",
@@ -21,25 +22,25 @@
"license": "BSD-3-Clause",
"dependencies": {
"@actions/cache": "^3.2.2",
"@actions/core": "^1.10.0",
"@actions/core": "^1.10.1",
"@actions/exec": "^1.1.1",
"@actions/io": "^1.1.3",
"@actions/tool-cache": "^2.0.1",
"untildify": "^5.0.0",
"zod": "^3.22.2"
"zod": "^3.22.4"
},
"devDependencies": {
"@types/node": "^20.5.9",
"@typescript-eslint/eslint-plugin": "^6.5.0",
"@typescript-eslint/parser": "^6.5.0",
"eslint": "^8.48.0",
"@types/node": "^20.9.0",
"@typescript-eslint/eslint-plugin": "^6.10.0",
"@typescript-eslint/parser": "^6.10.0",
"eslint": "^8.53.0",
"eslint-config-prettier": "^9.0.0",
"eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.28.1",
"eslint-plugin-n": "^16.0.2",
"eslint-plugin-prettier": "^5.0.0",
"eslint-plugin-import": "^2.29.0",
"eslint-plugin-n": "^16.3.1",
"eslint-plugin-prettier": "^5.0.1",
"eslint-plugin-promise": "^6.1.1",
"prettier": "^3.0.3",
"prettier": "^3.1.0",
"tsup": "^7.2.0",
"typescript": "^5.2.2"
}
+389 -324
View File
File diff suppressed because it is too large Load Diff
+8 -1
View File
@@ -8,7 +8,14 @@ import { getCondaArch, sha256 } from './util'
export const generateCacheKey = async (cacheKeyPrefix: string) =>
fs
.readFile(options.pixiLockFile, 'utf-8')
.then((content) => `${cacheKeyPrefix}${getCondaArch()}-${sha256(content)}`)
.then((content) => {
const contentsSha = sha256(content)
// the path to the lock file decides where the pixi env is created (../.pixi/env)
// since conda envs are not relocatable, we need to include the path in the cache key
const lockFileSha = sha256(options.pixiLockFile)
const sha = sha256(contentsSha + lockFileSha)
return `${cacheKeyPrefix}${getCondaArch()}-${sha}`
})
.catch((err) => {
throw new Error(`Failed to generate cache key: ${err}`)
})
+17 -2
View File
@@ -1,6 +1,7 @@
import fs from 'fs/promises'
import os from 'os'
import path from 'path'
import { exit } from 'process'
import * as core from '@actions/core'
import { downloadTool } from '@actions/tool-cache'
import type { PixiSource } from './options'
@@ -53,7 +54,9 @@ const pixiInstall = async () => {
return Promise.resolve()
}
return tryRestoreCache()
.then((_cacheKey) => execute(pixiCmd('install')))
.then((_cacheKey) =>
execute(pixiCmd(`install${options.frozen ? ' --frozen' : ''}${options.locked ? ' --locked' : ''}`))
)
.then(saveCache)
}
@@ -69,4 +72,16 @@ const run = async () => {
await generateInfo()
}
run().catch((error) => core.setFailed(error.message))
run().catch((error) => {
if (core.isDebug()) {
throw error
}
if (error instanceof Error) {
core.setFailed(error.message)
exit(1)
} else if (typeof error === 'string') {
core.setFailed(error)
exit(1)
}
throw error
})
+74 -22
View File
@@ -1,5 +1,7 @@
import path from 'path'
import os from 'os'
import { exit } from 'process'
import { existsSync } from 'fs'
import * as core from '@actions/core'
import * as z from 'zod'
import untildify from 'untildify'
@@ -10,6 +12,8 @@ type Inputs = {
logLevel?: LogLevel
manifestPath?: string
runInstall?: boolean
frozen?: boolean
locked?: boolean
cache?: boolean
cacheKey?: string
cacheWrite?: boolean
@@ -56,9 +60,10 @@ export type Options = Readonly<{
manifestPath: string
pixiLockFile: string
runInstall: boolean
frozen: boolean
locked: boolean
cache?: Cache
pixiBinPath: string
pixiRunShell: string
auth?: Auth
postCleanup: boolean
}>
@@ -70,13 +75,20 @@ export const PATHS = {
pixiBin: path.join(os.homedir(), '.pixi', 'bin', `pixi${os.platform() === 'win32' ? '.exe' : ''}`)
}
const parseOrUndefined = <T>(key: string, schema: z.ZodSchema<T>): T | undefined => {
const parseOrUndefined = <T>(key: string, schema: z.ZodSchema<T>, errorMessage?: string): T | undefined => {
const input = core.getInput(key)
// GitHub actions sets empty inputs to the empty string, but we want undefined
if (input === '') {
return undefined
}
return schema.parse(input)
const maybeResult = schema.safeParse(input)
if (!maybeResult.success) {
if (!errorMessage) {
throw new Error(`${key} is not valid: ${maybeResult.error.message}`)
}
throw new Error(errorMessage)
}
return maybeResult.data
}
const parseOrUndefinedJSON = <T>(key: string, schema: z.ZodSchema<T>): T | undefined => {
@@ -98,6 +110,15 @@ const validateInputs = (inputs: Inputs): void => {
if (inputs.runInstall === false && inputs.cache === true) {
throw new Error('Cannot cache without running install')
}
if (inputs.runInstall === false && inputs.frozen === true) {
throw new Error('Cannot use `frozen: true` when not running install')
}
if (inputs.runInstall === false && inputs.locked === true) {
throw new Error('Cannot use `locked: true` when not running install')
}
if (inputs.locked === true && inputs.frozen === true) {
throw new Error('Cannot use `locked: true` and `frozen: true` at the same time')
}
if ((inputs.authUsername && !inputs.authPassword) || (!inputs.authUsername && inputs.authPassword)) {
throw new Error('You need to specify both auth-username and auth-password')
}
@@ -128,18 +149,21 @@ const inferOptions = (inputs: Inputs): Options => {
const pixiSource = inputs.pixiVersion
? { version: inputs.pixiVersion }
: inputs.pixiUrl
? { url: inputs.pixiUrl }
: { version: 'latest' }
? { url: inputs.pixiUrl }
: { version: 'latest' }
const logLevel = inputs.logLevel ?? (core.isDebug() ? 'vv' : 'default')
const manifestPath = inputs.manifestPath ? path.resolve(untildify(inputs.manifestPath)) : 'pixi.toml'
const pixiLockFile = path.join(path.dirname(manifestPath), path.basename(manifestPath).replace(/\.toml$/, '.lock'))
const lockFileAvailable = existsSync(pixiLockFile)
core.debug(`lockFileAvailable: ${lockFileAvailable}`)
const cache = inputs.cacheKey
? { cacheKeyPrefix: inputs.cacheKey, cacheWrite: inputs.cacheWrite ?? true }
: inputs.cache
? { cacheKeyPrefix: 'pixi-', cacheWrite: true }
: undefined
: inputs.cache === true || (lockFileAvailable && inputs.cache !== false)
? { cacheKeyPrefix: 'pixi-', cacheWrite: true }
: undefined
const pixiBinPath = inputs.pixiBinPath ? path.resolve(untildify(inputs.pixiBinPath)) : PATHS.pixiBin
const pixiRunShell = path.join(path.dirname(pixiBinPath), 'pixi-shell')
const frozen = inputs.frozen ?? false
const locked = inputs.locked ?? (lockFileAvailable && !frozen)
const auth = !inputs.authHost
? undefined
: ((inputs.authToken
@@ -148,15 +172,15 @@ const inferOptions = (inputs: Inputs): Options => {
token: inputs.authToken
}
: inputs.authCondaToken
? {
host: inputs.authHost,
condaToken: inputs.authCondaToken
}
: {
host: inputs.authHost,
username: inputs.authUsername!,
password: inputs.authPassword!
}) as Auth)
? {
host: inputs.authHost,
condaToken: inputs.authCondaToken
}
: {
host: inputs.authHost,
username: inputs.authUsername!,
password: inputs.authPassword!
}) as Auth)
const postCleanup = inputs.postCleanup ?? true
return {
pixiSource,
@@ -164,9 +188,10 @@ const inferOptions = (inputs: Inputs): Options => {
manifestPath,
pixiLockFile,
runInstall,
frozen,
locked,
cache,
pixiBinPath,
pixiRunShell,
auth,
postCleanup
}
@@ -183,11 +208,21 @@ const assertOptions = (_options: Options) => {
const getOptions = () => {
const inputs: Inputs = {
pixiVersion: parseOrUndefined('pixi-version', z.union([z.literal('latest'), z.string().regex(/^v\d+\.\d+\.\d+$/)])),
pixiVersion: parseOrUndefined(
'pixi-version',
z.union([z.literal('latest'), z.string().regex(/^v\d+\.\d+\.\d+$/)]),
'pixi-version must either be `latest` or a version string matching `vX.Y.Z`.'
),
pixiUrl: parseOrUndefined('pixi-url', z.string().url()),
logLevel: parseOrUndefined('log-level', logLevelSchema),
logLevel: parseOrUndefined(
'log-level',
logLevelSchema,
'log-level must be one of `q`, `default`, `v`, `vv`, `vvv`.'
),
manifestPath: parseOrUndefined('manifest-path', z.string()),
runInstall: parseOrUndefinedJSON('run-install', z.boolean()),
locked: parseOrUndefinedJSON('locked', z.boolean()),
frozen: parseOrUndefinedJSON('frozen', z.boolean()),
cache: parseOrUndefinedJSON('cache', z.boolean()),
cacheKey: parseOrUndefined('cache-key', z.string()),
cacheWrite: parseOrUndefinedJSON('cache-write', z.boolean()),
@@ -207,4 +242,21 @@ const getOptions = () => {
return options
}
export const options = getOptions()
let _options: Options
try {
_options = getOptions()
} catch (error) {
if (core.isDebug()) {
throw error
}
if (error instanceof Error) {
core.setFailed(error.message)
exit(1)
} else if (typeof error === 'string') {
core.setFailed(error)
exit(1)
}
throw error
}
export const options = _options
+14 -1
View File
@@ -1,6 +1,7 @@
import fs from 'fs/promises'
import path from 'path'
import * as os from 'os'
import { exit } from 'process'
import * as core from '@actions/core'
import { options } from './options'
@@ -67,4 +68,16 @@ const run = () => {
return Promise.resolve()
}
run()
run().catch((error) => {
if (core.isDebug()) {
throw error
}
if (error instanceof Error) {
core.setFailed(error.message)
exit(1)
} else if (typeof error === 'string') {
core.setFailed(error)
exit(1)
}
throw error
})
+1693
View File
File diff suppressed because it is too large Load Diff
+14
View File
@@ -0,0 +1,14 @@
[project]
name = "test-auth"
version = "0.1.0"
description = "Add a short description here"
authors = ["Pavel"]
channels = ["conda-forge", "https://repo.prefix.dev/setup-pixi-test"]
platforms = ["osx-arm64", "osx-64", "linux-64", "linux-aarch64", "win-64"]
[tasks]
test = "python -c 'print(\"Hello world!\")'"
[dependencies]
python = "3.9.*"
private-package = "*"
File diff suppressed because it is too large Load Diff
+14
View File
@@ -0,0 +1,14 @@
[project]
name = "test-default"
version = "0.1.0"
description = "Add a short description here"
authors = ["Pavel Zwerschke <pavelzw@gmail.com>"]
channels = ["conda-forge"]
platforms = ["linux-64", "osx-64", "osx-arm64", "win-64"]
[tasks]
test = "python -c 'print(\"Hello world!\")'"
[dependencies]
# the lockfile still has python 3.10.*
python = "3.11.*"
+28
View File
@@ -0,0 +1,28 @@
BSD 3-Clause License
Copyright (c) 2023, Pavel Zwerschke
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+28
View File
@@ -0,0 +1,28 @@
package:
name: private-package
version: 0.0.1
build:
noarch: python
script: echo this is a noop
number: 0
requirements:
run:
- python >=3.9
test:
commands:
- echo this is a noop
about:
home: http://github.com/prefix-dev/setup-pixi
license: BSD-3-Clause
license_file: LICENSE
description: |
This is a test package for setup-pixi.
dev_url: http://github.com/prefix-dev/setup-pixi
extra:
recipe-maintainers:
- pavelzw