refactor: prepare for noogle - monorepo

This commit is contained in:
hsjobeki 2023-02-23 14:05:56 +01:00
parent 7a8005f527
commit 91737bb5da
14 changed files with 47 additions and 42 deletions

4
.gitignore vendored
View File

@ -7,8 +7,8 @@ node_modules
# testing
coverage
models/data/*
!models/data/index.ts
website/models/data/*
!website/models/data/index.ts
# nix
.direnv/

View File

@ -11,28 +11,29 @@
let
system = "x86_64-linux";
pkgs = inp.nixpkgs.legacyPackages.${system};
inherit (builtins.fromJSON (builtins.readFile ./package.json)) name;
prepareData = ''
cp ${inp.nixdoc-fork.packages.${system}.data.lib} ./website/models/data/lib.json
cp ${inp.nixdoc-fork.packages.${system}.data.build_support} ./website/models/data/trivial-builders.json
node ./scripts/make-builtins.js
inherit (builtins.fromJSON (builtins.readFile ./website/package.json)) name;
prepareData = prefix: ''
cp -f ${inp.nixdoc-fork.packages.${system}.data.lib} ${prefix}./models/data/lib.json
cp -f ${inp.nixdoc-fork.packages.${system}.data.build_support} ${prefix}./models/data/trivial-builders.json
node ${prefix}./scripts/make-builtins.js ${prefix}./models/data
'';
in
(inp.dream2nix.lib.makeFlakeOutputs {
systems = [ system ];
projects = ./projects.toml;
config.projectRoot = ./.;
source = ./.;
config.projectRoot = ./website;
source = ./website;
packageOverrides = {
${name}.staticPage = {
preBuild = prepareData;
preBuild = prepareData "";
installPhase = ''
runHook preInstall
npm run export
mkdir -p $out/static
cp -r ./out/* $out/static/
cp -r ./out/* $out/static/
cp -r ./ $lib
runHook postInstall
'';
@ -43,7 +44,7 @@
devShells.${system}.default = pkgs.mkShell {
buildInputs = with pkgs; [ nodejs-18_x ];
shellHook = ''
${prepareData}
${prepareData "./website/"}
${self.checks.${system}.pre-commit-check.shellHook}
'';
};

View File

@ -10,9 +10,10 @@
[noogle]
name = "noogle"
relPath = "website"
relPath = ""
subsystem = "nodejs"
translator = "package-lock"
builder = "strict-builder"
translators = ["package-lock", "package-json"]
[noogle.subsystemInfo]

View File

@ -1,26 +0,0 @@
const builtins = require("./data/builtins.json");
const types = require("./data/builtins.types.json");
const fs = require("fs");
const info = Object.entries(builtins).map(([name, meta]) => {
const fn_type = types[name]?.fn_type || null;
const { args, arity, doc } = meta;
return {
id: `builtins.${name}`,
category: "builtins",
fn_type,
name,
description: [
`takes ${arity} arguments: __\`${args.join("` `")}\`__ \n`,
`${doc}\n`,
],
};
});
fs.writeFile(
"./website/models/data/builtins.json",
JSON.stringify(info),
(err) => {
if (err) {
console.error(err);
}
}
);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,32 @@
const builtins = require("./data/builtins.json");
const types = require("./data/builtins.types.json");
const fs = require("fs");
const { exit } = require("process");
const DATA_PATH = process.argv.length >= 3 && process.argv[2];
if (!DATA_PATH) {
console.error("argument OUT_PATH is not set");
console.info("usage: node make-builtins.js <OUT_PATH>");
exit(1);
} else {
const info = Object.entries(builtins).map(([name, meta]) => {
const fn_type = types[name]?.fn_type || null;
const { args, arity, doc } = meta;
return {
id: `builtins.${name}`,
category: "builtins",
fn_type,
name,
description: [
`takes ${arity} arguments: __\`${args.join("` `")}\`__ \n`,
`${doc}\n`,
],
};
});
fs.writeFile(`${DATA_PATH}/builtins.json`, JSON.stringify(info), (err) => {
if (err) {
console.error(err);
}
});
}