1
0

feat: update highlevel

This commit is contained in:
2026-04-22 14:53:22 +08:00
parent fc2097560c
commit fed02ad9bc
3 changed files with 48 additions and 13 deletions

View File

@@ -82,9 +82,9 @@ pub enum CliCommands {
#[command(name = "status")] #[command(name = "status")]
#[command(about = "Fetch the status of registration with given manifest and scope.")] #[command(about = "Fetch the status of registration with given manifest and scope.")]
Status { Status {
/// The scope where fetch info. /// The view where fetch info.
#[arg(short = 't', long = "target", value_name = "TARGET", required = true, value_enum, default_value_t = RegScope::User)] #[arg(short = 't', long = "target", value_name = "TARGET", required = true, value_enum, default_value_t = RegView::User)]
target: RegScope, target: RegView,
}, },
#[command(name = "ext")] #[command(name = "ext")]
#[command(about = "File extension related operations according to given program manifest.")] #[command(about = "File extension related operations according to given program manifest.")]

View File

@@ -8,15 +8,18 @@ use thiserror::Error as TeError;
/// Error occurs in this module. /// Error occurs in this module.
#[derive(Debug, TeError)] #[derive(Debug, TeError)]
pub enum Error { pub enum Error {
/// Error when parsing manifest TOML file. /// Error when parsing Manifest TOML file.
#[error("{0}")] #[error("{0}")]
ParseManifest(#[from] manifest::ParseManifestError), ParseManifest(#[from] manifest::ParseManifestError),
/// Error when parsing manifest into schema. /// Error when parsing Manifest into Schema.
#[error("{0}")] #[error("{0}")]
ParseSchema(#[from] manifest::ParseSchemaError), ParseSchema(#[from] manifest::ParseSchemaError),
/// Error when parsing schema into program. /// Error when parsing Schema into Program.
#[error("{0}")] #[error("{0}")]
ParseProgram(#[from] wfassoc::highlevel::ParseProgramError), ParseProgram(#[from] wfassoc::highlevel::ParseProgramError),
/// Error when operating Program.
#[error("{0}")]
Program(#[from] wfassoc::highlevel::ProgramError),
} }
/// Result type used in this module. /// Result type used in this module.
@@ -34,16 +37,22 @@ fn stringified_exts_to_indices(program: &wfassoc::Program, exts: Vec<String>) ->
// region: Respective Runners // region: Respective Runners
fn run_register(program: wfassoc::Program, scope: wfassoc::Scope) -> Result<()> { fn run_register(mut program: wfassoc::Program, scope: wfassoc::Scope) -> Result<()> {
todo!() Ok(program.register(scope)?)
} }
fn run_unregister(program: wfassoc::Program, scope: wfassoc::Scope) -> Result<()> { fn run_unregister(mut program: wfassoc::Program, scope: wfassoc::Scope) -> Result<()> {
todo!() Ok(program.unregister(scope)?)
} }
fn run_status(program: wfassoc::Program, scope: wfassoc::Scope) -> Result<()> { fn run_status(program: wfassoc::Program, view: wfassoc::View) -> Result<()> {
todo!() if program.is_registered(view)? {
println!("Application is installed.");
} else {
println!("Application is not installed.");
}
Ok(())
} }
fn run_ext_link(program: wfassoc::Program, scope: wfassoc::Scope, exts: Vec<String>) -> Result<()> { fn run_ext_link(program: wfassoc::Program, scope: wfassoc::Scope, exts: Vec<String>) -> Result<()> {

View File

@@ -167,17 +167,43 @@ pub struct Program {
impl TryFrom<Schema> for Program { impl TryFrom<Schema> for Program {
type Error = ParseProgramError; type Error = ParseProgramError;
fn try_from(value: Schema) -> std::result::Result<Self, Self::Error> { fn try_from(value: Schema) -> Result<Self, Self::Error> {
Self::new(value) Self::new(value)
} }
} }
impl Program { impl Program {
/// Try creating Program from Schema.
pub fn new(schema: Schema) -> Result<Self, ParseProgramError> { pub fn new(schema: Schema) -> Result<Self, ParseProgramError> {
todo!() todo!()
} }
} }
impl Program {
/// Register this application.
///
/// If there is registration of this application,
/// this function will return error.
pub fn register(&mut self, scope: Scope) -> Result<(), ProgramError> {
todo!()
}
/// Unregister this application.
///
/// If there is no registration of this application,
/// this function will return error.
pub fn unregister(&mut self, scope: Scope) -> Result<(), ProgramError> {
todo!()
}
/// Check whether this application has been registered in given view.
///
/// Please note that this is a rough check and do not validate any data.
pub fn is_registered(&self, view: View) -> Result<bool, ProgramError> {
todo!()
}
}
// endregion // endregion
// region: Program Internals // region: Program Internals