mirror of https://codeberg.org/topola/topola.git
build: put egui and cli into separate crates
* build(ci): try to fix CI * build: use workspace dependencies for deduplication / drift avoidance
This commit is contained in:
parent
9dad83d221
commit
2d1af33204
|
|
@ -1,9 +1,9 @@
|
|||
matrix:
|
||||
include:
|
||||
- CHANNEL: stable
|
||||
FEATURES: cli
|
||||
FEATURES: disable_contracts
|
||||
- CHANNEL: nightly
|
||||
FEATURES: cli
|
||||
FEATURES:
|
||||
|
||||
steps:
|
||||
build_cli:
|
||||
|
|
@ -13,6 +13,6 @@ steps:
|
|||
CARGO_TERM_COLOR: always
|
||||
commands:
|
||||
- rustup default "$CHANNEL"
|
||||
- cargo build --features "$FEATURES" --
|
||||
- cargo build -p topola-cli --no-default-features --features "$FEATURES" --
|
||||
when:
|
||||
event: [pull_request, push, tag]
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
matrix:
|
||||
include:
|
||||
- CHANNEL: stable
|
||||
FEATURES: egui,disable_contracts
|
||||
FEATURES: disable_contracts
|
||||
- CHANNEL: nightly
|
||||
FEATURES: egui
|
||||
FEATURES:
|
||||
|
||||
steps:
|
||||
build_egui:
|
||||
|
|
@ -13,6 +13,6 @@ steps:
|
|||
CARGO_TERM_COLOR: always
|
||||
commands:
|
||||
- rustup default "$CHANNEL"
|
||||
- cargo build --features "$FEATURES" --bin "topola-egui"
|
||||
- cargo build -p topola-egui --no-default-features --features "$FEATURES"
|
||||
when:
|
||||
event: [pull_request, push, tag]
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
matrix:
|
||||
include:
|
||||
- CHANNEL: stable
|
||||
FEATURES: egui,disable_contracts
|
||||
FEATURES: disable_contracts
|
||||
- CHANNEL: nightly
|
||||
FEATURES: egui
|
||||
FEATURES:
|
||||
|
||||
steps:
|
||||
build_wasm:
|
||||
|
|
|
|||
|
|
@ -13,6 +13,6 @@ steps:
|
|||
CARGO_TERM_COLOR: always
|
||||
commands:
|
||||
- rustup default "$CHANNEL"
|
||||
- cargo test --verbose --features "$FEATURES"
|
||||
- cargo test --verbose --no-default-features --features "$FEATURES"
|
||||
when:
|
||||
event: [pull_request, push, tag]
|
||||
|
|
|
|||
135
Cargo.toml
135
Cargo.toml
|
|
@ -1,111 +1,59 @@
|
|||
[workspace]
|
||||
members = [
|
||||
".",
|
||||
"cli",
|
||||
"egui",
|
||||
"macros/specctra_derive",
|
||||
]
|
||||
resolver = "2"
|
||||
|
||||
[workspace.dependencies]
|
||||
derive-getters = "0.5"
|
||||
petgraph = { git = "https://codeberg.org/topola/petgraph.git" }
|
||||
rstar = "0.12"
|
||||
serde_json = "1.0"
|
||||
spade = "2.12.1"
|
||||
|
||||
[workspace.dependencies.geo]
|
||||
version = "0.28"
|
||||
default-features = false
|
||||
features = ["spade", "use-serde"]
|
||||
|
||||
[workspace.dependencies.serde]
|
||||
version = "1"
|
||||
features = ["derive"]
|
||||
|
||||
[package]
|
||||
name = "topola"
|
||||
description = "Work-in-progress free and open-source topological (rubberband) router and autorouter for printed circuit boards (PCBs)"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
default-run = "topola"
|
||||
|
||||
[lib]
|
||||
name = "topola"
|
||||
|
||||
[[bin]]
|
||||
name = "topola"
|
||||
required-features = ["cli"]
|
||||
|
||||
[[bin]]
|
||||
name = "topola-egui"
|
||||
required-features = ["egui"]
|
||||
|
||||
[features]
|
||||
default = ["disable_contracts"]
|
||||
cli = ["dep:clap"]
|
||||
egui = [
|
||||
"dep:eframe",
|
||||
"dep:egui",
|
||||
"dep:env_logger",
|
||||
"dep:fluent-templates",
|
||||
"dep:futures-lite",
|
||||
"dep:icu",
|
||||
"dep:rfd",
|
||||
"dep:sys-locale",
|
||||
"dep:unic-langid",
|
||||
]
|
||||
disable_contracts = ["contracts-try/disable_contracts"]
|
||||
|
||||
[dependencies]
|
||||
thiserror = "1.0"
|
||||
rstar = "0.12"
|
||||
petgraph = { git = "https://codeberg.org/topola/petgraph.git" }
|
||||
spade = "2.12.1"
|
||||
serde_json = "1.0"
|
||||
contracts-try = "0.7"
|
||||
enum_dispatch = "0.3.13"
|
||||
derive-getters = "0.5.0"
|
||||
bimap = "0.6.3"
|
||||
log = "0.4"
|
||||
contracts-try = "0.7"
|
||||
derive-getters.workspace = true
|
||||
enum_dispatch = "0.3.13"
|
||||
geo.workspace = true
|
||||
petgraph.workspace = true
|
||||
rstar.workspace = true
|
||||
serde.workspace = true
|
||||
spade.workspace = true
|
||||
thiserror = "1.0"
|
||||
utf8-chars = "3.0.4"
|
||||
|
||||
[dependencies.specctra_derive]
|
||||
path = "macros/specctra_derive"
|
||||
|
||||
[dependencies.geo]
|
||||
version = "0.28"
|
||||
default-features = false
|
||||
features = ["spade", "use-serde"]
|
||||
[dev-dependencies]
|
||||
serde_json.workspace = true
|
||||
|
||||
[dependencies.serde]
|
||||
version = "1"
|
||||
features = ["derive"]
|
||||
|
||||
[dependencies.clap]
|
||||
optional = true
|
||||
version = "4.5.18"
|
||||
features = ["derive"]
|
||||
|
||||
[dependencies.sys-locale]
|
||||
optional = true
|
||||
version = "0.3.1"
|
||||
|
||||
[dependencies.unic-langid]
|
||||
optional = true
|
||||
version = "0.9.5"
|
||||
features = ["macros", "serde"]
|
||||
|
||||
[dependencies.fluent-templates]
|
||||
optional = true
|
||||
version = "0.11"
|
||||
|
||||
[dependencies.icu]
|
||||
optional = true
|
||||
version = "1.5.0"
|
||||
features = ["experimental"]
|
||||
|
||||
[dependencies.eframe]
|
||||
optional = true
|
||||
version = "0.29"
|
||||
default-features = false
|
||||
features = ["accesskit", "default_fonts", "glow", "persistence"]
|
||||
|
||||
[dependencies.egui]
|
||||
optional = true
|
||||
version = "0.29"
|
||||
|
||||
[dependencies.rfd]
|
||||
optional = true
|
||||
version = "0.15"
|
||||
|
||||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
||||
|
||||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.futures-lite]
|
||||
optional = true
|
||||
version = "2.3"
|
||||
|
||||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.env_logger]
|
||||
optional = true
|
||||
version = "0.11"
|
||||
|
||||
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
||||
wasm-bindgen-futures = "0.4"
|
||||
[package.metadata.docs.rs]
|
||||
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
|
||||
|
||||
[profile.release]
|
||||
opt-level = 2 # fast and small wasm
|
||||
|
|
@ -113,10 +61,3 @@ opt-level = 2 # fast and small wasm
|
|||
# Optimize all dependencies even in debug builds:
|
||||
[profile.dev.package."*"]
|
||||
opt-level = 2
|
||||
|
||||
[build-dependencies]
|
||||
clap_mangen = "0.2.23"
|
||||
clap = {version="4.5.18", features = ["derive"] }
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
|
||||
|
|
|
|||
12
INSTALL.md
12
INSTALL.md
|
|
@ -36,7 +36,7 @@ Change your working directory to your clone of Topola's repository:
|
|||
Run the following command to build and install Topola's command-line
|
||||
application:
|
||||
|
||||
cargo install --locked --path . --features cli
|
||||
cargo install --locked --path cli
|
||||
|
||||
The application will now be invokable from your terminal as `topola`.
|
||||
|
||||
|
|
@ -70,12 +70,12 @@ In the newly opened file dialog, choose the file named
|
|||
|
||||
If you chose not to install the command-line application, you can build
|
||||
and run it without installing by replacing the `topola` command with
|
||||
`cargo run --features cli --`. Running the above autorouting example is
|
||||
`cargo run -p topola-cli --`. Running the above autorouting example is
|
||||
then as follows:
|
||||
|
||||
```
|
||||
cd tests/single_layer/tht_diode_bridge_rectifier/
|
||||
cargo run --features cli -- tht_diode_bridge_rectifier.dsn
|
||||
cargo run -p topola-cli -- tht_diode_bridge_rectifier.dsn
|
||||
```
|
||||
|
||||
Viewing the results is obviously the same.
|
||||
|
|
@ -89,7 +89,7 @@ framework.
|
|||
|
||||
The following command will build and install Topola's GUI application:
|
||||
|
||||
cargo install --locked --path . --features egui --bin topola-egui
|
||||
cargo install --locked --path egui
|
||||
|
||||
You can then invoke the application from your terminal by running
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ If you chose not to install the GUI application, you can build and run
|
|||
it without installing by running
|
||||
|
||||
```
|
||||
cargo run --features egui --bin topola-egui
|
||||
cargo run -p topola-egui
|
||||
```
|
||||
|
||||
instead of the above `topola-egui` command.
|
||||
|
|
@ -180,4 +180,4 @@ Of course, you can enable contracts for any build target. For instance,
|
|||
the following command will build the Egui application with debug profile
|
||||
and contracts enabled:
|
||||
|
||||
cargo build --features egui --bin topola-egui --no-default-features
|
||||
cargo build -p topola-egui --no-default-features
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
[package]
|
||||
name = "topola-cli"
|
||||
description = "Work-in-progress free and open-source topological (rubberband) router and autorouter for printed circuit boards (PCBs)"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[[bin]]
|
||||
name = "topola"
|
||||
path = "src/main.rs"
|
||||
|
||||
[features]
|
||||
default = ["disable_contracts"]
|
||||
disable_contracts = ["topola/disable_contracts"]
|
||||
|
||||
[dependencies]
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
|
||||
[dependencies.topola]
|
||||
path = ".."
|
||||
default-features = false
|
||||
|
||||
[dependencies.clap]
|
||||
version = "4.5.18"
|
||||
features = ["derive"]
|
||||
|
||||
[build-dependencies]
|
||||
clap_mangen = "0.2.23"
|
||||
clap = {version="4.5.18", features = ["derive"] }
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
include!("src/bin/topola/cli.rs");
|
||||
include!("src/cli.rs");
|
||||
use clap::CommandFactory;
|
||||
use clap_mangen::Man;
|
||||
use std::fs::{create_dir_all, File};
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
[package]
|
||||
name = "topola-egui"
|
||||
description = "Work-in-progress free and open-source topological (rubberband) router and autorouter for printed circuit boards (PCBs)"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[features]
|
||||
default = ["disable_contracts"]
|
||||
disable_contracts = ["topola/disable_contracts"]
|
||||
|
||||
[dependencies]
|
||||
derive-getters.workspace = true
|
||||
egui = "0.29"
|
||||
fluent-templates = "0.11"
|
||||
geo.workspace = true
|
||||
log = "0.4"
|
||||
petgraph.workspace = true
|
||||
rfd = "0.15"
|
||||
rstar.workspace = true
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
spade.workspace = true
|
||||
sys-locale = "0.3.1"
|
||||
|
||||
[dependencies.topola]
|
||||
path = ".."
|
||||
default-features = false
|
||||
|
||||
[dependencies.unic-langid]
|
||||
version = "0.9.5"
|
||||
features = ["macros", "serde"]
|
||||
|
||||
[dependencies.icu]
|
||||
version = "1.5.0"
|
||||
features = ["experimental"]
|
||||
|
||||
[dependencies.eframe]
|
||||
version = "0.29"
|
||||
default-features = false
|
||||
features = ["accesskit", "default_fonts", "glow", "persistence"]
|
||||
|
||||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
||||
futures-lite = "2.3"
|
||||
env_logger = "0.11"
|
||||
|
||||
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
||||
wasm-bindgen-futures = "0.4"
|
||||
|
|
@ -5,7 +5,7 @@ use unic_langid::LanguageIdentifier;
|
|||
|
||||
static_loader! {
|
||||
static LOCALES = {
|
||||
locales: "./locales",
|
||||
locales: "../locales",
|
||||
fallback_language: "en-US",
|
||||
};
|
||||
}
|
||||
Loading…
Reference in New Issue