Skip to content

Commit 6ce7e66

Browse files
author
jared
committed
Code cleanup to make the documentation more sensible
1 parent 2e8cdc9 commit 6ce7e66

File tree

7 files changed

+108
-15
lines changed

7 files changed

+108
-15
lines changed

extras/lbf-nix/build.nix

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{ inputs, ... }: {
1+
{ lib, inputs, ... }: {
22
perSystem = { pkgs, config, system, ... }:
33
let
44
lbg-haskell = "${config.packages.lbg-haskell}/bin/lbg-haskell";
@@ -23,23 +23,23 @@
2323
lbfTypescript = opts: import ./lbf-typescript.nix
2424
{
2525
inherit pkgs lbg-typescript;
26-
inherit (config.packages) lbf;
26+
inherit (config.packages) lbf-list-modules-typescript lbf;
2727
inherit (inputs.flake-lang.lib.${system}) typescriptFlake;
2828
}
2929
opts;
3030
lbfPreludeTypescript = opts:
3131
import ./lbf-prelude-typescript.nix
3232
{
3333
inherit pkgs lbg-typescript config;
34-
inherit (config.packages) lbf;
34+
inherit (config.packages) lbf-list-modules-typescript lbf;
3535
inherit (inputs.flake-lang.lib.${system}) typescriptFlake;
3636
}
3737
opts;
3838
lbfPlutusTypescript = opts:
3939
import ./lbf-plutus-typescript.nix
4040
{
4141
inherit pkgs lbg-typescript config;
42-
inherit (config.packages) lbf;
42+
inherit (config.packages) lbf-list-modules-typescript lbf;
4343
inherit (inputs.flake-lang.lib.${system}) typescriptFlake;
4444
}
4545
opts;
@@ -48,5 +48,18 @@
4848
lbfPlutusRust = import ./lbf-plutus-rust.nix pkgs config.packages.lbf lbg-rust;
4949
};
5050

51+
packages = {
52+
lbf-list-modules-typescript = pkgs.stdenv.mkDerivation {
53+
name = "lbf-list-modules-typescript";
54+
buildInputs = [ pkgs.nodejs ];
55+
dontUnpack = true;
56+
src = ./lbf-list-modules-typescript;
57+
installPhase = ''
58+
mkdir -p "$out/bin"
59+
cp "$src" "$out/bin/lbf-list-modules-typescript"
60+
'';
61+
};
62+
};
63+
5164
};
5265
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#!/usr/bin/env node
2+
3+
const fs = require('node:fs/promises')
4+
const process = require('node:process')
5+
6+
const help =`Usage: lbf-list-modules-typescript <package-name>=<directory>...
7+
8+
Description:
9+
Given a sequence of \`pkg-name1=dir1\`, ..., \`pkg-nameN=dirN\`, outputs
10+
a JSON object on stdout of the form
11+
\`\`\`
12+
{
13+
"pkg-name1": lbfs1,
14+
...
15+
"pkg-nameN": lbfsN
16+
}
17+
\`\`\`
18+
where for every \`i\`, each \`lbfi\` is a list of all paths ending with \`*.lbf\` in \`diri\`
19+
except the \`*.lbf\` suffix is removed and all \`/\`s are replaced with \`.\`.
20+
21+
When there are no arguments, this returns the empty JSON object.
22+
23+
Examples:
24+
Suppose there is a directory as follows.
25+
|-A.lbf
26+
\`-Directory
27+
|-B.lbf
28+
\`-C.lbf
29+
Then, \`lbf-list-modules-typescript .\` returns
30+
\`\`\`
31+
A
32+
Directory.B
33+
Directory.C
34+
\`\`\``
35+
36+
async function main() {
37+
const argv = process.argv.slice(2);
38+
39+
const result = { }
40+
41+
for (const pkgDir of argv) {
42+
const pkgDirMatches = pkgDir.match(/^(?<pkgName>[^=]*)=(?<dir>[^=]+)$/)
43+
if (pkgDirMatches === null)
44+
throw new Error("CLI argument not of the form \`<pkg-name>=<directory>\`\n" + help)
45+
46+
const { pkgName, dir } = pkgDirMatches.groups
47+
const listings = await fs.readdir(dir, { recursive: true })
48+
49+
const filtered = []
50+
for (const listing of listings) {
51+
const listingMatch = listing.match(/^(?<moduleName>.*)\.lbf$/)
52+
if (listingMatch === null)
53+
continue
54+
const { moduleName } = listingMatch.groups
55+
filtered.push(moduleName.replace(/\//g, '.'))
56+
}
57+
58+
if (result[pkgName] !== undefined)
59+
console.error(`lbf-list-modules-typescript: warning: package name ${pkgName} is defined multiple times. Overwriting the first definition.`)
60+
61+
result[pkgName] = filtered
62+
}
63+
64+
process.stdout.write(JSON.stringify(result));
65+
}
66+
67+
main()

extras/lbf-nix/lbf-plutus-typescript.nix

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@
44
, lbg-typescript
55
, config
66
, typescriptFlake
7+
, lbf-list-modules-typescript
78
}:
89
lbfTypescriptOpts:
910
let
1011
utils = import ./utils.nix pkgs;
1112

12-
lbfTypescript = import ./lbf-prelude-typescript.nix { inherit pkgs lbf lbg-typescript config typescriptFlake; };
13+
lbfTypescript = import ./lbf-prelude-typescript.nix { inherit pkgs lbf lbg-typescript config lbf-list-modules-typescript typescriptFlake; };
1314
lbfTypescriptOptsForPlutus = utils.overrideAttrs
1415
{
1516
imports = {

extras/lbf-nix/lbf-prelude-typescript.nix

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@
99
, lbg-typescript
1010
, config
1111
, typescriptFlake
12+
, lbf-list-modules-typescript
1213
}: lbfTypeScriptOpts:
1314
let
1415
utils = import ./utils.nix pkgs;
1516

16-
lbfTs = import ./lbf-typescript.nix { inherit pkgs lbf lbg-typescript typescriptFlake; };
17+
lbfTs = import ./lbf-typescript.nix { inherit pkgs lbf lbg-typescript typescriptFlake lbf-list-modules-typescript; };
1718
lbfTypeScriptOptsForPrelude = utils.overrideAttrs
1819
{
1920
imports = {

extras/lbf-nix/lbf-typescript.nix

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
, lbg-typescript
99
# Function to create typescript flakes
1010
, typescriptFlake
11+
# Function to create a JSON file which maps package names to lists of
12+
# LambdaBuffers names
13+
, lbf-list-modules-typescript
1114
}:
1215

1316

@@ -85,15 +88,20 @@ lbfTypescriptOpts@{
8588
let
8689
lbf-build = import ./lbf-build.nix pkgs lbf;
8790

88-
lbfListModules = pkgs.callPackage ./lbf-list-modules.nix { };
91+
# lbfListModules = pkgs.callPackage ./lbf-list-modules.nix { };
8992

90-
packageSet =
91-
pkgs.writeTextFile {
92-
name = "lb-typescript-packages";
93-
text =
94-
builtins.toJSON
95-
(builtins.mapAttrs (_name: lbfListModules) imports);
96-
};
93+
# packageSet =
94+
# pkgs.writeTextFile {
95+
# name = "lb-typescript-packages";
96+
# text =
97+
# builtins.toJSON
98+
# (builtins.mapAttrs (_name: lbfListModules) imports);
99+
# };
100+
packageSet = pkgs.runCommand "lb-typescript-packages" { buildInputs = [ lbf-list-modules-typescript ]; }
101+
''
102+
1>"$out" lbf-list-modules-typescript \
103+
${pkgs.lib.escapeShellArgs ( pkgs.lib.mapAttrsToList (name: value: "${name}=${value}") imports) }
104+
'';
97105

98106
lbfBuilt = with lbfTypescriptOpts;
99107
lbf-build.build

lambda-buffers-codegen/app/Main.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ typescriptGenOptsP =
119119
)
120120
<*> strOption
121121
( long "packages"
122-
<> short 'g'
122+
<> short 'p'
123123
<> metavar "FILEPATH"
124124
<> help "JSON file containing the package-set and all of its modules (including current package) with schema `{ [index : PackageName]: ModuleName[] }`."
125125
)

lambda-buffers-frontend/build.nix

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@
4343
config.packages.lbf-plutus-to-purescript
4444
config.packages.lbf-prelude-to-rust
4545
config.packages.lbf-plutus-to-rust
46+
config.packages.lbf-list-modules-typescript
47+
config.packages.lbf-prelude-to-typescript
48+
config.packages.lbf-plutus-to-typescript
4649
];
4750
};
4851
};

0 commit comments

Comments
 (0)