From 8a99bc2a8943d04b141844b809bb8b197e4ea3bf Mon Sep 17 00:00:00 2001 From: Vladan Popovic Date: Thu, 9 Apr 2020 18:55:27 +0200 Subject: [PATCH] Style and clippy cleanup --- client/src/lib.rs | 30 +++++----- client/src/pages/blob.rs | 5 +- client/src/pages/diff.rs | 2 +- client/src/pages/log.rs | 2 +- client/src/pages/refs.rs | 2 +- client/src/pages/tree.rs | 16 +++--- client/src/route.rs | 44 +++++++------- client/src/{view.rs => views.rs} | 4 +- server/src/{error.rs => errors.rs} | 0 server/src/git/diff.rs | 6 +- server/src/git/error.rs | 6 -- server/src/git/{commit.rs => log.rs} | 6 +- server/src/git/mod.rs | 8 +-- server/src/git/reference.rs | 8 +-- server/src/git/{repo.rs => repository.rs} | 4 +- server/src/git/tree.rs | 8 +-- server/src/main.rs | 70 ++++++++++++++--------- 17 files changed, 116 insertions(+), 105 deletions(-) rename client/src/{view.rs => views.rs} (94%) rename server/src/{error.rs => errors.rs} (100%) rename server/src/git/{commit.rs => log.rs} (92%) rename server/src/git/{repo.rs => repository.rs} (82%) diff --git a/client/src/lib.rs b/client/src/lib.rs index 3e4a590..46f642c 100755 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -1,7 +1,7 @@ mod component; mod pages; mod route; -mod view; +mod views; use component::Component; use pages::{blob, diff, log, refs, tree}; @@ -35,9 +35,9 @@ enum Page { } impl Page { - fn load(url: Route, orders: &mut impl Orders) -> Page { + fn load(url: Route, orders: &mut impl Orders) -> Self { match url { - Route::Log(rev) => Page::Log(log::Model::init( + Route::Log(rev) => Self::Log(log::Model::init( Route::Log(rev.clone()), log::Msg::Fetch(format!("/log/{}/", rev)), &mut orders.proxy(Msg::Log), @@ -46,44 +46,44 @@ impl Page { if path != "" { path += "/"; } - Page::Tree(tree::Model::init( + Self::Tree(tree::Model::init( Route::Tree(rev.clone(), path.clone()), tree::Msg::Fetch(format!("/tree/{}/{}", rev, path)), &mut orders.proxy(Msg::Tree), )) } - Route::Diff(rev) => Page::Diff(diff::Model::init( + Route::Diff(rev) => Self::Diff(diff::Model::init( Route::Diff(rev.clone()), diff::Msg::Fetch(format!("/show/{}/", rev)), &mut orders.proxy(Msg::Diff), )), - Route::Blob(rev, path) => Page::Blob(blob::Model::init( + Route::Blob(rev, path) => Self::Blob(blob::Model::init( Route::Blob(rev.clone(), path.clone()), blob::Msg::Fetch(format!("/show/{}/{}/", rev, path)), &mut orders.proxy(Msg::Blob), )), - Route::Refs => Page::Refs(refs::Model::init( + Route::Refs => Self::Refs(refs::Model::init( Route::Refs, refs::Msg::Fetch("/refs/".to_string()), &mut orders.proxy(Msg::Refs), )), - Route::Home => Page::Blob(blob::Model::init( + Route::Home => Self::Blob(blob::Model::init( Route::Blob("master".to_owned(), "README.md".to_owned()), blob::Msg::Fetch(format!("/show/{}/{}/", "master".to_owned(), "README.md")), &mut orders.proxy(Msg::Blob), )), - Route::NotFound => Page::NotFound, + Route::NotFound => Self::NotFound, } } fn view(&self) -> Vec> { match self { - Page::Log(model) => model.view().map_msg(Msg::Log), - Page::Tree(model) => model.view().map_msg(Msg::Tree), - Page::Diff(model) => model.view().map_msg(Msg::Diff), - Page::Blob(model) => model.view().map_msg(Msg::Blob), - Page::Refs(model) => model.view().map_msg(Msg::Refs), - _ => view::view_404(), + Self::Log(model) => model.view().map_msg(Msg::Log), + Self::Tree(model) => model.view().map_msg(Msg::Tree), + Self::Diff(model) => model.view().map_msg(Msg::Diff), + Self::Blob(model) => model.view().map_msg(Msg::Blob), + Self::Refs(model) => model.view().map_msg(Msg::Refs), + _ => views::view_404(), } } } diff --git a/client/src/pages/blob.rs b/client/src/pages/blob.rs index 0269c1e..5938ab4 100644 --- a/client/src/pages/blob.rs +++ b/client/src/pages/blob.rs @@ -1,6 +1,6 @@ use crate::component::{self, Component}; use crate::route::Route; -use crate::view::{view_page, ViewPage}; +use crate::views::{view_page, ViewPage}; use seed::{self, prelude::*, *}; pub use shared::SocialFileContent; @@ -31,8 +31,7 @@ impl Component for Model { self.data .content .to_string() - .split("\n") - .into_iter() + .split('\n') .map(|line| pre![line]) ] ] diff --git a/client/src/pages/diff.rs b/client/src/pages/diff.rs index 3b0cf7b..64d39c1 100644 --- a/client/src/pages/diff.rs +++ b/client/src/pages/diff.rs @@ -1,7 +1,7 @@ use crate::component::{self, Component}; use crate::pages; use crate::route::Route; -use crate::view::{view_page, ViewPage}; +use crate::views::{view_page, ViewPage}; use seed::{self, prelude::*, *}; use shared::SocialCommit; diff --git a/client/src/pages/log.rs b/client/src/pages/log.rs index df02d86..c24743c 100644 --- a/client/src/pages/log.rs +++ b/client/src/pages/log.rs @@ -1,7 +1,7 @@ use crate::component::{self, Component}; use crate::pages; use crate::route::Route; -use crate::view::{view_page, ViewPage}; +use crate::views::{view_page, ViewPage}; use seed::{self, prelude::*, *}; use shared::SocialCommit; diff --git a/client/src/pages/refs.rs b/client/src/pages/refs.rs index 68be14e..601c0bb 100644 --- a/client/src/pages/refs.rs +++ b/client/src/pages/refs.rs @@ -1,6 +1,6 @@ use crate::component::{self, Component}; use crate::route::Route; -use crate::view::{view_page, ViewPage}; +use crate::views::{view_page, ViewPage}; use seed::{self, prelude::*, *}; use shared::SocialRefs; diff --git a/client/src/pages/tree.rs b/client/src/pages/tree.rs index 94e0b82..47abaa6 100644 --- a/client/src/pages/tree.rs +++ b/client/src/pages/tree.rs @@ -1,6 +1,6 @@ use crate::component::{self, Component}; use crate::route::Route; -use crate::view::{view_page, ViewPage}; +use crate::views::{view_page, ViewPage}; use seed::{self, prelude::*, *}; pub use shared::SocialTreeEntry; use umask::Mode; @@ -17,20 +17,20 @@ impl Component for Model { fn view(&self) -> Vec> { fn tree_entry_to_dom(te: &SocialTreeEntry, route: &Route) -> Node { - let k = route.to_owned().append_path(te.name.to_owned()); - let url = if te.kind == "blob".to_owned() { + let k = route.to_owned().append_path(&te.name); + let url = if &te.kind == "blob" { match k { Route::Tree(rev, path) => Route::Blob(rev, path), _ => route.to_owned(), } } else { - route.to_owned().append_path(te.clone().name) + route.to_owned().append_path(&te.name) }; - let mode = if te.kind == "blob".to_owned() { - "-".to_owned() + let mode = if &te.kind == "blob" { + format!("-{}", Mode::from(te.filemode as u32)) } else { - "d".to_owned() - } + &Mode::from(te.filemode as u32).to_string(); + format!("d{}", Mode::from(te.filemode as u32)) + }; tr![ td![mode], td![ diff --git a/client/src/route.rs b/client/src/route.rs index 03cac85..3effd39 100644 --- a/client/src/route.rs +++ b/client/src/route.rs @@ -14,29 +14,29 @@ pub enum Route { impl Route { pub fn path(&self) -> Vec<&str> { match self { - Route::Home => vec![], - Route::Log(rev) => vec!["log", rev], - Route::Tree(rev, path) => vec!["tree", rev, path], - Route::Diff(rev) => vec!["show", rev], - Route::Blob(rev, path) => vec!["blob", rev, path], - Route::Refs => vec!["refs"], - Route::NotFound => vec!["404"], + Self::Home => vec![], + Self::Log(rev) => vec!["log", rev], + Self::Tree(rev, path) => vec!["tree", rev, path], + Self::Diff(rev) => vec!["show", rev], + Self::Blob(rev, path) => vec!["blob", rev, path], + Self::Refs => vec!["refs"], + Self::NotFound => vec!["404"], } } - pub fn append_path(self, p: String) -> Self { + pub fn append_path(self, p: &str) -> Self { match self { - Route::Tree(rev, path) => { + Self::Tree(rev, path) => { if path == "" || path.ends_with('/') { - Route::Tree(rev, path + &p) + Self::Tree(rev, path + p) } else { - Route::Tree(rev, path + "/" + &p) + Self::Tree(rev, path + "/" + p) } } - Route::Blob(rev, path) => { + Self::Blob(rev, path) => { if path == "" || path.ends_with('/') { - Route::Blob(rev, path + &p) + Self::Blob(rev, path + p) } else { - Route::Blob(rev, path + "/" + &p) + Self::Blob(rev, path + "/" + p) } } _ => self, @@ -57,19 +57,19 @@ impl TryFrom> for Route { hash.map(|url| { let parts: Vec<&str> = url.split('/').collect(); match parts[1] { - "log" => Route::Log(parts[2].to_string()), + "log" => Self::Log(parts[2].to_string()), "tree" => { if parts.len() > 3 { - Route::Tree(parts[2].to_string(), parts[3..].join("/")) + Self::Tree(parts[2].to_string(), parts[3..].join("/")) } else { - Route::Tree(parts[2].to_string(), "".to_owned()) + Self::Tree(parts[2].to_string(), "".to_owned()) } } - "show" => Route::Diff(parts[2].to_string()), - "blob" => Route::Blob(parts[2].to_string(), parts[3..].join("/")), - "refs" => Route::Refs, - "" => Route::Home, - _ => Route::NotFound, + "show" => Self::Diff(parts[2].to_string()), + "blob" => Self::Blob(parts[2].to_string(), parts[3..].join("/")), + "refs" => Self::Refs, + "" => Self::Home, + _ => Self::NotFound, } }) .ok_or(()) diff --git a/client/src/view.rs b/client/src/views.rs similarity index 94% rename from client/src/view.rs rename to client/src/views.rs index 49e2d01..0e3e892 100644 --- a/client/src/view.rs +++ b/client/src/views.rs @@ -68,9 +68,9 @@ pub struct ViewPage { } impl<'a, Ms> ViewPage { - pub fn new(title_prefix: String, content: Node) -> Self { + pub const fn new(title_prefix: String, content: Node) -> Self { Self { - title_prefix: title_prefix.into(), + title_prefix, content, } } diff --git a/server/src/error.rs b/server/src/errors.rs similarity index 100% rename from server/src/error.rs rename to server/src/errors.rs diff --git a/server/src/git/diff.rs b/server/src/git/diff.rs index a1be72b..1101578 100644 --- a/server/src/git/diff.rs +++ b/server/src/git/diff.rs @@ -1,4 +1,4 @@ -use crate::git::repo::SocialRepo; +use crate::git::repository::SocialRepo; use crate::git::Error; use git2::{Diff, DiffOptions}; use git2::{DiffFormat, DiffLine}; @@ -19,11 +19,11 @@ fn into_social_diff(d: Diff<'_>) -> SocialDiff { } pub trait Show { - fn show(&self, from_oid: String, to_oid: String) -> Result; + fn show(&self, from_oid: &str, to_oid: &str) -> Result; } impl Show for SocialRepo { - fn show(&self, from_oid: String, to_oid: String) -> Result { + fn show(&self, from_oid: &str, to_oid: &str) -> Result { let mut opts = DiffOptions::new(); opts.reverse(false) .force_text(false) diff --git a/server/src/git/error.rs b/server/src/git/error.rs index 75baf58..2745938 100644 --- a/server/src/git/error.rs +++ b/server/src/git/error.rs @@ -4,12 +4,6 @@ pub struct Error { pub message: String, } -impl Error { - pub fn new(message: String) -> Self { - Self { message } - } -} - impl From for Error { fn from(err: GitError) -> Self { Self { diff --git a/server/src/git/commit.rs b/server/src/git/log.rs similarity index 92% rename from server/src/git/commit.rs rename to server/src/git/log.rs index 78f0d32..56647bf 100644 --- a/server/src/git/commit.rs +++ b/server/src/git/log.rs @@ -1,4 +1,4 @@ -use crate::git::repo::SocialRepo; +use crate::git::repository::SocialRepo; use crate::git::Error; use chrono::offset::{Local, TimeZone}; use git2::{Commit, Signature}; @@ -32,7 +32,7 @@ pub trait Log { short: bool, ) -> Result + 'a>, Error>; - fn commit(&self, rev: String) -> Result; + fn commit(&self, rev: &str) -> Result; } impl Log for SocialRepo { @@ -66,7 +66,7 @@ impl Log for SocialRepo { )) } - fn commit(&self, rev: String) -> Result { + fn commit(&self, rev: &str) -> Result { self.repo .revparse_single(rev.as_ref()) .and_then(|o| self.repo.find_commit(o.id()).map(into_social_commit)) diff --git a/server/src/git/mod.rs b/server/src/git/mod.rs index 5f1df2f..6677b6b 100644 --- a/server/src/git/mod.rs +++ b/server/src/git/mod.rs @@ -1,13 +1,13 @@ -mod commit; mod diff; mod error; +mod log; mod reference; -mod repo; +mod repository; mod tree; -pub use commit::Log; pub use diff::Show; pub use error::Error; +pub use log::Log; pub use reference::Refs; -pub use repo::SocialRepo; +pub use repository::SocialRepo; pub use tree::LsTree; diff --git a/server/src/git/reference.rs b/server/src/git/reference.rs index e2f3cd6..811ffc2 100644 --- a/server/src/git/reference.rs +++ b/server/src/git/reference.rs @@ -1,7 +1,7 @@ -use super::commit::into_social_commit; -use crate::git::repo::SocialRepo; +use crate::git::log::into_social_commit; +use crate::git::repository::SocialRepo; use crate::git::Error; -use git2::{Branch, BranchType, Commit, Tag}; +use git2::{Branch, BranchType, Commit}; use shared::{SocialBranch, SocialCommit, SocialTag}; fn into_social_branch(b: Branch<'_>) -> SocialBranch { @@ -55,7 +55,7 @@ impl Refs for SocialRepo { for t in tagnames.into_iter() { let mut st = into_social_tag(t); - self.repo.revparse_single(&st.name).map(|obj| { + let _ = self.repo.revparse_single(&st.name).map(|obj| { obj.peel_to_commit().map(|c: Commit| { st.head = into_social_commit(c); result.push(st); diff --git a/server/src/git/repo.rs b/server/src/git/repository.rs similarity index 82% rename from server/src/git/repo.rs rename to server/src/git/repository.rs index 230b6ef..31d58fb 100644 --- a/server/src/git/repo.rs +++ b/server/src/git/repository.rs @@ -15,9 +15,9 @@ impl<'repo> SocialRepo { } } - pub fn get_tree(&self, rev: String) -> Result { + pub fn get_tree(&self, rev: &str) -> Result { self.repo - .revparse_single(&rev) + .revparse_single(rev) .and_then(|obj| obj.peel_to_tree()) } } diff --git a/server/src/git/tree.rs b/server/src/git/tree.rs index 15c2c2f..14e8269 100644 --- a/server/src/git/tree.rs +++ b/server/src/git/tree.rs @@ -13,12 +13,12 @@ fn into_social_tree_entry(te: TreeEntry<'_>) -> SocialTreeEntry { } pub trait LsTree { - fn ls_tree(&self, rev: String, path: &Path) -> Result, Error>; - fn show_file(&self, rev: String, path: &Path) -> Result; + fn ls_tree(&self, rev: &str, path: &Path) -> Result, Error>; + fn show_file(&self, rev: &str, path: &Path) -> Result; } impl LsTree for SocialRepo { - fn ls_tree(&self, rev: String, path: &Path) -> Result, Error> { + fn ls_tree(&self, rev: &str, path: &Path) -> Result, Error> { let matched_tree = if path.to_str().unwrap_or("") == "" { self.get_tree(rev)? } else { @@ -40,7 +40,7 @@ impl LsTree for SocialRepo { Ok(result) } - fn show_file(&self, rev: String, path: &Path) -> Result { + fn show_file(&self, rev: &str, path: &Path) -> Result { self.get_tree(rev) .and_then(|t| t.get_path(&path)) .and_then(|entry: TreeEntry| match entry.kind() { diff --git a/server/src/main.rs b/server/src/main.rs index 953cc75..7c5db95 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,59 +1,77 @@ -mod error; +mod errors; mod git; use crate::git::{Log, LsTree, Refs, Show, SocialRepo}; use async_std::task; -use error::SocialError; -use shared::{SocialCommit, SocialDiff, SocialRefs}; +use errors::SocialError; +use shared::{SocialCommit, SocialRefs}; use std; use tide::{self, Request, Response}; async fn handle_log(req: Request) -> Result { - let rev = req.param("rev").unwrap_or_else(|_| "HEAD".to_owned()); + let revision = req.param("rev").unwrap_or_else(|_| "HEAD".to_owned()); - let res: Vec = req + let response: Vec = req .state() - .log(Some(rev), None, 40, false) + .log(Some(revision), None, 40, false) .map(|c| c.collect())?; - Response::new(200).body_json(&res).map_err(|e| e.into()) + Response::new(200) + .body_json(&response) + .map_err(|e| e.into()) } async fn handle_ls_tree(req: Request) -> Result { - let rev = req.param("rev").unwrap_or_else(|_| "HEAD".to_owned()); + let revision = req.param("rev").unwrap_or_else(|_| "HEAD".to_owned()); let path = req.param("path").unwrap_or_else(|_| "".to_owned()); - let res = req.state().ls_tree(rev, &std::path::Path::new(&path))?; - Response::new(200).body_json(&res).map_err(|e| e.into()) + let response = req + .state() + .ls_tree(&revision, &std::path::Path::new(&path))?; + + Response::new(200) + .body_json(&response) + .map_err(|e| e.into()) } async fn handle_show_commmit(req: Request) -> Result { - let rev = req.param("rev").unwrap_or_else(|_| "HEAD".to_owned()); - let prev = format!("{}^", rev); + let revision = req.param("rev").unwrap_or_else(|_| "HEAD".to_owned()); + let prev = format!("{}^", &revision); - let mut res = req.state().commit(rev.clone())?; - let diff: SocialDiff = req.state().show(prev, rev)?; - res.diff = Some(diff); + let response = req.state().commit(&revision).and_then(move |mut r| { + let _ = req.state().show(&prev, &revision).map(|diff| { + r.diff = Some(diff); + }); + Ok(r) + })?; - Response::new(200).body_json(&res).map_err(|e| e.into()) + Response::new(200) + .body_json(&response) + .map_err(|e| e.into()) } async fn handle_show_blob(req: Request) -> Result { - let rev = req.param("rev").unwrap_or_else(|_| "HEAD".to_owned()); + let revision = req.param("rev").unwrap_or_else(|_| "HEAD".to_owned()); let path = req.param("path").unwrap_or_else(|_| "".to_owned()); - let res = req.state().show_file(rev, &std::path::Path::new(&path))?; - Response::new(200).body_json(&res).map_err(|e| e.into()) + let response = req + .state() + .show_file(&revision, &std::path::Path::new(&path))?; + + Response::new(200) + .body_json(&response) + .map_err(|e| e.into()) } async fn handle_refs(req: Request) -> Result { - let res = req.state().branches().and_then(|branches| { - req.state().tags().map(|tags| SocialRefs { - branches: branches, - tags: tags, - }) - })?; - Response::new(200).body_json(&res).map_err(|e| e.into()) + let response = req + .state() + .branches() + .and_then(|branches| req.state().tags().map(|tags| SocialRefs { branches, tags }))?; + + Response::new(200) + .body_json(&response) + .map_err(|e| e.into()) } static INDEX: &[u8] = include_bytes!("../../assets/frontend/index.html");