Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
eb0ce88
refactor: integrate GenLSP
mhanberg Jun 5, 2025
0be6594
fixup!: fix tests
doorgan Jun 20, 2025
b4dd201
fixup!: use persistent_term instead of adding .lsp to Project
doorgan Jun 21, 2025
d200ed5
fixup!: fix dialyzer issues
doorgan Jun 21, 2025
809375c
fixup!: Don't use parenthesis on 0-arity function
doorgan Jun 23, 2025
6638c13
fixup!: cleanup credo changes
doorgan Jun 23, 2025
8119e49
fixup!: Remove outdated comments
doorgan Jun 23, 2025
da45be7
fixup!: use info severity for normal shutdown log
doorgan Jun 23, 2025
9d230db
fixup!: cleanup credo changes
doorgan Jun 23, 2025
1a8ea20
refactor: isolate Engine from Expert
doorgan Jun 29, 2025
c3ca2e5
refactor: rename project node modules and simplify EngineApi/EngineNo…
doorgan Jun 29, 2025
7848108
refactor: use Burrito for packaging
doorgan Jun 29, 2025
0047f4d
chore: update github release workflow
doorgan Jun 29, 2025
fdc77e9
feat: add plain(non burrito) releases
doorgan Jun 30, 2025
8580b28
chore: Remove release-please-action
doorgan Jun 30, 2025
94ea757
Merge remote-tracking branch 'origin/main' into doorgan/isolate_engine
doorgan Jul 3, 2025
c320c31
chore: Remove build/release tasks
doorgan Jul 3, 2025
2e16555
chore: fix unordered aliases
doorgan Jul 3, 2025
aa2938b
Merge remote-tracking branch 'origin/main' into doorgan/isolate_engine
doorgan Jul 3, 2025
0bcac57
Merge branch 'doorgan/isolate_engine' into doorgan/burrito_packaging
doorgan Jul 3, 2025
0d20aaa
chore: update lockfile
doorgan Jul 3, 2025
b5ddfd8
Merge remote-tracking branch 'origin/main' into doorgan/burrito_packa…
doorgan Jul 3, 2025
b5a63e2
fix: rollback change to elixir version
doorgan Jul 3, 2025
38574ce
chore: remove ci integration tests
doorgan Jul 3, 2025
7a114bc
Revert changes to the release workflow
doorgan Jul 3, 2025
2ff1264
chore: add ci test for release builds
doorgan Jul 3, 2025
a7a7498
Merge remote-tracking branch 'origin/main' into doorgan/burrito_packa…
doorgan Jul 8, 2025
8b08c1a
Merge remote-tracking branch 'origin/doorgan/burrito_packaging' into …
doorgan Jul 8, 2025
43f3793
wip
mhanberg Jul 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion apps/expert/mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ defmodule Expert.MixProject do
dialyzer: Mix.Dialyzer.config(add_apps: [:jason]),
aliases: aliases(),
elixirc_paths: elixirc_paths(Mix.env()),
releases: releases()
releases: releases(),
default_release: :expert
]
end

