From 7be2f84010fb2ffedb2dd3368294061bc439ccee Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Sat, 18 Dec 2021 23:44:03 +0000 Subject: [PATCH] JS project, fix target serialization --- .github/workflows/ci.yaml | 14 ++++++++ compiler-cli/src/build.rs | 4 +-- compiler-cli/src/main.rs | 2 +- compiler-core/src/build.rs | 2 ++ .../.github/workflows/test.yml | 0 test/{project => project_erlang}/.gitignore | 0 test/{project => project_erlang}/README.md | 1 - test/{project => project_erlang}/gleam.toml | 0 .../{project => project_erlang}/manifest.toml | 0 .../src/erlang_file.erl | 0 .../src/erlang_header.hrl | 0 .../src/project.gleam | 0 .../test/erlang_test_file.erl | 0 .../test/erlang_test_header.hrl | 0 .../test/project_test.gleam | 0 .../.github/workflows/test.yml | 23 +++++++++++++ test/project_javascript/.gitignore | 3 ++ test/project_javascript/README.md | 32 +++++++++++++++++++ test/project_javascript/gleam.toml | 8 +++++ test/project_javascript/manifest.toml | 9 ++++++ test/project_javascript/src/project.gleam | 9 ++++++ .../test/project_test.gleam | 7 ++++ 22 files changed, 110 insertions(+), 4 deletions(-) rename test/{project => project_erlang}/.github/workflows/test.yml (100%) rename test/{project => project_erlang}/.gitignore (100%) rename test/{project => project_erlang}/README.md (96%) rename test/{project => project_erlang}/gleam.toml (100%) rename test/{project => project_erlang}/manifest.toml (100%) rename test/{project => project_erlang}/src/erlang_file.erl (100%) rename test/{project => project_erlang}/src/erlang_header.hrl (100%) rename test/{project => project_erlang}/src/project.gleam (100%) rename test/{project => project_erlang}/test/erlang_test_file.erl (100%) rename test/{project => project_erlang}/test/erlang_test_header.hrl (100%) rename test/{project => project_erlang}/test/project_test.gleam (100%) create mode 100644 test/project_javascript/.github/workflows/test.yml create mode 100644 test/project_javascript/.gitignore create mode 100644 test/project_javascript/README.md create mode 100644 test/project_javascript/gleam.toml create mode 100644 test/project_javascript/manifest.toml create mode 100644 test/project_javascript/src/project.gleam create mode 100644 test/project_javascript/test/project_test.gleam diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fe543c573..50992b341 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -144,6 +144,20 @@ jobs: sed -i 's/cargo run --/gleam/' */rebar.config */Makefile working-directory: ./test + - name: test/project_erlang + run: | + gleam run + gleam test + gleam docs build + working-directory: ./test/project_erlang + + - name: test/project_javascript + run: | + gleam run + gleam test + gleam docs build + working-directory: ./test/project_javascript + - name: test/language Erlang run: make clean erlang working-directory: ./test/language diff --git a/compiler-cli/src/build.rs b/compiler-cli/src/build.rs index d622fa193..3c3f52670 100644 --- a/compiler-cli/src/build.rs +++ b/compiler-cli/src/build.rs @@ -1,7 +1,7 @@ use std::time::Instant; use gleam_core::{ - build::{Package, ProjectCompiler, Target}, + build::{Package, ProjectCompiler}, Result, }; @@ -14,7 +14,7 @@ pub fn main() -> Result { let telemetry = Box::new(cli::Reporter::new()); let io = fs::ProjectIO::new(); let start = Instant::now(); - let target = Target::Erlang; + let target = root_config.target; tracing::info!("Compiling packages"); let compiled = diff --git a/compiler-cli/src/main.rs b/compiler-cli/src/main.rs index b5e9db0ff..d40ee1cb7 100644 --- a/compiler-cli/src/main.rs +++ b/compiler-cli/src/main.rs @@ -199,7 +199,7 @@ pub struct CompilePackage { #[structopt(long = "out", default_value = ".")] output_directory: PathBuf, - /// A path to which directories of precompiled Gleam projects can be found + /// A directories of precompiled Gleam projects #[structopt(long = "lib", default_value = ".")] libraries_directory: PathBuf, } diff --git a/compiler-core/src/build.rs b/compiler-core/src/build.rs index e3ff73b20..0b2657dca 100644 --- a/compiler-core/src/build.rs +++ b/compiler-core/src/build.rs @@ -33,7 +33,9 @@ use strum::{Display, EnumString, EnumVariantNames, VariantNames}; )] #[strum(serialize_all = "lowercase")] pub enum Target { + #[serde(rename = "erlang")] Erlang, + #[serde(rename = "javascript")] JavaScript, } diff --git a/test/project/.github/workflows/test.yml b/test/project_erlang/.github/workflows/test.yml similarity index 100% rename from test/project/.github/workflows/test.yml rename to test/project_erlang/.github/workflows/test.yml diff --git a/test/project/.gitignore b/test/project_erlang/.gitignore similarity index 100% rename from test/project/.gitignore rename to test/project_erlang/.gitignore diff --git a/test/project/README.md b/test/project_erlang/README.md similarity index 96% rename from test/project/README.md rename to test/project_erlang/README.md index fedeb1c09..feb451952 100644 --- a/test/project/README.md +++ b/test/project_erlang/README.md @@ -24,7 +24,6 @@ It covers these features: ## Quick start ```sh -gleam deps download gleam run gleam test ``` diff --git a/test/project/gleam.toml b/test/project_erlang/gleam.toml similarity index 100% rename from test/project/gleam.toml rename to test/project_erlang/gleam.toml diff --git a/test/project/manifest.toml b/test/project_erlang/manifest.toml similarity index 100% rename from test/project/manifest.toml rename to test/project_erlang/manifest.toml diff --git a/test/project/src/erlang_file.erl b/test/project_erlang/src/erlang_file.erl similarity index 100% rename from test/project/src/erlang_file.erl rename to test/project_erlang/src/erlang_file.erl diff --git a/test/project/src/erlang_header.hrl b/test/project_erlang/src/erlang_header.hrl similarity index 100% rename from test/project/src/erlang_header.hrl rename to test/project_erlang/src/erlang_header.hrl diff --git a/test/project/src/project.gleam b/test/project_erlang/src/project.gleam similarity index 100% rename from test/project/src/project.gleam rename to test/project_erlang/src/project.gleam diff --git a/test/project/test/erlang_test_file.erl b/test/project_erlang/test/erlang_test_file.erl similarity index 100% rename from test/project/test/erlang_test_file.erl rename to test/project_erlang/test/erlang_test_file.erl diff --git a/test/project/test/erlang_test_header.hrl b/test/project_erlang/test/erlang_test_header.hrl similarity index 100% rename from test/project/test/erlang_test_header.hrl rename to test/project_erlang/test/erlang_test_header.hrl diff --git a/test/project/test/project_test.gleam b/test/project_erlang/test/project_test.gleam similarity index 100% rename from test/project/test/project_test.gleam rename to test/project_erlang/test/project_test.gleam diff --git a/test/project_javascript/.github/workflows/test.yml b/test/project_javascript/.github/workflows/test.yml new file mode 100644 index 000000000..dc16df81c --- /dev/null +++ b/test/project_javascript/.github/workflows/test.yml @@ -0,0 +1,23 @@ +name: test + +on: + push: + branches: + - master + - main + pull_request: + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2.0.0 + - uses: gleam-lang/setup-erlang@v1.1.2 + with: + otp-version: 23.2 + - uses: gleam-lang/setup-gleam@v1.0.2 + with: + gleam-version: 0.18.0-dev + - run: gleam format --check src test + - run: gleam deps download + - run: gleam test diff --git a/test/project_javascript/.gitignore b/test/project_javascript/.gitignore new file mode 100644 index 000000000..c1dc9b0dd --- /dev/null +++ b/test/project_javascript/.gitignore @@ -0,0 +1,3 @@ +*.beam +*.ez +build diff --git a/test/project_javascript/README.md b/test/project_javascript/README.md new file mode 100644 index 000000000..3b89fccd8 --- /dev/null +++ b/test/project_javascript/README.md @@ -0,0 +1,32 @@ +# Project + +A test Gleam project. + +It covers these features: + +- Downloading packages + - Specified in config.dependencies +- Importing packages + - Specified in config.dependencies +- Compilation of Gleam code + - in src + - in test +- Importing Gleam src code into test + +These features are not tested yet + +- Downloading packages + - Specified in config.dev-dependencies +- Importing packages + - Specified in config.dev-dependencies +- Compilation of locally defined JavaScript modules + - in src + - in test +- Importing Gleam src code into test + +## Quick start + +```sh +gleam run +gleam test +``` diff --git a/test/project_javascript/gleam.toml b/test/project_javascript/gleam.toml new file mode 100644 index 000000000..232956379 --- /dev/null +++ b/test/project_javascript/gleam.toml @@ -0,0 +1,8 @@ +name = "project" +version = "0.1.0" +target = "javascript" + +[dependencies] +gleam_stdlib = "~> 0.18" + +[dev-dependencies] diff --git a/test/project_javascript/manifest.toml b/test/project_javascript/manifest.toml new file mode 100644 index 000000000..534e687eb --- /dev/null +++ b/test/project_javascript/manifest.toml @@ -0,0 +1,9 @@ +# This file was generated by Gleam +# You typically do not need to edit this file + +packages = [ + { name = "gleam_stdlib", version = "0.18.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "2938F996BBB25D75E973226846CDDFA33AB5590AFC8A9D043A356EA85272510D" }, +] + +[requirements] +gleam_stdlib = "~> 0.18" diff --git a/test/project_javascript/src/project.gleam b/test/project_javascript/src/project.gleam new file mode 100644 index 000000000..95d4e6c41 --- /dev/null +++ b/test/project_javascript/src/project.gleam @@ -0,0 +1,9 @@ +import gleam/io + +pub fn main() { + io.println("Hello, from the Gleam module!") + io.println(erlang_function()) +} + +external fn erlang_function() -> String = + "erlang_file" "main" diff --git a/test/project_javascript/test/project_test.gleam b/test/project_javascript/test/project_test.gleam new file mode 100644 index 000000000..26279dd1e --- /dev/null +++ b/test/project_javascript/test/project_test.gleam @@ -0,0 +1,7 @@ +import gleam/io +import project + +pub fn main() { + project.main() + io.println("Hello, from the Gleam test module!") +}