pantry/scripts/sort.ts
Max Howell eb1c8e5aee
Relax requirement to build to /opt (#19)
Improve README somewhat. Don’t overlay files into pantry, use `TEA_PANTRY_PATH` instead. Requires tea/cli 0.11.6 for `env` key in YAML-FM
2022-11-04 13:00:17 +00:00

53 lines
1.3 KiB
TypeScript
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env -S tea -E
/*---
args:
- deno
- run
- --allow-read
- --allow-env
- --import-map={{ srcroot }}/import-map.json
env:
TEA_PANTRY_PATH: "{{srcroot}}"
---*/
// sorts input for building
// does a full hydration, but only returns ordered, dry packages
import { pkg } from "utils"
import { usePantry, useFlags } from "hooks"
import { hydrate } from "prefab"
import { PackageRequirement } from "types"
import * as ARGV from "./utils/args.ts"
const flags = useFlags()
const pantry = usePantry()
const dry = await ARGV.toArray(ARGV.pkgs())
const wet = await hydrate(dry, async (pkg, dry) => {
const deps = await pantry.getDeps(pkg)
return dry ? [...deps.build, ...deps.runtime] : deps.runtime
})
if (Deno.env.get("GITHUB_ACTIONS")) {
const massage = (input: PackageRequirement[]) =>
input.map(p => {
let out = pkg.str(p)
// shell quoting via GHA is weird and we dont fully understand it
if (/[<>]/.test(out)) out = `"${out}"`
return out
}).join(" ")
console.log(`::set-output name=pkgs::${massage(wet.dry)}`)
console.log(`::set-output name=pre-install::${massage(wet.wet)}`)
} else {
const gas = wet.dry.map(x => pkg.str(x))
if (flags.json) {
console.log(gas)
} else {
console.log(gas.join("\n"))
}
}