Skip to content

Commit

Permalink
feat: Move common build code to sails-builder
Browse files Browse the repository at this point in the history
  • Loading branch information
holykol committed Apr 18, 2024
1 parent 1b3859a commit aae20ea
Show file tree
Hide file tree
Showing 12 changed files with 141 additions and 113 deletions.
21 changes: 13 additions & 8 deletions Cargo.lock

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

128 changes: 65 additions & 63 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,63 +1,65 @@
[workspace.package]
version = "0.0.1"
authors = ["Gear Technologies"]
edition = "2021"
license = "GPL-3.0"

[workspace]
resolver = "2"
members = [
"client-gen",
"examples/puppeteer/app",
"examples/puppeteer/wasm",
"examples/rmrk/catalog/app",
"examples/rmrk/catalog/wasm",
"examples/rmrk/resource/app",
"examples/rmrk/resource/wasm",
"examples/this-that-svc/app",
"examples/this-that-svc/wasm",
"idl-meta",
"idlgen",
"idlparser",
"macros",
"macros/core",
"rtl",
]

[workspace.dependencies]
anyhow = "1"
convert-case = { package = "convert_case", version = "0.6" }
futures = { version = "0.3", default-features = false }
gear-core-errors = "1.1.1"
git-download = "0.1"
gstd = "1.1.1"
gtest = "1.1.1"
gwasm-builder = { package = "gear-wasm-builder", version = "1.1.1" }
handlebars = "4.4"
hashbrown = "0.14"
hex = { version = "0.4", default-features = false }
insta = "1.34"
itertools = "0.12"
lalrpop = { version = "0.20", default-features = false }
lalrpop-util = "0.20"
logos = "0.13"
parity-scale-codec = { version = "3.6", default-features = false }
prettyplease = "0.2"
proc-macro-error = "1.0"
proc-macro2 = { version = "1", default-features = false }
quote = "1.0"
sails-clientgen = { path = "client-gen" }
sails-exec-context-gstd = { path = "exec-context/gstd" }
sails-idl-meta = { path = "idl-meta" }
sails-idlgen = { path = "idlgen" }
sails-idlparser = { path = "idlparser" }
sails-macros = { path = "macros" }
sails-rtl = { path = "rtl" }
scale-info = { version = "2.10", default-features = false }
serde = "1.0"
serde-json = { package = "serde_json", version = "1.0" }
syn = "2.0"
thiserror = "1.0"
thiserror-no-std = "2.0"
tokio = "1.36"
trybuild = "1"
[workspace.package]
version = "0.0.1"
authors = ["Gear Technologies"]
edition = "2021"
license = "GPL-3.0"

[workspace]
members = [
"builder",
"client-gen",
"examples/puppeteer/app",
"examples/puppeteer/wasm",
"examples/rmrk/catalog/app",
"examples/rmrk/catalog/wasm",
"examples/rmrk/resource/app",
"examples/rmrk/resource/wasm",
"examples/this-that-svc/app",
"examples/this-that-svc/wasm",
"idl-meta",
"idlgen",
"idlparser",
"macros",
"macros/core",
"rtl",
]
resolver = "2"

[workspace.dependencies]
anyhow = "1"
convert-case = { package = "convert_case", version = "0.6" }
futures = { version = "0.3", default-features = false }
gear-core-errors = "1.1.1"
git-download = "0.1"
gstd = "1.1.1"
gtest = "1.1.1"
gwasm-builder = { package = "gear-wasm-builder", version = "1.1.1" }
handlebars = "4.4"
hashbrown = "0.14"
hex = { version = "0.4", default-features = false }
insta = "1.34"
itertools = "0.12"
lalrpop = { version = "0.20", default-features = false }
lalrpop-util = "0.20"
logos = "0.13"
parity-scale-codec = { version = "3.6", default-features = false }
prettyplease = "0.2"
proc-macro-error = "1.0"
proc-macro2 = { version = "1", default-features = false }
quote = "1.0"
sails-builder = { path = "builder" }
sails-clientgen = { path = "client-gen" }
sails-exec-context-gstd = { path = "exec-context/gstd" }
sails-idl-meta = { path = "idl-meta" }
sails-idlgen = { path = "idlgen" }
sails-idlparser = { path = "idlparser" }
sails-macros = { path = "macros" }
sails-rtl = { path = "rtl" }
scale-info = { version = "2.10", default-features = false }
serde = "1.0"
serde-json = { package = "serde_json", version = "1.0" }
syn = "2.0"
thiserror = "1.0"
thiserror-no-std = "2.0"
tokio = "1.36"
trybuild = "1"
13 changes: 13 additions & 0 deletions builder/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[package]
name = "sails-builder"
version.workspace = true
authors.workspace = true
edition.workspace = true
license.workspace = true

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
sails-idlgen.workspace = true
gwasm-builder.workspace = true
sails-idl-meta.workspace = true
37 changes: 37 additions & 0 deletions builder/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
use sails_idl_meta::{ProgramMeta, ServiceMeta};
use std::{env, fs::File, path::PathBuf};

