diff --git a/bin/lox b/bin/lox new file mode 100755 index 0000000..a8d89ef --- /dev/null +++ b/bin/lox @@ -0,0 +1,4 @@ +#!/usr/bin/env janet +(import lox/main) + +(main/main ;(dyn :args)) diff --git a/bundle.janet b/bundle.janet new file mode 100644 index 0000000..d318c08 --- /dev/null +++ b/bundle.janet @@ -0,0 +1,3 @@ +(defn install [manifest &] + (bundle/add manifest "lox") + (bundle/add-bin manifest "bin/lox")) diff --git a/bundle/info.jdn b/bundle/info.jdn deleted file mode 100644 index 29ca6c9..0000000 --- a/bundle/info.jdn +++ /dev/null @@ -1,7 +0,0 @@ -@{:author "Peter Rice" - :dependencies @["spork"] - :description "Lox programming language, from the book Crafting Interpreters" - :jpm-dependencies @["spork"] - :license "MIT" - :name "lox" - :version "0.0.1"} diff --git a/bundle/init.janet b/bundle/init.janet deleted file mode 100644 index 00f8992..0000000 --- a/bundle/init.janet +++ /dev/null @@ -1,4 +0,0 @@ -(if (dyn :install-time-syspath) - (use @install-time-syspath/spork/declare-cc) - (use spork/declare-cc)) -(dofile "project.janet" :env (jpm-shim-env)) diff --git a/flake.nix b/flake.nix index 77e6e17..f0a5a8a 100644 --- a/flake.nix +++ b/flake.nix @@ -16,7 +16,7 @@ ] (system: mkOutputs nixpkgs.legacyPackages.${system}); in { - packages = forAllSystems (pkgs: { + packages = forAllSystems (pkgs: rec { spork = pkgs.stdenv.mkDerivation rec { pname = "spork"; version = "1.0.0"; @@ -43,24 +43,27 @@ version = "0.0.1"; src = ./.; dontConfigure = true; - buildInputs = [ - pkgs.janet - self.packages.${pkgs.system}.spork - ]; - buildPhase = '' - janet-pm build - ''; + buildInputs = [ pkgs.janet ]; + nativeBuildInputs = [ pkgs.makeWrapper ]; installPhase = '' + mkdir $out + JANET_PATH=$out janet --install . mkdir -p $out/bin - mv _build/release/lox $out/bin + mv bin/lox $out/bin/lox + wrapProgram $out/bin/lox --set JANET_PATH $out ''; doInstallCheck = true; installCheckPhase = '' - echo 'print 1;' | $out/bin/lox + $out/bin/lox << EOF + fun add(x, y) { + return x + y; + } + print add(10, 5); + EOF | grep 15 ''; meta.mainProgram = "lox"; }; - default = self.packages.${pkgs.system}.lox; + default = lox; }); apps = forAllSystems (pkgs: { @@ -73,10 +76,10 @@ devShells = forAllSystems (pkgs: { default = pkgs.mkShell { - packages = [ + packages = with self.packages.${pkgs.system}; [ pkgs.janet - self.packages.${pkgs.system}.spork - self.packages.${pkgs.system}.lox + spork + lox ]; }; }); diff --git a/info.jdn b/info.jdn new file mode 100644 index 0000000..cda9112 --- /dev/null +++ b/info.jdn @@ -0,0 +1,7 @@ +@{:name "lox" + :version "0.0.1" + :author "Peter Rice" + :license "MIT" + :url "https://github.com/pvsr/janet-lox" + :description "Lox programming language, from the book Crafting Interpreters" + :dependencies @[]} diff --git a/project.janet b/project.janet deleted file mode 100644 index f05f4b1..0000000 --- a/project.janet +++ /dev/null @@ -1,12 +0,0 @@ -(declare-project - :name "lox" - :description ```Implementation of the Lox programming language from Crafting Interpreters``` - :license "MIT" - :author ```Peter Rice``` - :dependencies @["spork"] - :version "0.0.1") - -(declare-executable - :name "lox" - :entry "lox/main.janet" - :install true)