use anyhow::Result;
use std::env;
use std::path::PathBuf;
pub const PUBLIC_PACKAGES: [&str; 5] = ["manatsu", "components", "composables", "sass", "shared"];
pub const PRIVATE_PACKAGES: [&str; 1] = ["playground"];
pub fn all() -> Vec<String> {
let mut packages = PUBLIC_PACKAGES.to_vec();
packages.extend_from_slice(&PRIVATE_PACKAGES);
let packages = packages.iter().map(|p| p.to_string());
packages.collect()
}
pub fn dir<P: AsRef<str>>(package: P) -> Result<PathBuf> {
let package = package.as_ref();
let cwd = env::current_dir()?;
let path = cwd.join("packages").join(package);
Ok(path)
}
pub fn src<P: AsRef<str>>(package: P) -> Result<PathBuf> {
let package = package.as_ref();
let path = dir(package)?.join("src");
Ok(path)
}
pub fn dist<P: AsRef<str>>(package: P) -> Result<PathBuf> {
let package = package.as_ref();
let path = dir(package)?.join("dist");
Ok(path)
}
pub fn dts<P: AsRef<str>>(package: P) -> Result<PathBuf> {
let package = package.as_ref();
let path = dist(package)?.join("index.d.ts");
Ok(path)
}
pub fn is_standalone<P: AsRef<str>>(package: P) -> bool {
let package = package.as_ref();
package != "components" && package != "composables"
}