pub struct Builder {
idl_file_path: PathBuf,
}

impl Builder {
pub fn new() -> Self {
let pkg_name = env::var("CARGO_PKG_NAME").unwrap();
let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap();

let idl_file_path = PathBuf::from(manifest_dir).join(format!("{}.idl", pkg_name));

Self { idl_file_path }
}

pub fn build(self) -> Self {
gwasm_builder::build();

self
}

pub fn generate_service_idl<S: ServiceMeta>(self) -> Self {
let idl_file = File::create(&self.idl_file_path).unwrap();
sails_idlgen::service::generate_idl::<S>(idl_file).unwrap();

self
}

pub fn generate_program_idl<P: ProgramMeta>(self) -> Self {
let idl_file = File::create(&self.idl_file_path).unwrap();
sails_idlgen::program::generate_idl::<P>(idl_file).unwrap();

self
}
}
3 changes: 1 addition & 2 deletions examples/puppeteer/wasm/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,5 @@ sails-rtl.workspace = true
puppeteer-app = { path = "../app" }

[build-dependencies]
gwasm-builder.workspace = true
sails-idlgen.workspace = true
sails-builder.workspace = true
puppeteer-app = { path = "../app" }
4 changes: 3 additions & 1 deletion examples/puppeteer/wasm/build.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
use sails_builder::Builder;

fn main() {
gwasm_builder::build();
Builder::new().build();
}
3 changes: 1 addition & 2 deletions examples/rmrk/catalog/wasm/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,5 @@ edition = "2021"
rmrk-catalog-app = { path = "../app" }

[build-dependencies]
gwasm-builder.workspace = true
sails-idlgen.workspace = true
rmrk-catalog-app = { path = "../app" } # Used for generating IDL (service metadata)
sails-builder.workspace = true
13 changes: 2 additions & 11 deletions examples/rmrk/catalog/wasm/build.rs
Original file line number Diff line number Diff line change
@@ -1,15 +1,6 @@
use rmrk_catalog_app::Program;
use sails_idlgen::program;
use std::{env, fs::File, path::PathBuf};
use sails_builder::Builder;

fn main() {
gwasm_builder::build();

let manifest_dir_path = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());

let idl_file_path = manifest_dir_path.join("rmrk-catalog.idl");

let idl_file = File::create(idl_file_path).unwrap();

program::generate_idl::<Program>(idl_file).unwrap();
Builder::new().build().generate_program_idl::<Program>();
}
3 changes: 1 addition & 2 deletions examples/rmrk/resource/wasm/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ edition = "2021"
rmrk-resource-app = { path = "../app" }

[build-dependencies]
gwasm-builder.workspace = true
rmrk-resource-app = { path = "../app" }
sails-idlgen.workspace = true
sails-builder.workspace = true

[dev-dependencies]
gtest.workspace = true
Expand Down
13 changes: 2 additions & 11 deletions examples/rmrk/resource/wasm/build.rs
Original file line number Diff line number Diff line change
@@ -1,15 +1,6 @@
use rmrk_resource_app::Program;
use sails_idlgen::program;
use std::{env, fs::File, path::PathBuf};
use sails_builder::Builder;

fn main() {
gwasm_builder::build();

let manifest_dir_path = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());

let idl_file_path = manifest_dir_path.join("rmrk-resource.idl");

let idl_file = File::create(idl_file_path).unwrap();

program::generate_idl::<Program>(idl_file).unwrap();
Builder::new().build().generate_program_idl::<Program>();
}
3 changes: 1 addition & 2 deletions examples/this-that-svc/wasm/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,5 @@ gstd.workspace = true
this-that-svc-app = { path = "../app" }

[build-dependencies]
gwasm-builder.workspace = true
sails-idlgen.workspace = true
sails-builder.workspace = true
this-that-svc-app = { path = "../app" }
13 changes: 2 additions & 11 deletions examples/this-that-svc/wasm/build.rs
Original file line number Diff line number Diff line change
@@ -1,15 +1,6 @@
use sails_idlgen::service;
use std::{env, fs::File, path::PathBuf};
use this_that_svc_app::MyService;
use sails_builder::Builder;

fn main() {
gwasm_builder::build();

let manifest_dir_path = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());

let idl_file_path = manifest_dir_path.join("this-that-svc.idl");

let idl_file = File::create(idl_file_path).unwrap();

service::generate_idl::<MyService>(idl_file).unwrap();
Builder::new().build().generate_service_idl::<MyService>();
}

0 comments on commit aae20ea

Please sign in to comment.