pantry/scripts/build-deps.ts

56 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
---*/
import { Package, PackageRequirement } from "types"
import { usePantry, useFlags } from "hooks"
import { hydrate } from "prefab"
import * as ARGV from "./utils/args.ts"
import { set_output } from "./utils/gha.ts"
import { pkg } from "utils"
const pantry = usePantry()
useFlags()
const mode: 'build' | 'install' = 'build' //Deno.args.includes("-b") ? 'build' : 'install'
const get_deps = async (pkg: Package | PackageRequirement) => {
const deps = await pantry.getDeps(pkg)
switch (mode) {
case 'build':
return [...deps.build, ...deps.runtime]
// case 'install':
// return deps.runtime
}
}
const bootstrap_required = new Set<string>()
const set = new Set<string>()
let rv: PackageRequirement[] = []
for await (const pkg of ARGV.pkgs()) {
const deps = await get_deps(pkg)
const wet = await hydrate(deps)
rv.push(...wet.pkgs)
set.add(pkg.project)
wet.bootstrap_required.forEach(x => bootstrap_required.add(x))
}
// we dont want to pre-install packages we intend to build
rv = rv.filter(({ project }) => !set.has(project) || bootstrap_required.has(project))
const gas = rv.map(pkg.str)
if (Deno.env.get("GITHUB_ACTIONS")) {
set_output("pkgs", gas)
} else {
console.log(gas.join("\n"))
}