You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.2 KiB
Rust
119 lines
3.2 KiB
Rust
mod configure_locale;
|
|
mod configure_network;
|
|
mod configure_unakite;
|
|
mod create_partitions;
|
|
mod install_base;
|
|
mod install_bootloader;
|
|
mod install_desktop;
|
|
mod install_extra_packages;
|
|
mod install_flatpak;
|
|
mod install_kernels;
|
|
mod install_timeshift;
|
|
mod install_zramd;
|
|
mod setup_root_user;
|
|
mod setup_users;
|
|
|
|
use std::{fmt, path::PathBuf};
|
|
|
|
pub use configure_locale::*;
|
|
pub use configure_network::*;
|
|
pub use configure_unakite::*;
|
|
pub use create_partitions::*;
|
|
pub use install_base::*;
|
|
pub use install_bootloader::*;
|
|
pub use install_desktop::*;
|
|
pub use install_extra_packages::*;
|
|
pub use install_flatpak::*;
|
|
pub use install_kernels::*;
|
|
pub use install_timeshift::*;
|
|
pub use install_zramd::*;
|
|
pub use setup_root_user::*;
|
|
pub use setup_users::*;
|
|
|
|
use crate::scripting::script::{Script, ScriptArgs};
|
|
|
|
pub trait Task {
|
|
type Config: ScriptArgs + fmt::Debug + Clone;
|
|
type UpScript: Script<Args = Self::Config>;
|
|
type DownScript: Script<Args = Self::Config>;
|
|
|
|
fn name() -> &'static str;
|
|
}
|
|
|
|
/// Defines a script
|
|
/// This macro doesn't accept a file extension for the script name
|
|
/// as it is reused for the hook name
|
|
#[macro_export]
|
|
macro_rules! task {
|
|
($task:ident {
|
|
name = $name:literal
|
|
args = $argtype:ident
|
|
}) => {
|
|
paste::item! {
|
|
pub struct [<$task Task>];
|
|
|
|
impl $crate::tasks::Task for [<$task Task>] {
|
|
type Config = $argtype;
|
|
type UpScript = [<$task UpScript>];
|
|
type DownScript = [<$task DownScript>];
|
|
|
|
#[inline]
|
|
fn name() -> &'static str {
|
|
$name
|
|
}
|
|
}
|
|
|
|
pub struct [<$task UpScript>];
|
|
|
|
impl $crate::scripting::script::Script for [<$task UpScript>] {
|
|
type Args = $argtype;
|
|
|
|
#[inline]
|
|
fn name() -> &'static str {
|
|
concat!($name, "/up.nu")
|
|
}
|
|
}
|
|
|
|
pub struct [<$task DownScript>];
|
|
|
|
impl $crate::scripting::script::Script for [<$task DownScript>] {
|
|
type Args = $argtype;
|
|
|
|
#[inline]
|
|
fn name() -> &'static str {
|
|
concat!($name, "/down.nu")
|
|
}
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
pub(crate) fn all_tasks() -> Vec<(&'static str, PathBuf, PathBuf)> {
|
|
macro_rules! task_scripts {
|
|
($task:ident) => {{
|
|
let base = PathBuf::from($task::name());
|
|
(
|
|
$task::name(),
|
|
base.join(<$task as Task>::UpScript::name()),
|
|
base.join(<$task as Task>::DownScript::name()),
|
|
)
|
|
}};
|
|
}
|
|
vec![
|
|
task_scripts!(ConfigureLocaleTask),
|
|
task_scripts!(ConfigureNetworkTask),
|
|
task_scripts!(ConfigureUnakiteTask),
|
|
task_scripts!(CreatePartitionsTask),
|
|
task_scripts!(InstallBaseTask),
|
|
task_scripts!(InstallBootloaderTask),
|
|
task_scripts!(InstallDesktopTask),
|
|
task_scripts!(InstallExtraPackagesTask),
|
|
task_scripts!(InstallFlatpakTask),
|
|
task_scripts!(InstallKernelsTask),
|
|
task_scripts!(InstallTimeshiftTask),
|
|
task_scripts!(InstallZRamDTask),
|
|
task_scripts!(SetupRootUserTask),
|
|
task_scripts!(SetupUsersTask),
|
|
]
|
|
}
|