Skip to content

Commit

Permalink
bbn: refactor to move HatenaBlogSubcommand to main
Browse files Browse the repository at this point in the history
  • Loading branch information
bouzuya committed Jul 12, 2021
1 parent 4dd6da8 commit ef41aba
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 73 deletions.
3 changes: 1 addition & 2 deletions bbn/src/command.rs
@@ -1,11 +1,10 @@
mod config;
mod date_range;
mod hatena_blog;
pub mod hatena_blog;
mod list;
mod view;

pub use self::config::config;
pub use self::date_range::date_range;
pub use self::hatena_blog::{hatena_blog, HatenaBlogSubcommand};
pub use self::list::list;
pub use self::view::view;
73 changes: 4 additions & 69 deletions bbn/src/command/hatena_blog.rs
Expand Up @@ -3,72 +3,7 @@ mod download;
mod upload;
mod view;

use self::diff::diff;
use self::download::download_from_hatena_blog;
use self::upload::post_to_hatena_blog;
use self::view::view;
use date_range::date::Date;
use structopt::StructOpt;

#[derive(Debug, StructOpt)]
pub enum HatenaBlogSubcommand {
#[structopt(name = "diff", about = "diff")]
Diff {
#[structopt(name = "DATE", help = "the entry id")]
date: Option<String>,
},
#[structopt(name = "download", about = "Download to the hatena blog")]
Download {
#[structopt(long = "hatena-api-key", env = "HATENA_API_KEY")]
hatena_api_key: String,
#[structopt(long = "hatena-blog-id", env = "HATENA_BLOG_ID")]
hatena_blog_id: String,
#[structopt(long = "hatena-id", env = "HATENA_ID")]
hatena_id: String,
},
#[structopt(name = "upload", about = "Upload to the hatena blog")]
Upload {
#[structopt(name = "DATE", help = "date")]
date: String,
#[structopt(long = "draft")]
draft: bool,
#[structopt(long = "hatena-api-key", env = "HATENA_API_KEY")]
hatena_api_key: String,
#[structopt(long = "hatena-blog-id", env = "HATENA_BLOG_ID")]
hatena_blog_id: String,
#[structopt(long = "hatena-id", env = "HATENA_ID")]
hatena_id: String,
},
#[structopt(name = "view", about = "view")]
View {
#[structopt(name = "DATE", help = "the entry id")]
date: Date,
#[structopt(long = "hatena-blog-id", env = "HATENA_BLOG_ID")]
hatena_blog_id: String,
#[structopt(long = "web", help = "Open the entry in the browser")]
web: bool,
},
}

pub async fn hatena_blog(subcommand: HatenaBlogSubcommand) -> anyhow::Result<()> {
match subcommand {
HatenaBlogSubcommand::Diff { date } => diff(date).await,
HatenaBlogSubcommand::Download {
hatena_api_key,
hatena_blog_id,
hatena_id,
} => download_from_hatena_blog(hatena_api_key, hatena_blog_id, hatena_id).await,
HatenaBlogSubcommand::Upload {
date,
draft,
hatena_api_key,
hatena_blog_id,
hatena_id,
} => post_to_hatena_blog(date, draft, hatena_api_key, hatena_blog_id, hatena_id).await,
HatenaBlogSubcommand::View {
date,
hatena_blog_id,
web,
} => view(date, hatena_blog_id, web).await,
}
}
pub use self::diff::diff;
pub use self::download::download_from_hatena_blog;
pub use self::upload::post_to_hatena_blog;
pub use self::view::view;
79 changes: 77 additions & 2 deletions bbn/src/main.rs
Expand Up @@ -54,7 +54,7 @@ enum Subcommand {
#[structopt(name = "hatena-blog", about = "hatena-blog")]
HatenaBlog {
#[structopt(subcommand)]
subcommand: command::HatenaBlogSubcommand,
subcommand: HatenaBlogSubcommand,
},
#[structopt(name = "view", about = "Views the blog post")]
View {
Expand All @@ -65,6 +65,46 @@ enum Subcommand {
},
}

#[derive(Debug, StructOpt)]
pub enum HatenaBlogSubcommand {
#[structopt(name = "diff", about = "diff")]
Diff {
#[structopt(name = "DATE", help = "the entry id")]
date: Option<String>,
},
#[structopt(name = "download", about = "Download to the hatena blog")]
Download {
#[structopt(long = "hatena-api-key", env = "HATENA_API_KEY")]
hatena_api_key: String,
#[structopt(long = "hatena-blog-id", env = "HATENA_BLOG_ID")]
hatena_blog_id: String,
#[structopt(long = "hatena-id", env = "HATENA_ID")]
hatena_id: String,
},
#[structopt(name = "upload", about = "Upload to the hatena blog")]
Upload {
#[structopt(name = "DATE", help = "date")]
date: String,
#[structopt(long = "draft")]
draft: bool,
#[structopt(long = "hatena-api-key", env = "HATENA_API_KEY")]
hatena_api_key: String,
#[structopt(long = "hatena-blog-id", env = "HATENA_BLOG_ID")]
hatena_blog_id: String,
#[structopt(long = "hatena-id", env = "HATENA_ID")]
hatena_id: String,
},
#[structopt(name = "view", about = "view")]
View {
#[structopt(name = "DATE", help = "the entry id")]
date: Date,
#[structopt(long = "hatena-blog-id", env = "HATENA_BLOG_ID")]
hatena_blog_id: String,
#[structopt(long = "web", help = "Open the entry in the browser")]
web: bool,
},
}

fn completion(shell: Shell) -> anyhow::Result<()> {
Opt::clap().gen_completions_to("bbn", shell, &mut io::stdout());
Ok(())
Expand All @@ -81,7 +121,42 @@ async fn main() -> anyhow::Result<()> {
} => command::config(data_dir, hatena_blog_data_file),
Subcommand::DateRange { month, week_date } => command::date_range(month, week_date),
Subcommand::List { json, query } => command::list(json, query),
Subcommand::HatenaBlog { subcommand } => command::hatena_blog(subcommand).await,
Subcommand::HatenaBlog { subcommand } => match subcommand {
HatenaBlogSubcommand::Diff { date } => command::hatena_blog::diff(date).await,
HatenaBlogSubcommand::Download {
hatena_api_key,
hatena_blog_id,
hatena_id,
} => {
command::hatena_blog::download_from_hatena_blog(
hatena_api_key,
hatena_blog_id,
hatena_id,
)
.await
}
HatenaBlogSubcommand::Upload {
date,
draft,
hatena_api_key,
hatena_blog_id,
hatena_id,
} => {
command::hatena_blog::post_to_hatena_blog(
date,
draft,
hatena_api_key,
hatena_blog_id,
hatena_id,
)
.await
}
HatenaBlogSubcommand::View {
date,
hatena_blog_id,
web,
} => command::hatena_blog::view(date, hatena_blog_id, web).await,
},
Subcommand::View { date, web } => command::view(date, web),
}
}

0 comments on commit ef41aba

Please sign in to comment.