Compare commits

...
32 Commits
Author SHA1 Message Date
Pavel Zwerschke 19b5e6071f Fix cache-write behavior (#76) 2024-02-04 11:01:53 +01:00
Pavel Zwerschke afa1d6a5d1 Add warning about caching with multi-envs (#75) 2024-02-02 20:42:38 +00:00
Pavel Zwerschke 52708b32f2 Fix typos (#74) 2024-02-02 20:29:14 +00:00
Pavel Zwerschke c2a7a27098 Add support for multiple envs (#70) 2024-02-01 16:06:26 +01:00
Pavel Zwerschke ad0427dce9 Add pixi list to output (#69) 2024-02-01 14:40:22 +00:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Pavel Zwerschke
77992cdabd Bump the dependencies group with 7 updates (#73)
* Bump the dependencies group with 7 updates

Bumps the dependencies group with 7 updates:

| Package | From | To |
| --- | --- | --- |
| [@actions/cache](https://github.com/actions/toolkit/tree/HEAD/packages/cache) | `3.2.2` | `3.2.3` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.10.6` | `20.11.14` |
| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `6.16.0` | `6.20.0` |
| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `6.16.0` | `6.20.0` |
| [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) | `16.6.0` | `16.6.2` |
| [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) | `5.1.2` | `5.1.3` |
| [prettier](https://github.com/prettier/prettier) | `3.1.1` | `3.2.4` |


Updates `@actions/cache` from 3.2.2 to 3.2.3
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/cache)

Updates `@types/node` from 20.10.6 to 20.11.14
- [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.16.0 to 6.20.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.20.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 6.16.0 to 6.20.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.20.0/packages/parser)

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

Updates `eslint-plugin-prettier` from 5.1.2 to 5.1.3
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v5.1.2...v5.1.3)

Updates `prettier` from 3.1.1 to 3.2.4
- [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.1.1...3.2.4)

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

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

* build

---------

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>
2024-02-01 09:55:06 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> a07becb301 Bump peter-evans/create-pull-request from 5.0.2 to 6.0.0 (#72)
Bumps the dependencies group with 1 update: [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request).


Updates `peter-evans/create-pull-request` from 5.0.2 to 6.0.0
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/153407881ec5c347639a548ade7d8ad1d6740e38...b1ddad2c994a25fbc81a28b3ec0e368bb2021c50)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-01 08:28:33 +01:00
Pavel Zwerschke 3f5ab780ba Add more tests (#71) 2024-02-01 00:16:28 +01:00
Pavel Zwerschke ca3b9ac762 Add cwd sha to cache key (#68) 2024-01-19 06:56:38 +01:00
Pavel Zwerschke b0a2ad1b73 Use pixi sha for cache (#67) 2024-01-18 23:42:19 +02:00
Pavel Zwerschke d2ec573e39 Fix failing auth tests (#64) 2024-01-10 12:24:10 +00:00
github-actions[bot] 364fd4a471 Reference latest Pixi version in README (#63) 2024-01-08 08:31:11 +02:00
dependabot[bot] d3921e201b Bump the dependencies group with 5 updates (#62) 2024-01-01 08:23:49 +01:00
dependabot[bot] da13ca0475 Bump the dependencies group with 5 updates (#61) 2023-12-18 07:27:04 +00:00
Pavel Zwerschke aaf4a7974f Update dependabot configuration (#60) 2023-12-18 07:20:29 +00:00
dependabot[bot] 93dbcae723 Bump actions/upload-artifact from 3 to 4 (#59) 2023-12-18 08:14:06 +01:00
dependabot[bot] 710eaf3767 Bump the dev-dependencies group with 5 updates (#56) 2023-12-11 07:39:14 +00:00
dependabot[bot] 4fff2fe0d5 Bump typescript from 5.3.2 to 5.3.3 (#54) 2023-12-11 07:32:41 +00:00
github-actions[bot] 4ffa03f79e Reference latest Pixi version in README (#55) 2023-12-11 08:21:52 +01:00
dependabot[bot] 94888c4be7 Bump the dev-dependencies group with 5 updates (#50) 2023-12-04 07:31:05 +01:00
Pavel Zwerschke 0a92b78ec2 Add example configuration for dependabot.yml (#49) 2023-11-30 15:58:29 +01:00
github-actions[bot] 73721a4a25 Reference latest Pixi version in README (#47) 2023-11-30 14:45:05 +01:00
Pavel Zwerschke daf1d94cb0 Add workflow to update pixi version, move check-dist to build.yml (#46) 2023-11-30 14:44:24 +01:00
dependabot[bot] ed66d56836 Bump tsup from 8.0.0 to 8.0.1 (#45) 2023-11-27 07:09:56 +00:00
dependabot[bot] be4e12d1ed Bump typescript from 5.2.2 to 5.3.2 (#44) 2023-11-27 07:03:01 +00:00
dependabot[bot] 2d35805042 Bump the dev-dependencies group with 3 updates (#43) 2023-11-27 07:56:10 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 1a80a4f562 Bump tsup from 7.2.0 to 8.0.0 (#42)
* Bump tsup from 7.2.0 to 8.0.0

Bumps [tsup](https://github.com/egoist/tsup) from 7.2.0 to 8.0.0.
- [Release notes](https://github.com/egoist/tsup/releases)
- [Changelog](https://github.com/egoist/tsup/blob/dev/.releaserc.json)
- [Commits](https://github.com/egoist/tsup/compare/v7.2.0...v8.0.0)

---
updated-dependencies:
- dependency-name: tsup
  dependency-type: direct:development
  update-type: version-update:semver-major
...

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>
2023-11-20 10:07:31 +00:00
dependabot[bot] 265e2c593b Bump the dev-dependencies group with 4 updates (#41) 2023-11-20 08:45:55 +01:00
Pavel Zwerschke 2023b09192 Add docs for cache-write (#38) 2023-11-16 00:12:40 +00:00
Pavel Zwerschke 4bb84de5dd Reference latest setup-pixi version in README (#37) 2023-11-16 00:03:57 +00:00
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
20 changed files with 23793 additions and 1876 deletions
+8 -6
View File
@@ -3,14 +3,16 @@ updates:
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
interval: monthly
groups:
dependencies:
patterns:
- "*"
- package-ecosystem: npm
directory: /
schedule:
interval: weekly
interval: monthly
groups:
dev-dependencies:
dependencies:
patterns:
- "*eslint*"
- "@types/*"
- "prettier"
- "*"
+90 -1
View File
@@ -6,6 +6,8 @@ on:
pull_request:
branches: [main]
merge_group:
schedule:
- cron: 0 6 * * MON
jobs:
build:
@@ -29,6 +31,93 @@ jobs:
- name: Rebuild the dist/ directory
run: pnpm build
- name: Lint
run: pnpm lint
reference-latest-version-in-readme:
name: Reference latest version in README
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Assert latest setup-pixi version is mentioned in README
run: |
set -euo pipefail
latest_version="$(jq -r '.version' package.json)"
count_expected=12
count_actual="$(grep -c "setup-pixi@v$latest_version" README.md || true)"
if [ "$count_actual" -ne "$count_expected" ]; then
echo "::error file=README.md::Expected $count_expected mentions of \`setup-pixi@v$latest_version\` in README.md, but found $count_actual."
exit 1
fi
reference-latest-pixi-version-in-readme:
name: Reference latest Pixi version in README
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- name: Assert latest pixi version is mentioned in README
run: |
set -euo pipefail
latest_version="$(gh repo view --json latestRelease prefix-dev/pixi | jq -r '.latestRelease.tagName')"
count_expected=1
count_actual="$(grep -c "pixi-version: $latest_version" README.md || true)"
if [ "$count_actual" -ne "$count_expected" ]; then
echo "::error file=README.md::Expected $count_expected mentions of \`pixi-version: $latest_version\` in README.md, but found $count_actual."
sed -i "s/pixi-version: .*/pixi-version: $latest_version/" README.md
exit 1
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create pull request
uses: peter-evans/create-pull-request@b1ddad2c994a25fbc81a28b3ec0e368bb2021c50
if: failure() && github.ref_name == 'main'
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: Reference latest Pixi version in README
title: Reference latest Pixi version in README
labels: documentation
check-dist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Rebuild the dist/ directory
run: pnpm build
- name: Compare the expected and actual dist/ directories
run: |
if [ "$(git diff --ignore-space-at-eol dist/* | wc -l)" -gt "0" ]; then
echo "Detected uncommitted changes after build. See status below:"
git diff
exit 1
fi
id: diff
# If index.js or post.js are different than expected, upload the expected version as an artifact
- uses: actions/upload-artifact@v4
if: ${{ failure() && steps.diff.conclusion == 'failure' }}
with:
name: dist
path: dist/
-48
View File
@@ -1,48 +0,0 @@
name: Check dist
on:
push:
branches: [main]
pull_request:
branches: [main]
merge_group:
jobs:
check-dist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Rebuild the dist/ directory
run: pnpm build
- name: Compare the expected and actual dist/ directories
run: |
if [ "$(git diff --ignore-space-at-eol dist/* | wc -l)" -gt "0" ]; then
echo "Detected uncommitted changes after build. See status below:"
git diff
exit 1
fi
id: diff
# If index.js or post.js are different than expected, upload the expected version as an artifact
- uses: actions/upload-artifact@v3
if: ${{ failure() && steps.diff.conclusion == 'failure' }}
with:
name: dist
path: dist/
+151 -37
View File
@@ -11,7 +11,7 @@ jobs:
default:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
os: [ubuntu-latest, macos-latest, windows-latest, macos-14]
cache: [true, false]
runs-on: ${{ matrix.os }}
name: default ${{ matrix.cache == true && 'with' || 'without' }} cache (${{ matrix.os }})
@@ -26,15 +26,15 @@ jobs:
- run: |
set -o pipefail
pixi info
test -f .pixi/env/bin/python
./.pixi/env/bin/python --version | grep -q 3.11
test -f .pixi/envs/default/bin/python
./.pixi/envs/default/bin/python --version | grep -q 3.11
shell: bash
if: matrix.os != 'windows-latest'
- run: |
set -o pipefail
pixi info
test -f .pixi/env/python.exe
./.pixi/env/python.exe --version | grep -q 3.11
test -f .pixi/envs/default/python.exe
./.pixi/envs/default/python.exe --version | grep -q 3.11
shell: bash
if: matrix.os == 'windows-latest'
- run: |
@@ -61,12 +61,12 @@ jobs:
custom-pixi-version:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
os: [ubuntu-latest, macos-latest, windows-latest, macos-14]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Move pixi.toml
run: mv test/default/* .
run: mv test/old-pixi-lockfiles/* .
- uses: ./
with:
cache: false
@@ -75,6 +75,58 @@ jobs:
locked: false
- run: pixi --version | grep -q "pixi 0.1.0"
old-lockfile:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
locked: [true, false]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Move pixi.toml
run: mv test/old-pixi-lockfiles/* .
- uses: ./
with:
pixi-version: latest
cache: false
locked: ${{ matrix.locked }}
- if: matrix.os == 'windows-latest'
run: choco install yq
# assert that the lockfile wasn't updated
- run: test "$(yq '.version' pixi.lock)" = 1
install-path:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest, macos-14]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: ./
with:
run-install: false
- run: test "$(which pixi)" = "$HOME/.pixi/bin/pixi"
shell: bash
global-install:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest, macos-14]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: ./
with:
run-install: false
- run: pixi global install cowpy
- run: |
pixi global list 2>&1 | grep cowpy
cowpy hello world
test "$(which cowpy)" = "$HOME/.pixi/bin/cowpy"
if: matrix.os != 'windows-latest'
- run: cowpy hello world
if: matrix.os == 'windows-latest'
frozen:
strategy:
matrix:
@@ -110,15 +162,13 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Move pixi.toml
run: mv test/default/* .
run: mv test/old-pixi-lockfiles/* .
- 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"
pixi-url: https://github.com/prefix-dev/pixi/releases/download/v0.13.0/pixi-x86_64-unknown-linux-musl
- run: pixi --version | grep -q "pixi 0.13.0"
custom-manifest-path:
strategy:
matrix:
@@ -180,9 +230,8 @@ jobs:
auth-host: https://custom-conda-registry.com
auth-token: custom-token
- run: |
grep -q "BearerToken" ~/.rattler/rattler_auth_store.json
grep -q "custom-conda-registry.com" ~/.rattler/rattler_auth_store.json
grep -q "custom-token" ~/.rattler/rattler_auth_store.json
cat ~/.rattler/credentials.json
[ $(jq '."*.custom-conda-registry.com".BearerToken' -r ~/.rattler/credentials.json) = "custom-token" ]
# all other platforms have the credentials stored in the keychain
# https://github.com/prefix-dev/pixi/issues/330
if: matrix.os == 'ubuntu-latest'
@@ -203,10 +252,9 @@ jobs:
auth-username: custom-username
auth-password: custom-password
- run: |
grep -q "BasicHTTP" ~/.rattler/rattler_auth_store.json
grep -q "custom-conda-registry.com" ~/.rattler/rattler_auth_store.json
grep -q "custom-username" ~/.rattler/rattler_auth_store.json
grep -q "custom-password" ~/.rattler/rattler_auth_store.json
cat ~/.rattler/credentials.json
[ $(jq '."*.custom-conda-registry.com".BasicHTTP.username' -r ~/.rattler/credentials.json) = "custom-username" ]
[ $(jq '."*.custom-conda-registry.com".BasicHTTP.password' -r ~/.rattler/credentials.json) = "custom-password" ]
# all other platforms have the credentials stored in the keychain
# https://github.com/prefix-dev/pixi/issues/330
if: matrix.os == 'ubuntu-latest'
@@ -226,10 +274,8 @@ jobs:
auth-host: https://custom-conda-registry.com
auth-conda-token: custom-conda-token
- run: |
grep "CondaToken" ~/.rattler/rattler_auth_store.json
cat ~/.rattler/rattler_auth_store.json
grep -q "custom-conda-registry.com" ~/.rattler/rattler_auth_store.json
grep -q "custom-conda-token" ~/.rattler/rattler_auth_store.json
cat ~/.rattler/credentials.json
[ $(jq '."*.custom-conda-registry.com".CondaToken' -r ~/.rattler/credentials.json) = "custom-conda-token" ]
# all other platforms have the credentials stored in the keychain
# https://github.com/prefix-dev/pixi/issues/330
if: matrix.os == 'ubuntu-latest'
@@ -250,7 +296,7 @@ jobs:
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
test -f .pixi/envs/default/conda-meta/private-package-0.0.1-0.json
pixi-shell:
strategy:
@@ -361,7 +407,7 @@ jobs:
with:
cache: false
post-cleanup: ${{ matrix.post-cleanup }}
no-lockfile:
strategy:
matrix:
@@ -372,24 +418,77 @@ jobs:
- name: Move pixi.toml
run: mv test/no-lockfile/* .
- uses: ./
with:
cache: false
- run: |
set -o pipefail
pixi info
test -f .pixi/env/bin/python
./.pixi/env/bin/python --version | grep -q 3.11
test -f .pixi/envs/default/bin/python
./.pixi/envs/default/bin/python --version | grep -q 3.11
shell: bash
if: matrix.os != 'windows-latest'
- run: |
set -o pipefail
pixi info
test -f .pixi/env/python.exe
./.pixi/env/python.exe --version | grep -q 3.11
test -f .pixi/envs/default/python.exe
./.pixi/envs/default/python.exe --version | grep -q 3.11
shell: bash
if: matrix.os == 'windows-latest'
- run: |
pixi run python --version | grep -q 3.11
pixi run test | grep -q "Hello world"
multiple-environments:
name: multiple-environments (${{ matrix.os }}, cache=${{ matrix.cache }})
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest, macos-14]
cache: ['true', 'false']
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Move pixi.toml
run: mv test/multiple-environments/* .
- uses: ./
with:
environments: py311 py312
cache: ${{ matrix.cache }}
- run: |
set -o pipefail
pixi info
test -f .pixi/envs/py311/bin/python
test -f .pixi/envs/py312/bin/python
! test -d .pixi/envs/default
./.pixi/envs/py311/bin/python --version | grep -q 3.11
./.pixi/envs/py312/bin/python --version | grep -q 3.12
shell: bash
if: matrix.os != 'windows-latest'
- run: |
set -o pipefail
pixi info
test -f .pixi/envs/py311/python.exe
test -f .pixi/envs/py312/python.exe
! test -d .pixi/envs/default
./.pixi/envs/py311/python.exe --version | grep -q 3.11
./.pixi/envs/py312/python.exe --version | grep -q 3.12
shell: bash
if: matrix.os == 'windows-latest'
cache-write-true:
timeout-minutes: 10
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest, macos-14]
steps:
- uses: actions/checkout@v4
- name: Move pixi files
run: mv test/default/* .
- uses: ./
with:
cache-write: true
test-cache1:
name: Test cache 1/2
timeout-minutes: 10
@@ -397,7 +496,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
os: [windows-latest, ubuntu-latest, macos-latest, macos-14]
steps:
- uses: actions/checkout@v4
- name: Move pixi files
@@ -408,10 +507,10 @@ jobs:
cache-key: test-cache-${{ github.sha }}-${{ github.run_attempt }}-
# check the action logs to see if the cache was written
- run: |
test -f .pixi/env/bin/python
test -f .pixi/envs/default/bin/python
if: matrix.os != 'windows-latest'
- run: |
test -f .pixi/env/python.exe
test -f .pixi/envs/default/python.exe
if: matrix.os == 'windows-latest'
test-cache2:
@@ -422,7 +521,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
os: [windows-latest, ubuntu-latest, macos-latest, macos-14]
steps:
- uses: actions/checkout@v4
- name: Move pixi files
@@ -433,10 +532,10 @@ jobs:
cache-key: test-cache-${{ github.sha }}-${{ github.run_attempt }}-
# check the action logs to see if the cache was restored
- run: |
test -f .pixi/env/bin/python
test -f .pixi/envs/default/bin/python
if: matrix.os != 'windows-latest'
- run: |
test -f .pixi/env/python.exe
test -f .pixi/envs/default/python.exe
if: matrix.os == 'windows-latest'
test-cache-no-write:
@@ -446,7 +545,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
os: [windows-latest, ubuntu-latest, macos-latest, macos-14]
steps:
- uses: actions/checkout@v4
- name: Move pixi files
@@ -558,3 +657,18 @@ jobs:
# # locked: true is implicit
# - run: exit 1
# if: success()
# cache-write-true-no-lockfile:
# timeout-minutes: 10
# 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:
# cache-write: true
+99 -12
View File
@@ -23,9 +23,9 @@ GitHub Action to set up the [pixi](https://github.com/prefix-dev/pixi) package m
## Usage
```yml
- uses: prefix-dev/setup-pixi@v0.3.0
- uses: prefix-dev/setup-pixi@v0.5.1
with:
pixi-version: v0.5.0
pixi-version: v0.13.0
cache: true
auth-host: prefix.dev
auth-token: ${{ secrets.PREFIX_DEV_TOKEN }}
@@ -34,8 +34,23 @@ 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., `prefix-dev/setup-pixi@v0.3.0`) to avoid breaking changes.
> Please pin the versions of this action to a specific version (i.e., `prefix-dev/setup-pixi@v0.5.1`) 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).
>
> Put the following in your `.github/dependabot.yml` file to enable Dependabot for your GitHub Actions:
>
> ```yml
> version: 2
> updates:
> - package-ecosystem: github-actions
> directory: /
> schedule:
> interval: monthly # or daily, weekly
> groups:
> dependencies:
> patterns:
> - "*"
> ```
## Features
@@ -52,6 +67,78 @@ 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>`.
#### Only save caches on `main`
In order to not exceed the [10 GB cache size limit](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#usage-limits-and-eviction-policy) as fast, you might want to restrict when the cache is saved.
This can be done by setting the `cache-write` argument.
```yml
- uses: prefix-dev/setup-pixi@v0.5.1
with:
cache: true
cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }}
```
### Multiple environments
With pixi, you can create multiple environments for different requirements.
You can also specify which environment(s) you want to install by setting the `environments` input argument.
This will install all environments that are specified and cache them.
```toml
[project]
name = "my-package"
channels = ["conda-forge"]
platforms = ["linux-64"]
[dependencies]
python = ">=3.11"
pip = "*"
polars = ">=0.14.24,<0.21"
[feature.py311.dependencies]
python = "3.11.*"
[feature.py312.dependencies]
python = "3.12.*"
[environments]
py311 = ["py311"]
py312 = ["py312"]
```
#### Multiple environments using a matrix
The following example will install the `py311` and `py312` environments in different jobs.
```yml
test:
runs-on: ubuntu-latest
strategy:
matrix:
environment: [py311, py312]
steps:
- uses: actions/checkout@v4
- uses: prefix-dev/setup-pixi@v0.5.1
with:
environments: ${{ matrix.environment }}
```
#### Install multiple environments in one job
The following example will install both the `py311` and the `py312` environment on the runner.
```yml
- uses: prefix-dev/setup-pixi@v0.5.1
with:
# separated by spaces
environments: >-
py311
py312
```
> [!WARNING]
> If you don't specify any environment, the `default` environment will be installed and cached, even if you use other environments.
### Authentication
There are currently three ways to authenticate with pixi:
@@ -73,7 +160,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: prefix-dev/setup-pixi@v0.3.0
- uses: prefix-dev/setup-pixi@v0.5.1
with:
auth-host: prefix.dev
auth-token: ${{ secrets.PREFIX_DEV_TOKEN }}
@@ -85,7 +172,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: prefix-dev/setup-pixi@v0.3.0
- uses: prefix-dev/setup-pixi@v0.5.1
with:
auth-host: custom-artifactory.com
auth-username: ${{ secrets.PIXI_USERNAME }}
@@ -98,7 +185,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: prefix-dev/setup-pixi@v0.3.0
- uses: prefix-dev/setup-pixi@v0.5.1
with:
auth-host: anaconda.org # or my-quetz-instance.com
conda-token: ${{ secrets.CONDA_TOKEN }}
@@ -136,7 +223,7 @@ You can specify whether `setup-pixi` should run `pixi install --frozen` or `pixi
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
- uses: prefix-dev/setup-pixi@v0.5.1
with:
locked: true
# or
@@ -155,7 +242,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: prefix-dev/setup-pixi@v0.3.0
- uses: prefix-dev/setup-pixi@v0.5.1
env:
RUNNER_DEBUG: true
```
@@ -173,13 +260,13 @@ The second type is the debug logging of the pixi executable.
This can be specified by setting the `log-level` input.
```yml
- uses: prefix-dev/setup-pixi@v0.3.0
- uses: prefix-dev/setup-pixi@v0.5.1
with:
# one of `q`, `default`, `v`, `vv`, or `vvv`.
log-level: vvv
```
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).
If nothing is specified, `log-level` will default to `default` or `vv` depending on if [debug logging is enabled for the action](#debug-logging-of-the-action).
### Self-hosted runners
@@ -194,12 +281,12 @@ If you set `post-cleanup` to `true`, the action will delete the following files:
- the rattler cache
- other rattler files in `~/.rattler`
If nothing is specified, `setup-pixi` will default to `true`.
If nothing is specified, `post-cleanup` 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: prefix-dev/setup-pixi@v0.3.0
- uses: prefix-dev/setup-pixi@v0.5.1
with:
post-cleanup: true
# ${{ runner.temp }}\Scripts\pixi.exe on Windows
+3
View File
@@ -18,6 +18,9 @@ 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`.
environments:
description: |
A space-separated list of environments to install. If not specified, only the default environment is installed.
locked:
description: Whether to use `pixi install --locked`. Defaults to `true` when the lockfile is present, otherwise `false`.
frozen:
Generated Vendored
+17932 -386
View File
File diff suppressed because one or more lines are too long
Generated Vendored
+15 -3
View File
@@ -5871,6 +5871,13 @@ var parseOrUndefinedJSON = (key, schema) => {
}
return schema.parse(JSON.parse(input));
};
var parseOrUndefinedList = (key, schema) => {
const input = core.getInput(key);
if (input === "") {
return void 0;
}
return input.split(" ").map((s) => schema.parse(s)).filter((s) => s !== "");
};
var validateInputs = (inputs) => {
if (inputs.pixiVersion && inputs.pixiUrl) {
throw new Error("You need to specify either pixi-version or pixi-url");
@@ -5906,8 +5913,8 @@ var validateInputs = (inputs) => {
throw new Error("You need to specify auth-host");
}
}
if (inputs.cacheWrite && !inputs.cacheKey && !inputs.cache) {
throw new Error("cache-write is only valid with cache-key or cache specified.");
if (inputs.runInstall === false && inputs.environments) {
throw new Error("Cannot specify environments without running install");
}
};
var inferOptions = (inputs) => {
@@ -5918,7 +5925,10 @@ var inferOptions = (inputs) => {
const pixiLockFile = import_path.default.join(import_path.default.dirname(manifestPath), import_path.default.basename(manifestPath).replace(/\.toml$/, ".lock"));
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;
if (!lockFileAvailable && inputs.cacheWrite === true) {
throw new Error("You cannot specify cache-write = true without a lock file present");
}
const cache = inputs.cacheKey ? { cacheKeyPrefix: inputs.cacheKey, cacheWrite: inputs.cacheWrite ?? true } : inputs.cache === true || lockFileAvailable && inputs.cache !== false ? { cacheKeyPrefix: "pixi-", cacheWrite: inputs.cacheWrite ?? true } : void 0;
const pixiBinPath = inputs.pixiBinPath ? import_path.default.resolve(untildify(inputs.pixiBinPath)) : PATHS.pixiBin;
const frozen = inputs.frozen ?? false;
const locked = inputs.locked ?? (lockFileAvailable && !frozen);
@@ -5940,6 +5950,7 @@ var inferOptions = (inputs) => {
manifestPath,
pixiLockFile,
runInstall,
environments: inputs.environments,
frozen,
locked,
cache,
@@ -5965,6 +5976,7 @@ var getOptions = () => {
),
manifestPath: parseOrUndefined("manifest-path", stringType()),
runInstall: parseOrUndefinedJSON("run-install", booleanType()),
environments: parseOrUndefinedList("environments", stringType()),
locked: parseOrUndefinedJSON("locked", booleanType()),
frozen: parseOrUndefinedJSON("frozen", booleanType()),
cache: parseOrUndefinedJSON("cache", booleanType()),
+13 -13
View File
@@ -1,6 +1,6 @@
{
"name": "setup-pixi",
"version": "0.4.0",
"version": "0.5.1",
"private": true,
"description": "Action to set up the pixi package manager.",
"scripts": {
@@ -21,7 +21,7 @@
"author": "Pavel Zwerschke <pavelzw@gmail.com>",
"license": "BSD-3-Clause",
"dependencies": {
"@actions/cache": "^3.2.2",
"@actions/cache": "^3.2.3",
"@actions/core": "^1.10.1",
"@actions/exec": "^1.1.1",
"@actions/io": "^1.1.3",
@@ -30,18 +30,18 @@
"zod": "^3.22.4"
},
"devDependencies": {
"@types/node": "^20.8.10",
"@typescript-eslint/eslint-plugin": "^6.9.1",
"@typescript-eslint/parser": "^6.9.1",
"eslint": "^8.53.0",
"eslint-config-prettier": "^9.0.0",
"@types/node": "^20.11.14",
"@typescript-eslint/eslint-plugin": "^6.20.0",
"@typescript-eslint/parser": "^6.20.0",
"eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0",
"eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.29.0",
"eslint-plugin-n": "^16.2.0",
"eslint-plugin-prettier": "^5.0.1",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-n": "^16.6.2",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-promise": "^6.1.1",
"prettier": "^3.0.3",
"tsup": "^7.2.0",
"typescript": "^5.2.2"
"prettier": "^3.2.4",
"tsup": "^8.0.1",
"typescript": "^5.3.3"
}
}
+439 -447
View File
File diff suppressed because it is too large Load Diff
+19 -3
View File
@@ -6,9 +6,25 @@ import { options } from './options'
import { getCondaArch, sha256 } from './util'
export const generateCacheKey = async (cacheKeyPrefix: string) =>
fs
.readFile(options.pixiLockFile, 'utf-8')
.then((content) => `${cacheKeyPrefix}${getCondaArch()}-${sha256(content)}`)
Promise.all([fs.readFile(options.pixiLockFile), fs.readFile(options.pixiBinPath)])
.then(([lockfileContent, pixiBinary]) => {
const lockfileSha = sha256(lockfileContent)
core.debug(`lockfileSha: ${lockfileSha}`)
const pixiSha = sha256(pixiBinary)
core.debug(`pixiSha: ${pixiSha}`)
// 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 lockfilePathSha = sha256(options.pixiLockFile)
core.debug(`lockfilePathSha: ${lockfilePathSha}`)
const environments = sha256(options.environments?.join(' ') ?? '')
core.debug(`environments: ${environments}`)
// since the lockfile path is not necessarily absolute, we need to include the cwd in the cache key
const cwdSha = sha256(process.cwd())
core.debug(`cwdSha: ${cwdSha}`)
const sha = sha256(lockfileSha + environments + pixiSha + lockfilePathSha + cwdSha)
core.debug(`sha: ${sha}`)
return `${cacheKeyPrefix}${getCondaArch()}-${sha}`
})
.catch((err) => {
throw new Error(`Failed to generate cache key: ${err}`)
})
+41 -3
View File
@@ -54,12 +54,49 @@ const pixiInstall = async () => {
return Promise.resolve()
}
return tryRestoreCache()
.then((_cacheKey) =>
execute(pixiCmd(`install${options.frozen ? ' --frozen' : ''}${options.locked ? ' --locked' : ''}`))
)
.then(async (_cacheKey) => {
if (options.environments) {
for (const environment of options.environments) {
core.debug(`Installing environment ${environment}`)
const command = `install -e ${environment}${options.frozen ? ' --frozen' : ''}${
options.locked ? ' --locked' : ''
}`
await core.group(`pixi ${command}`, () => execute(pixiCmd(command)))
}
} else {
const command = `install${options.frozen ? ' --frozen' : ''}${options.locked ? ' --locked' : ''}`
return core.group(`pixi ${command}`, () => execute(pixiCmd(command)))
}
})
.then(saveCache)
}
const generateList = async () => {
if (!options.runInstall) {
core.debug('Skipping pixi list.')
return Promise.resolve()
}
if (
'version' in options.pixiSource &&
options.pixiSource.version !== 'latest' &&
options.pixiSource.version < 'v0.13.0'
) {
core.warning(
'pixi list is not supported for pixi versions < `v0.13.0`. Please set `pixi-version` to `v0.13.0` or later.'
)
return Promise.resolve()
}
if (options.environments) {
for (const environment of options.environments) {
core.debug(`Listing environment ${environment}`)
await core.group(`pixi list -e ${environment}`, () => execute(pixiCmd(`list -e ${environment}`)))
}
return Promise.resolve()
} else {
return core.group('pixi list', () => execute(pixiCmd('list')))
}
}
const generateInfo = () => core.group('pixi info', () => execute(pixiCmd('info')))
const run = async () => {
@@ -70,6 +107,7 @@ const run = async () => {
await pixiLogin()
await pixiInstall()
await generateInfo()
await generateList()
}
run().catch((error) => {
+36 -17
View File
@@ -6,12 +6,13 @@ import * as core from '@actions/core'
import * as z from 'zod'
import untildify from 'untildify'
type Inputs = {
type Inputs = Readonly<{
pixiVersion?: string
pixiUrl?: string
logLevel?: LogLevel
manifestPath?: string
runInstall?: boolean
environments?: string[]
frozen?: boolean
locked?: boolean
cache?: boolean
@@ -24,7 +25,7 @@ type Inputs = {
authPassword?: string
authCondaToken?: string
postCleanup?: boolean
}
}>
export type PixiSource =
| {
@@ -60,6 +61,7 @@ export type Options = Readonly<{
manifestPath: string
pixiLockFile: string
runInstall: boolean
environments?: string[]
frozen: boolean
locked: boolean
cache?: Cache
@@ -100,6 +102,18 @@ const parseOrUndefinedJSON = <T>(key: string, schema: z.ZodSchema<T>): T | undef
return schema.parse(JSON.parse(input))
}
const parseOrUndefinedList = <T>(key: string, schema: z.ZodSchema<T>): 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 input
.split(' ')
.map((s) => schema.parse(s))
.filter((s) => s !== '')
}
const validateInputs = (inputs: Inputs): void => {
if (inputs.pixiVersion && inputs.pixiUrl) {
throw new Error('You need to specify either pixi-version or pixi-url')
@@ -139,8 +153,8 @@ const validateInputs = (inputs: Inputs): void => {
throw new Error('You need to specify auth-host')
}
}
if (inputs.cacheWrite && !inputs.cacheKey && !inputs.cache) {
throw new Error('cache-write is only valid with cache-key or cache specified.')
if (inputs.runInstall === false && inputs.environments) {
throw new Error('Cannot specify environments without running install')
}
}
@@ -149,18 +163,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}`)
if (!lockFileAvailable && inputs.cacheWrite === true) {
throw new Error('You cannot specify cache-write = true without a lock file present')
}
const cache = inputs.cacheKey
? { cacheKeyPrefix: inputs.cacheKey, cacheWrite: inputs.cacheWrite ?? true }
: inputs.cache === true || (lockFileAvailable && inputs.cache !== false)
? { cacheKeyPrefix: 'pixi-', cacheWrite: true }
: undefined
? { cacheKeyPrefix: 'pixi-', cacheWrite: inputs.cacheWrite ?? true }
: undefined
const pixiBinPath = inputs.pixiBinPath ? path.resolve(untildify(inputs.pixiBinPath)) : PATHS.pixiBin
const frozen = inputs.frozen ?? false
const locked = inputs.locked ?? (lockFileAvailable && !frozen)
@@ -172,15 +189,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,
@@ -188,6 +205,7 @@ const inferOptions = (inputs: Inputs): Options => {
manifestPath,
pixiLockFile,
runInstall,
environments: inputs.environments,
frozen,
locked,
cache,
@@ -221,6 +239,7 @@ const getOptions = () => {
),
manifestPath: parseOrUndefined('manifest-path', z.string()),
runInstall: parseOrUndefinedJSON('run-install', z.boolean()),
environments: parseOrUndefinedList('environments', z.string()),
locked: parseOrUndefinedJSON('locked', z.boolean()),
frozen: parseOrUndefinedJSON('frozen', z.boolean()),
cache: parseOrUndefinedJSON('cache', z.boolean()),
+1
View File
@@ -78,6 +78,7 @@ export const pixiCmd = (command: string, withManifestPath = true) => {
if (withManifestPath) {
commandArray = commandArray.concat(['--manifest-path', options.manifestPath])
}
commandArray = commandArray.concat(['--color', 'always'])
switch (options.logLevel) {
case 'vvv':
commandArray = commandArray.concat(['-vvv'])
+1105 -899
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -4,7 +4,7 @@ version = "0.1.0"
description = "Add a short description here"
authors = ["Pavel Zwerschke <pavelzw@gmail.com>"]
channels = ["conda-forge"]
platforms = ["linux-64", "osx-64", "win-64"]
platforms = ["linux-64", "osx-64", "osx-arm64", "win-64"]
[tasks]
test = "python -c 'print(\"Hello world!\")'"
File diff suppressed because it is too large Load Diff
+18
View File
@@ -0,0 +1,18 @@
[project]
name = "test-package"
channels = ["conda-forge"]
platforms = ["linux-64", "osx-arm64", "osx-64", "win-64"]
[dependencies]
python = ">=3.11"
pip = "*"
polars = ">=0.14.24,<0.21"
[feature.py311.dependencies]
python = "3.11.*"
[feature.py312.dependencies]
python = "3.12.*"
[environments]
py311 = ["py311"]
py312 = ["py312"]
File diff suppressed because it is too large Load Diff
+13
View File
@@ -0,0 +1,13 @@
[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]
python = "3.11.*"