oseda_cli/lib.rs
1use clap::{Parser, Subcommand};
2
3pub mod cmd;
4pub mod color;
5pub mod config;
6pub mod github;
7pub mod net;
8pub mod puppeteer;
9pub mod tags;
10pub mod template;
11
12/// Oseda Project scafolding CLI
13#[derive(Parser)]
14#[command(name = "oseda")]
15#[command(version)]
16#[command(about = "oseda project scafolding CLI", long_about = None)]
17#[command(author = "oseda.net")]
18pub struct Cli {
19 /// The subcommand to run
20 #[command(subcommand)]
21 pub command: Commands,
22}
23
24/// Oseda subcommand, represents an action to take on your Oseda project
25#[derive(Subcommand)]
26pub enum Commands {
27 /// Initialize a new Oseda project in the working directory
28 Init(cmd::init::InitOptions),
29 /// Run the Oseda project in the working directory
30 Run,
31 /// Check the Oseda project in the working directory for common errors
32 Check(cmd::check::CheckOptions),
33 /// Deploy your Oseda project to github to add to oseda.net
34 Deploy(cmd::deploy::DeployOptions),
35 /// Fork the library repository to submit your course
36 Fork,
37 /// Export the Oseda project to a PDF file
38 /// This will install the npm package `decktape`
39 /// This relies on a chromium backend, as a result, it may take a while to run
40 Export(cmd::export::ExportOptions),
41 /// Update the oseda binary from crates.io
42 Update,
43}