// This file is part of Gear.
//
// Copyright (C) 2021-2024 Gear Technologies Inc.
// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//! environment paths and binaries
use std::sync::LazyLock;
/// target path from the root workspace
const TARGET: &str = "target";
const WASM_TARGET: &str = "target/wasm32-unknown-unknown";
static ROOT: LazyLock = LazyLock::new(|| env!("CARGO_MANIFEST_DIR").to_owned() + "/../");
pub static PROFILE: &str = if cfg!(debug_assertions) {
"debug"
} else {
"release"
};
fn bin_path(name: &str, profile: &str, wasm: bool) -> String {
ROOT.clone()
+ &[
if wasm { WASM_TARGET } else { TARGET },
"/",
profile,
"/",
name,
]
.concat()
}
/// path of gear node binary
pub fn node_bin() -> String {
bin_path("gear", "release", false)
}
/// path of binaries
pub fn bin(name: &str) -> String {
bin_path(name, PROFILE, false)
}
/// path of wasm binaries
pub fn wasm_bin(name: &str) -> String {
bin_path(name, PROFILE, true)
}