Skip to content

Commit ba4bfb5

Browse files
committed
init repository
0 parents  commit ba4bfb5

File tree

902 files changed

+301024
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

902 files changed

+301024
-0
lines changed

.DS_Store

6 KB
Binary file not shown.

.github/workflows/release.yaml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Build and Release Artifacts
2+
3+
on:
4+
push:
5+
tags:
6+
- "*"
7+
8+
jobs:
9+
build-and-release:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Checkout code
13+
uses: actions/checkout@v4
14+
15+
- name: Install Nix
16+
uses: cachix/install-nix-action@v27
17+
18+
- name: Build flake package
19+
run: nix build
20+
21+
- name: Copy Built Result
22+
run: |
23+
cp -r ./result $GITHUB_WORKSPACE/binary
24+
25+
- name: Build wasm
26+
run: nix build ".#wasm"
27+
28+
- name: Copy wasm Result
29+
run: |
30+
cp -r ./result $GITHUB_WORKSPACE/wasm
31+
32+
- name: Get tag name
33+
id: get_tag
34+
run: echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
35+
36+
- name: Create GitHub Release
37+
uses: softprops/action-gh-release@v2
38+
with:
39+
tag_name: ${{ steps.get_tag.outputs.tag }}
40+
files: $GITHUB_WORKSPACE/{wasm,binary}
41+
42+
env:
43+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
mms/grammars
2+
result
3+
vscode-extension/node_modules
4+
.antlr
5+
mms_build
6+
gen
7+
extensions/vscode-extension/node_modules
8+
overworld.json
9+
surface_rules_wiki.txt

flake.lock

