dsh 0.2.0-rc.2: in-container update (experimental channel), path-agnostic compose, upstream patches adapted to 0.1.x/0.2.x
This commit is contained in:
commit
e6dcef9bf5
302 files changed
+75178
No files matched your search
@@ -0,0 +1,73 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "usage: $0 <container>" >&2
|
||||
exit 64
|
||||
fi
|
||||
|
||||
container="$1"
|
||||
profile=/data/dsh/profiles/web
|
||||
legacy_store=/workspace/.pnpm-store
|
||||
stable_store=/data/dsh/.pnpm-store
|
||||
fixture=/workspace/profile-package-smoke
|
||||
|
||||
docker exec "$container" dsh-platform stop --wait >/dev/null
|
||||
docker exec --user node "$container" sh -c "
|
||||
set -eu
|
||||
test -f '$profile/package.json'
|
||||
mkdir -p '$legacy_store'
|
||||
if [ -d '$stable_store' ]; then cp -a '$stable_store/.' '$legacy_store/'; fi
|
||||
"
|
||||
docker exec --user node --env PROFILE="$profile" --env LEGACY_STORE="$legacy_store" \
|
||||
"$container" node --input-type=module -e '
|
||||
import { readFileSync, writeFileSync } from "node:fs"
|
||||
const path = process.env.PROFILE + "/pnpm-workspace.yaml"
|
||||
const source = readFileSync(path, "utf8")
|
||||
const line = `storeDir: ${JSON.stringify(process.env.LEGACY_STORE)}\n`
|
||||
const pattern = /^storeDir:[^\r\n]*(?:\r?\n|$)/m
|
||||
writeFileSync(path, pattern.test(source)
|
||||
? source.replace(pattern, line)
|
||||
: source.replace(/(?:\r?\n)?$/, `\n\n${line}`))
|
||||
'
|
||||
docker exec --user node "$container" sh -c "
|
||||
set -eu
|
||||
rm -rf '$profile/node_modules'
|
||||
cd '$profile'
|
||||
pnpm install --offline --frozen-lockfile --reporter=append-only >/dev/null
|
||||
"
|
||||
docker exec --user node --env PROFILE="$profile" --env LEGACY_STORE="$legacy_store" \
|
||||
"$container" node -e '
|
||||
const value = JSON.parse(require("fs").readFileSync(process.env.PROFILE + "/node_modules/.modules.yaml", "utf8"))
|
||||
if (!value.storeDir.startsWith(process.env.LEGACY_STORE + "/")) throw new Error(value.storeDir)
|
||||
'
|
||||
|
||||
docker exec "$container" dsh-platform start --wait >/dev/null
|
||||
docker exec --user node --env PROFILE="$profile" --env STABLE_STORE="$stable_store" \
|
||||
"$container" node -e '
|
||||
const value = JSON.parse(require("fs").readFileSync(process.env.PROFILE + "/node_modules/.modules.yaml", "utf8"))
|
||||
if (!value.storeDir.startsWith(process.env.STABLE_STORE + "/")) throw new Error(value.storeDir)
|
||||
'
|
||||
|
||||
docker exec --user node "$container" sh -c "
|
||||
set -eu
|
||||
mkdir -p '$fixture'
|
||||
printf '%s\n' '{\"name\":\"profile-package-smoke\",\"version\":\"1.0.0\",\"type\":\"module\",\"main\":\"index.mjs\",\"dsh\":{\"bundle\":{\"patch\":\"./cordis.patch.yml\"}}}' > '$fixture/package.json'
|
||||
printf '%s\n' 'export default function () {}' > '$fixture/index.mjs'
|
||||
printf '%s\n' '- insert:' ' - id: profile-package-smoke' ' name: file://$fixture/index.mjs' > '$fixture/cordis.patch.yml'
|
||||
"
|
||||
docker exec \
|
||||
--env npm_config_userconfig=/root/.config/npm/npmrc \
|
||||
--env npm_config_cache=/root/.npm \
|
||||
"$container" dsh plugin --profile web add "$fixture" >/dev/null
|
||||
docker exec "$container" sh -c "
|
||||
set -eu
|
||||
test \"\$(stat -c %U '$profile/package.json')\" = node
|
||||
test \"\$(stat -c %U '$profile/pnpm-lock.yaml')\" = node
|
||||
test \"\$(stat -c %U '$profile/node_modules/profile-package-smoke')\" = node
|
||||
"
|
||||
docker exec "$container" dsh plugin --profile web remove profile-package-smoke >/dev/null
|
||||
docker exec --user node "$container" rm -rf "$fixture"
|
||||
docker logs "$container" 2>&1 \
|
||||
| grep -F "dsh: migrated Profile package storage from $legacy_store/" >/dev/null
|
||||
|
||||
Reference in new issue
Block a user