mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 10:21:52 +00:00
* start consolidating * add start-cli flash-os * combine install and setup and refactor all * use http * undo mock * fix translation * translations * use dialogservice wrapper * better ST messaging on setup * only warn on update if breakages (#3097) * finish setup wizard and ui language-keyboard feature * fix typo * wip: localization * remove start-tunnel readme * switch to posix strings for language internal * revert mock * translate backend strings * fix missing about text * help text for args * feat: add "Add new gateway" option (#3098) * feat: add "Add new gateway" option * Update web/projects/ui/src/app/routes/portal/components/form/controls/select.component.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * add translation --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Matt Hill <mattnine@protonmail.com> * fix dns selection * keyboard keymap also * ability to shutdown after install * revert mock * working setup flow + manifest localization * (mostly) redundant localization on frontend * version bump * omit live medium from disk list and better space management * ignore missing package archive on 035 migration * fix device migration * add i18n helper to sdk * fix install over 0.3.5.1 * fix grub config --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> Co-authored-by: Matt Hill <MattDHill@users.noreply.github.com> Co-authored-by: Alex Inkin <alexander@inkin.ru> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
111 lines
3.4 KiB
Rust
111 lines
3.4 KiB
Rust
use std::sync::Arc;
|
|
|
|
use rpc_toolkit::yajrc::RpcError;
|
|
use rpc_toolkit::{
|
|
CallRemoteHandler, Context, Empty, HandlerExt, ParentHandler, from_fn, from_fn_async,
|
|
};
|
|
|
|
use crate::context::{CliContext, DiagnosticContext, RpcContext};
|
|
use crate::disk::repair;
|
|
use crate::init::SYSTEM_REBUILD_PATH;
|
|
use crate::prelude::*;
|
|
use crate::shutdown::Shutdown;
|
|
use crate::util::io::delete_file;
|
|
|
|
pub fn diagnostic<C: Context>() -> ParentHandler<C> {
|
|
ParentHandler::new()
|
|
.subcommand(
|
|
"error",
|
|
from_fn(error)
|
|
.with_about("about.display-diagnostic-error")
|
|
.with_call_remote::<CliContext>(),
|
|
)
|
|
.subcommand(
|
|
"logs",
|
|
crate::system::logs::<DiagnosticContext>().with_about("about.display-os-logs"),
|
|
)
|
|
.subcommand(
|
|
"logs",
|
|
from_fn_async(crate::logs::cli_logs::<DiagnosticContext, Empty>)
|
|
.no_display()
|
|
.with_about("about.display-os-logs"),
|
|
)
|
|
.subcommand(
|
|
"kernel-logs",
|
|
crate::system::kernel_logs::<DiagnosticContext>()
|
|
.with_about("about.display-kernel-logs"),
|
|
)
|
|
.subcommand(
|
|
"kernel-logs",
|
|
from_fn_async(crate::logs::cli_logs::<DiagnosticContext, Empty>)
|
|
.no_display()
|
|
.with_about("about.display-kernel-logs"),
|
|
)
|
|
.subcommand(
|
|
"restart",
|
|
from_fn(restart)
|
|
.no_display()
|
|
.with_about("about.restart-server")
|
|
.with_call_remote::<CliContext>(),
|
|
)
|
|
.subcommand(
|
|
"disk",
|
|
disk::<C>().with_about("about.command-remove-disk-filesystem"),
|
|
)
|
|
.subcommand(
|
|
"rebuild",
|
|
from_fn_async(rebuild)
|
|
.no_display()
|
|
.with_about("about.teardown-rebuild-containers")
|
|
.with_call_remote::<CliContext>(),
|
|
)
|
|
}
|
|
|
|
// #[command]
|
|
pub fn error(ctx: DiagnosticContext) -> Result<Arc<RpcError>, Error> {
|
|
Ok(ctx.error.clone())
|
|
}
|
|
|
|
pub fn restart(ctx: DiagnosticContext) -> Result<(), Error> {
|
|
ctx.shutdown
|
|
.send(Shutdown {
|
|
disk_guid: ctx.disk_guid.clone(),
|
|
restart: true,
|
|
})
|
|
.map_err(|_| eyre!("receiver dropped"))
|
|
.log_err();
|
|
Ok(())
|
|
}
|
|
pub async fn rebuild(ctx: DiagnosticContext) -> Result<(), Error> {
|
|
tokio::fs::write(SYSTEM_REBUILD_PATH, b"").await?;
|
|
restart(ctx)
|
|
}
|
|
|
|
pub fn disk<C: Context>() -> ParentHandler<C> {
|
|
ParentHandler::new()
|
|
.subcommand("forget", from_fn_async(forget_disk::<C>).no_cli())
|
|
.subcommand(
|
|
"forget",
|
|
CallRemoteHandler::<CliContext, _, _>::new(
|
|
from_fn_async(forget_disk::<RpcContext>).no_display(),
|
|
)
|
|
.no_display()
|
|
.with_about("about.remove-disk-filesystem"),
|
|
)
|
|
.subcommand("repair", from_fn_async(|_: C| repair()).no_cli())
|
|
.subcommand(
|
|
"repair",
|
|
CallRemoteHandler::<CliContext, _, _>::new(
|
|
from_fn_async(|_: RpcContext| repair()).no_display(),
|
|
)
|
|
.no_display()
|
|
.with_about("about.repair-disk-corruption"),
|
|
)
|
|
}
|
|
|
|
pub async fn forget_disk<C: Context>(_: C) -> Result<(), Error> {
|
|
delete_file("/media/startos/config/overlay/etc/hostname").await?;
|
|
delete_file("/media/startos/config/disk.guid").await?;
|
|
Ok(())
|
|
}
|