Lines changed: 61 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
{
2+
description = "DevShell with Antlr4 and Go";
3+
4+
inputs = {
5+
nixpkgs.url = "github:NixOS/nixpkgs/d98abf5cf5914e5e4e9d57205e3af55ca90ffc1d";
6+
flake-utils.url = "github:numtide/flake-utils";
7+
8+
};
9+
10+
outputs =
11+
{ nixpkgs, flake-utils, ... }:
12+
flake-utils.lib.eachDefaultSystem (
13+
system:
14+
let
15+
pkgs = import nixpkgs { inherit system; };
16+
in
17+
{
18+
devShells.default = pkgs.mkShell {
19+
buildInputs = [
20+
pkgs.antlr4
21+
pkgs.go
22+
pkgs.fish
23+
24+
(pkgs.writeShellApplication{
25+
name = "debug-file";
26+
runtimeInputs = [
27+
pkgs.antlr4
28+
pkgs.go
29+
];
30+
text = ''
31+
antlr4-parse grammars/MMSParser.g4 grammars/MMSLexer.g4 mmsFile -gui "$1"
32+
'';
33+
34+
})
35+
36+
(pkgs.writeShellApplication {
37+
name = "antlr-build";
38+
runtimeInputs = [
39+
pkgs.antlr4
40+
pkgs.go
41+
];
42+
text = ''
43+
set -e
44+
src="./grammars"
45+
dst="./lang"
46+
${pkgs.antlr4}/bin/antlr4 -Dlanguage=Go $src/MMSLexer.g4 -o $dst -package grammars;
47+
${pkgs.antlr4}/bin/antlr4 -Dlanguage=Go $src/MMSParser.g4 -lib $dst/grammars -o $dst -package grammars;
48+
'';
49+
})
50+
(pkgs.writeShellApplication {
51+
name = "antlr-build-keyword-rule";
52+
runtimeInputs = [
53+
pkgs.antlr4
54+
pkgs.go
55+
];
56+
text = ''
57+
set -e
58+
{
59+
echo "parser grammar MMS_Keyword_Rule;"
60+
echo "options { tokenVocab = MMSLexer; }"
61+
echo "keyword: "
62+
grep Keyword_ < grammars/MMSLexer.g4 | sed -E 's/:.*/ | /' | tr -d '\n' | sed 's/ | $/\n/'
63+
echo ";"
64+
} > grammars/MMS_Keyword_Rule.g4
65+
'';
66+
})
67+
68+
];
69+
70+
shellHook = ''
71+
exec fish
72+
'';
73+
};
74+
75+
devShells.jetbrainsPlugin = pkgs.mkShell {
76+
buildInputs = [ pkgs.jdk17 pkgs.gradle ];
77+
shellHook = ''
78+
echo "Use: nix develop .#jetbrainsPlugin -c gradle --no-daemon buildPlugin (run from extensions/jetbrains)"
79+
'';
80+
};
81+
82+
packages.default = pkgs.buildGoModule {
83+
pname = "mms";
84+
version = "0.1.0";
85+
src = ./.;
86+
vendorHash = null;
87+
# If you use vendoring, run `go mod vendor` and replace null with the hash
88+
subPackages = [ "." ];
89+
90+
preBuild = ''
91+
dst=./lang
92+
mkdir -p $dst
93+
# Specifying dst/grammars is required here for some reason -- but not in the shell script?
94+
${pkgs.antlr4}/bin/antlr4 -Dlanguage=Go $src/grammars/MMSLexer.g4 -o $dst/grammars -package grammars;
95+
${pkgs.antlr4}/bin/antlr4 -Dlanguage=Go $src/grammars/MMSParser.g4 -lib $dst/grammars -o $dst/grammars -package grammars;
96+
'';
97+
};
98+
99+
packages.wasm = pkgs.stdenvNoCC.mkDerivation {
100+
pname = "mms-wasm";
101+
version = "0.1.0";
102+
src = ./.;
103+
buildInputs = [ pkgs.go ];
104+
buildPhase = ''
105+
export GOOS=js
106+
export GOARCH=wasm
107+
export GOCACHE="$TMPDIR/go-cache"
108+
go build -o main.wasm
109+
'';
110+
installPhase = ''
111+
mkdir -p $out
112+
mv main.wasm $out/
113+
cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" $out/
114+
'';
115+
};
116+
117+
packages.jetbrainsPlugin = pkgs.stdenvNoCC.mkDerivation {
118+
pname = "mms-jetbrains-plugin";
119+
version = "0.1.0";
120+
src = ./extensions/jetbrains;
121+
nativeBuildInputs = [ pkgs.jdk17 pkgs.gradle ];
122+
buildPhase = ''
123+
set -eu
124+
export JAVA_HOME=${pkgs.jdk17}
125+
export GRADLE_USER_HOME=$TMPDIR/gradle-home
126+
gradle --no-daemon buildPlugin
127+
'';
128+
installPhase = ''
129+
set -eu
130+
mkdir -p $out
131+
cp -v build/distributions/*.zip $out/
132+
'';
133+
};
134+
135+
}
136+
);
137+
}

go.mod

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
module github.com/minecraftmetascript/mms
2+
3+
go 1.23.4
4+
5+
require (
6+
github.com/antlr4-go/antlr/v4 v4.13.1
7+
github.com/tliron/glsp v0.2.2
8+
github.com/urfave/cli/v3 v3.4.1
9+
)
10+
11+
require (
12+
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
13+
github.com/gorilla/websocket v1.5.1 // indirect
14+
github.com/iancoleman/strcase v0.3.0 // indirect
15+
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
16+
github.com/mattn/go-isatty v0.0.20 // indirect
17+
github.com/mattn/go-runewidth v0.0.14 // indirect
18+
github.com/muesli/termenv v0.15.2 // indirect
19+
github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect
20+
github.com/pkg/errors v0.9.1 // indirect
21+
github.com/rivo/uniseg v0.2.0 // indirect
22+
github.com/sasha-s/go-deadlock v0.3.1 // indirect
23+
github.com/sourcegraph/jsonrpc2 v0.2.0 // indirect
24+
github.com/tliron/commonlog v0.2.8 // indirect
25+
github.com/tliron/kutil v0.3.11 // indirect
26+
golang.org/x/crypto v0.15.0 // indirect
27+
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect
28+
golang.org/x/net v0.17.0 // indirect
29+
golang.org/x/sys v0.14.0 // indirect
30+
golang.org/x/term v0.14.0 // indirect
31+
)

go.sum

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ=
2+
github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw=
3+
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
4+
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
5+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
6+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
7+
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
8+
github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
9+
github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
10+
github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
11+
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
12+
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
13+
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
14+
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
15+
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
16+
github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
17+
github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
18+
github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
19+
github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
20+
github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ=
21+
github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o=
22+
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
23+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
24+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
25+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
26+
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
27+
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
28+
github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0=
29+
github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM=
30+
github.com/sourcegraph/jsonrpc2 v0.2.0 h1:KjN/dC4fP6aN9030MZCJs9WQbTOjWHhrtKVpzzSrr/U=
31+
github.com/sourcegraph/jsonrpc2 v0.2.0/go.mod h1:ZafdZgk/axhT1cvZAPOhw+95nz2I/Ra5qMlU4gTRwIo=
32+
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
33+
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
34+
github.com/tliron/commonlog v0.2.8 h1:vpKrEsZX4nlneC9673pXpeKqv3cFLxwpzNEZF1qiaQQ=
35+
github.com/tliron/commonlog v0.2.8/go.mod h1:HgQZrJEuiKLLRvUixtPWGcmTmWWtKkCtywF6x9X5Spw=
36+
github.com/tliron/glsp v0.2.2 h1:IKPfwpE8Lu8yB6Dayta+IyRMAbTVunudeauEgjXBt+c=
37+
github.com/tliron/glsp v0.2.2/go.mod h1:GMVWDNeODxHzmDPvYbYTCs7yHVaEATfYtXiYJ9w1nBg=
38+
github.com/tliron/kutil v0.3.11 h1:kongR0dhrrn9FR/3QRFoUfQe27t78/xQvrU9aXIy5bk=
39+
github.com/tliron/kutil v0.3.11/go.mod h1:4IqOAAdpJuDxYbJxMv4nL8LSH0mPofSrdwIv8u99PDc=
40+
github.com/urfave/cli/v3 v3.4.1 h1:1M9UOCy5bLmGnuu1yn3t3CB4rG79Rtoxuv1sPhnm6qM=
41+
github.com/urfave/cli/v3 v3.4.1/go.mod h1:FJSKtM/9AiiTOJL4fJ6TbMUkxBXn7GO9guZqoZtpYpo=
42+
golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA=
43+
golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g=
44+
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM=
45+
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc=
46+
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
47+
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
48+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
49+
golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
50+
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
51+
golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8=
52+
golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww=
53+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
54+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

0 commit comments

Comments
 (0)