1use anyhow::Result;
15
16use crate::config;
17
18use super::{
19 TaskArgs, TaskCommand, TaskFromCommand, batch, build, children, clone, decompose, edit,
20 from_template, mutate, parent, refactor, relations, schedule, show, split, start, status,
21 template,
22};
23
24pub fn handle_task(args: TaskArgs, force: bool) -> Result<()> {
25 let resolved = config::resolve_from_cwd()?;
26
27 match args.command {
28 Some(TaskCommand::Ready(args)) => status::handle_ready(&args, force, &resolved),
29 Some(TaskCommand::Status(args)) => status::handle_status(&args, force, &resolved),
30 Some(TaskCommand::Done(args)) => status::handle_done(&args, force, &resolved),
31 Some(TaskCommand::Reject(args)) => status::handle_reject(&args, force, &resolved),
32 Some(TaskCommand::Field(args)) => edit::handle_field(&args, force, &resolved),
33 Some(TaskCommand::Edit(args)) => edit::handle_edit(&args, force, &resolved),
34 Some(TaskCommand::Mutate(args)) => mutate::handle(&args, force, &resolved),
35 Some(TaskCommand::Update(args)) => edit::handle_update(&args, &resolved, force),
36 Some(TaskCommand::Build(args)) => build::handle(&args, force, &resolved),
37 Some(TaskCommand::Decompose(args)) => decompose::handle(&args, force, &resolved),
38 Some(TaskCommand::Template(template_args)) => template::handle(&resolved, &template_args),
39 Some(TaskCommand::BuildRefactor(args)) | Some(TaskCommand::Refactor(args)) => {
40 refactor::handle(&args, force, &resolved)
41 }
42 Some(TaskCommand::Show(args)) => show::handle(&args, &resolved),
43 Some(TaskCommand::Clone(args)) => clone::handle(&args, force, &resolved),
44 Some(TaskCommand::Batch(args)) => batch::handle(&args, force, &resolved),
45 Some(TaskCommand::Schedule(args)) => schedule::handle(&args, force, &resolved),
46 Some(TaskCommand::Relate(args)) => relations::handle_relate(&args, force, &resolved),
47 Some(TaskCommand::Blocks(args)) => relations::handle_blocks(&args, force, &resolved),
48 Some(TaskCommand::MarkDuplicate(args)) => {
49 relations::handle_mark_duplicate(&args, force, &resolved)
50 }
51 Some(TaskCommand::Split(args)) => split::handle(&args, force, &resolved),
52 Some(TaskCommand::Start(args)) => start::handle(&args, force, &resolved),
53 Some(TaskCommand::Children(args)) => children::handle(&args, &resolved),
54 Some(TaskCommand::Parent(args)) => parent::handle(&args, &resolved),
55 Some(TaskCommand::From(args)) => match args.command {
56 TaskFromCommand::Template(template_args) => {
57 from_template::handle(&resolved, &template_args, force)
58 }
59 },
60 None => build::handle(&args.build, force, &resolved),
61 }
62}