Expand Down
4 changes: 2 additions & 2 deletions apps/expert/mix.lock
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"elixir_sense": {:git, "https://github.com/elixir-lsp/elixir_sense.git", "73ce7e0d239342fb9527d7ba567203e77dbb9b25", [ref: "73ce7e0d239342fb9527d7ba567203e77dbb9b25"]},
"erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"},
"file_system": {:hex, :file_system, "1.1.0", "08d232062284546c6c34426997dd7ef6ec9f8bbd090eb91780283c9016840e8f", [:mix], [], "hexpm", "bfcf81244f416871f2a2e15c1b515287faa5db9c6bcf290222206d120b3d43f6"},
"finch": {:hex, :finch, "0.19.0", "c644641491ea854fc5c1bbaef36bfc764e3f08e7185e1f084e35e0672241b76d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "fc5324ce209125d1e2fa0fcd2634601c52a787aff1cd33ee833664a5af4ea2b6"},
"finch": {:hex, :finch, "0.20.0", "5330aefb6b010f424dcbbc4615d914e9e3deae40095e73ab0c1bb0968933cadf", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2658131a74d051aabfcba936093c903b8e89da9a1b63e430bee62045fa9b2ee2"},
"gen_lsp": {:hex, :gen_lsp, "0.11.0", "9eda4d2fcaff94d9b3062e322fcf524c176db1502f584a3cff6135088b46084b", [:mix], [{:jason, "~> 1.3", [hex: :jason, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.5 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:schematic, "~> 0.2.1", [hex: :schematic, repo: "hexpm", optional: false]}, {:typed_struct, "~> 0.3.0", [hex: :typed_struct, repo: "hexpm", optional: false]}], "hexpm", "d67c20650a5290a02f7bac53083ac4487d3c6b461f35a8b14c5d2d7638c20d26"},
"hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"},
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
Expand All @@ -23,7 +23,7 @@
"path_glob": {:hex, :path_glob, "0.2.0", "b9e34b5045cac5ecb76ef1aa55281a52bf603bf7009002085de40958064ca312", [:mix], [{:nimble_parsec, "~> 1.2.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "be2594cb4553169a1a189f95193d910115f64f15f0d689454bb4e8cfae2e7ebc"},
"recon": {:hex, :recon, "2.5.6", "9052588e83bfedfd9b72e1034532aee2a5369d9d9343b61aeb7fbce761010741", [:mix, :rebar3], [], "hexpm", "96c6799792d735cc0f0fd0f86267e9d351e63339cbe03df9d162010cefc26bb0"},
"refactorex": {:hex, :refactorex, "0.1.52", "22a69062c84e0f20a752d3d6580269c09c242645ee4f722f03d4270dd8cbf218", [:mix], [{:sourceror, "~> 1.7", [hex: :sourceror, repo: "hexpm", optional: false]}], "hexpm", "4927fe6c3acd1f4695d6d3e443380167d61d004d507b1279c6084433900c94d0"},
"req": {:hex, :req, "0.5.10", "a3a063eab8b7510785a467f03d30a8d95f66f5c3d9495be3474b61459c54376c", [:mix], [{:brotli, "~> 0.3.1", [hex: :brotli, repo: "hexpm", optional: true]}, {:ezstd, "~> 1.0", [hex: :ezstd, repo: "hexpm", optional: true]}, {:finch, "~> 0.17", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 2.0.6 or ~> 2.1", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "8a604815743f8a2d3b5de0659fa3137fa4b1cffd636ecb69b30b2b9b2c2559be"},
"req": {:hex, :req, "0.5.14", "521b449fa0bf275e6d034c05f29bec21789a0d6cd6f7a1c326c7bee642bf6e07", [:mix], [{:brotli, "~> 0.3.1", [hex: :brotli, repo: "hexpm", optional: true]}, {:ezstd, "~> 1.0", [hex: :ezstd, repo: "hexpm", optional: true]}, {:finch, "~> 0.17", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 2.0.6 or ~> 2.1", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "b7b15692071d556c73432c7797aa7e96b51d1a2db76f746b976edef95c930021"},
"schematic": {:hex, :schematic, "0.2.1", "0b091df94146fd15a0a343d1bd179a6c5a58562527746dadd09477311698dbb1", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "0b255d65921e38006138201cd4263fd8bb807d9dfc511074615cd264a571b3b1"},
"snowflake": {:hex, :snowflake, "1.0.4", "8433b4e04fbed19272c55e1b7de0f7a1ee1230b3ae31a813b616fd6ef279e87a", [:mix], [], "hexpm", "badb07ebb089a5cff737738297513db3962760b10fe2b158ae3bebf0b4d5be13"},
"sourceror": {:hex, :sourceror, "1.10.0", "38397dedbbc286966ec48c7af13e228b171332be1ad731974438c77791945ce9", [:mix], [], "hexpm", "29dbdfc92e04569c9d8e6efdc422fc1d815f4bd0055dc7c51b8800fb75c4b3f1"},
Expand Down
36 changes: 35 additions & 1 deletion flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

31 changes: 19 additions & 12 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@
description = "Reimagined language server for Elixir";

inputs.nixpkgs.url = "flake:nixpkgs";
inputs.zigpkgs.url = "github:nixos/nixpkgs/12a55407652e04dcf2309436eb06fef0d3713ef3";
inputs.xzpkgs.url = "github:nixos/nixpkgs/18dd725c29603f582cf1900e0d25f9f1063dbf11";
inputs.flake-parts.url = "github:hercules-ci/flake-parts";
inputs.systems.url = "github:nix-systems/default";

outputs = {
self,
systems,
zigpkgs,
xzpkgs,
...
} @ inputs:
inputs.flake-parts.lib.mkFlake {inherit inputs;} {
Expand All @@ -19,8 +23,14 @@

systems = import systems;

perSystem = {pkgs, ...}: let
perSystem = {
pkgs,
system,
...
}: let
erlang = pkgs.beam.packages.erlang_25;
zpkgs = zigpkgs.legacyPackages.${system};
xzpkgs' = xzpkgs.legacyPackages.${system};
expert = self.lib.mkExpert {inherit erlang;};
in {
formatter = pkgs.alejandra;
Expand Down Expand Up @@ -51,17 +61,14 @@
};

devShells.default = pkgs.mkShell {
packages = let
beamPackages = pkgs.beam.packages;
in
[
beamPackages.erlang_27.erlang
beamPackages.erlang_27.elixir_1_17
]
++ pkgs.lib.optionals pkgs.stdenv.isDarwin [
pkgs.darwin.apple_sdk.frameworks.CoreFoundation
pkgs.darwin.apple_sdk.frameworks.CoreServices
];
packages = with pkgs; [
beam.packages.erlang_27.erlang
beam.packages.erlang_27.elixir_1_17
zpkgs.zig_0_14
xzpkgs'.xz
just
_7zz
];
};
};
};
Expand Down
102 changes: 102 additions & 0 deletions justfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
os := if os() == "macos" { "darwin" } else { os() }
arch := if arch() =~ "(arm|aarch64)" { "arm64" } else { if arch() =~ "(x86|x86_64)" { "amd64" } else { "unsupported" } }
local_target := if os =~ "(darwin|linux|windows)" { os + "_" + arch } else { "unsupported" }
apps := "expert engine forge expert_credo"

[doc('Run mix deps.get for the given project')]
deps project:
#!/usr/bin/env bash
cd apps/{{ project }}
mix deps.get

[doc('Run an arbitrary command inside the given project directory')]
run project +ARGS:
#!/usr/bin/env bash
set -euo pipefail
cd apps/{{ project }}
eval "{{ ARGS }}"

[doc('Compile the given project.')]
compile project: (deps project)
cd apps/{{ project }} && mix compile

[doc('Run tests in the given project')]
test project="all" *args="":
#!/usr/bin/env bash
set -euo pipefail

case {{ project }} in
all)
for proj in {{ apps }}; do
(cd "apps/$proj" && mix test {{args}})
done
;;
*)
(cd "apps/{{ project }}" && mix test {{args}})
;;
esac

[doc('Run a mix command in one or all projects. Use `just test` to run tests.')]
mix cmd *project:
#!/usr/bin/env bash

if [ -n "{{ project }}" ]; then
cd apps/{{ project }}
mix {{ cmd }}
else
for project in {{ apps }}; do
(
cd apps/"$project"

mix {{ cmd }}
)
done
fi

[doc('Lint all projects or just a single project')]
lint *project:
#!/usr/bin/env bash
set -euxo pipefail

just mix "format --check-formatted" {{ project }}
just mix credo {{ project }}
just mix dialyzer {{ project }}

build-engine:
#!/usr/bin/env bash

cd apps/engine
mix build


[doc('Build a release for the local system')]
[unix]
release-local: (deps "expert") (compile "engine") build-engine
#!/usr/bin/env bash
cd apps/expert

if [ "{{ local_target }}" == "unsupported" ]; then
echo "unsupported OS/Arch combination: {{ local_target }}"
exit 1
fi
MIX_ENV=prod EXPERT_RELEASE_MODE=burrito BURRITO_TARGET="{{ local_target }}" mix release --overwrite

[windows]
release-local: (deps "expert") (compile "engine") build-engine
# idk actually how to set env vars like this on windows, might crash
EXPERT_RELEASE_MODE=burrito BURRITO_TARGET="windows_amd64" MIX_ENV=prod mix release --no-compile

[doc('Build releases for all target platforms')]
release-all: (compile "engine")
#!/usr/bin/env bash
cd apps/expert
EXPERT_RELEASE_MODE=burrito MIX_ENV=prod mix release --no-compile

[doc('Build a plain release without burrito')]
release-plain: (compile "engine")
#!/usr/bin/env bash
cd apps/expert
MIX_ENV=prod mix release plain --overwrite

default: release-local

58 changes: 0 additions & 58 deletions mix.exs

This file was deleted.

Loading
Loading