mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 02:11:53 +00:00
* add support for idmapped mounts to start-sdk * misc fixes * misc fixes * add default to textarea * fix iptables masquerade rule * fix textarea types * more fixes * better logging for rsync * fix tty size * fix wg conf generation for android * disable file mounts on dependencies * mostly there, some styling issues (#3069) * mostly there, some styling issues * fix: address comments (#3070) * fix: address comments * fix: fix * show SSL for any address with secure protocol and ssl added * better sorting and messaging --------- Co-authored-by: Alex Inkin <alexander@inkin.ru> * fixes for nextcloud * allow sidebar navigation during service state traansitions * wip: x-forwarded headers * implement x-forwarded-for proxy * lowercase domain names and fix warning popover bug * fix http2 websockets * fix websocket retry behavior * add arch filters to s9pk pack * use docker for start-cli install * add version range to package signer on registry * fix rcs < 0 * fix user information parsing * refactor service interface getters * disable idmaps * build fixes * update docker login action * streamline build * add start-cli workflow * rename * riscv64gc * fix ui packing * no default features on cli * make cli depend on GIT_HASH * more build fixes * more build fixes * interpolate arch within dockerfile * fix tests * add launch ui to service page plus other small improvements (#3075) * add launch ui to service page plus other small improvements * revert translation disable * add spinner to service list if service is health and loading * chore: some visual tune up * chore: update Taiga UI --------- Co-authored-by: waterplea <alexander@inkin.ru> * fix backups * feat: use arm hosted runners and don't fail when apt package does not exist (#3076) --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> Co-authored-by: Shadowy Super Coder <musashidisciple@proton.me> Co-authored-by: Matt Hill <MattDHill@users.noreply.github.com> Co-authored-by: Alex Inkin <alexander@inkin.ru> Co-authored-by: Remco Ros <remcoros@live.nl>
86 lines
2.7 KiB
Rust
86 lines
2.7 KiB
Rust
use std::collections::{BTreeMap, VecDeque};
|
|
use std::ffi::OsString;
|
|
use std::path::Path;
|
|
|
|
pub mod container_cli;
|
|
pub mod deprecated;
|
|
pub mod registry;
|
|
pub mod start_cli;
|
|
pub mod start_init;
|
|
pub mod startd;
|
|
pub mod tunnel;
|
|
|
|
#[derive(Default)]
|
|
pub struct MultiExecutable(BTreeMap<&'static str, fn(VecDeque<OsString>)>);
|
|
impl MultiExecutable {
|
|
pub fn enable_startd(&mut self) -> &mut Self {
|
|
self.0.insert("startd", startd::main);
|
|
self.0
|
|
.insert("embassyd", |_| deprecated::renamed("embassyd", "startd"));
|
|
self.0
|
|
.insert("embassy-init", |_| deprecated::removed("embassy-init"));
|
|
self
|
|
}
|
|
pub fn enable_start_cli(&mut self) -> &mut Self {
|
|
self.0.insert("start-cli", start_cli::main);
|
|
self.0.insert("embassy-cli", |_| {
|
|
deprecated::renamed("embassy-cli", "start-cli")
|
|
});
|
|
self.0
|
|
.insert("embassy-sdk", |_| deprecated::removed("embassy-sdk"));
|
|
self
|
|
}
|
|
pub fn enable_start_container(&mut self) -> &mut Self {
|
|
self.0.insert("start-container", container_cli::main);
|
|
self
|
|
}
|
|
pub fn enable_start_registryd(&mut self) -> &mut Self {
|
|
self.0.insert("start-registryd", registry::main);
|
|
self
|
|
}
|
|
pub fn enable_start_registry(&mut self) -> &mut Self {
|
|
self.0.insert("start-registry", registry::cli);
|
|
self
|
|
}
|
|
pub fn enable_start_tunneld(&mut self) -> &mut Self {
|
|
self.0.insert("start-tunneld", tunnel::main);
|
|
self
|
|
}
|
|
pub fn enable_start_tunnel(&mut self) -> &mut Self {
|
|
self.0.insert("start-tunnel", tunnel::cli);
|
|
self
|
|
}
|
|
|
|
fn select_executable(&self, name: &str) -> Option<fn(VecDeque<OsString>)> {
|
|
self.0.get(&name).copied()
|
|
}
|
|
|
|
pub fn execute(&self) {
|
|
let mut args = std::env::args_os().collect::<VecDeque<_>>();
|
|
for _ in 0..2 {
|
|
if let Some(s) = args.pop_front() {
|
|
if let Some(name) = Path::new(&*s).file_name().and_then(|s| s.to_str()) {
|
|
if name == "--contents" {
|
|
for name in self.0.keys() {
|
|
println!("{name}");
|
|
}
|
|
}
|
|
if let Some(x) = self.select_executable(&name) {
|
|
args.push_front(s);
|
|
return x(args);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
let args = std::env::args().collect::<VecDeque<_>>();
|
|
eprintln!(
|
|
"unknown executable: {}",
|
|
args.get(1)
|
|
.or_else(|| args.get(0))
|
|
.map(|s| s.as_str())
|
|
.unwrap_or("N/A")
|
|
);
|
|
std::process::exit(1);
|
|
}
|
|
}
|