Skip to content

Commit 3f8584e

Browse files
Merge pull request #187 from migerh/replace-std-rwlock
Replace std::sync::RwLock with parking_lot
2 parents 48410ba + 62423e3 commit 3f8584e

14 files changed

+68
-62
lines changed

Cargo.lock

Lines changed: 27 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ failure = "0.1.1"
1414
human-panic = "1.0.0"
1515
indicatif = "0.9.0"
1616
lazy_static = "1.0.0"
17+
parking_lot = "0.6"
1718
serde = "1.0"
1819
serde_derive = "1.0"
1920
serde_json = "1.0"

src/bindgen.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use PBAR;
66

77
pub fn cargo_install_wasm_bindgen(step: &Step) -> Result<(), Error> {
88
let msg = format!("{}Installing WASM-bindgen...", emoji::DOWN_ARROW);
9-
PBAR.step(step, &msg)?;
9+
PBAR.step(step, &msg);
1010
let output = Command::new("cargo")
1111
.arg("install")
1212
.arg("wasm-bindgen-cli")
@@ -15,7 +15,7 @@ pub fn cargo_install_wasm_bindgen(step: &Step) -> Result<(), Error> {
1515
if !output.status.success() {
1616
let s = String::from_utf8_lossy(&output.stderr);
1717
if s.contains("already exists") {
18-
PBAR.info("wasm-bindgen already installed")?;
18+
PBAR.info("wasm-bindgen already installed");
1919
return Ok(());
2020
}
2121
Error::cli("Installing wasm-bindgen failed", s)
@@ -33,7 +33,7 @@ pub fn wasm_bindgen_build(
3333
step: &Step,
3434
) -> Result<(), Error> {
3535
let msg = format!("{}Running WASM-bindgen...", emoji::RUNNER);
36-
PBAR.step(step, &msg)?;
36+
PBAR.step(step, &msg);
3737
let binary_name = name.replace("-", "_");
3838
let release_or_debug = if debug { "debug" } else { "release" };
3939
let wasm_path = format!(

src/build.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use PBAR;
66

77
pub fn rustup_add_wasm_target(step: &Step) -> Result<(), Error> {
88
let msg = format!("{}Adding WASM target...", emoji::TARGET);
9-
PBAR.step(step, &msg)?;
9+
PBAR.step(step, &msg);
1010
ensure_nightly()?;
1111
let output = Command::new("rustup")
1212
.arg("target")
@@ -41,7 +41,7 @@ fn ensure_nightly() -> Result<(), Error> {
4141

4242
pub fn cargo_build_wasm(path: &str, debug: bool, step: &Step) -> Result<(), Error> {
4343
let msg = format!("{}Compiling to WASM...", emoji::CYCLONE);
44-
PBAR.step(step, &msg)?;
44+
PBAR.step(step, &msg);
4545
let output = {
4646
let mut cmd = Command::new("cargo");
4747
cmd.current_dir(path).arg("+nightly").arg("build");

src/command/init.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use PBAR;
1717
// the correct type here.
1818
pub fn create_pkg_dir(path: &str, step: &Step) -> result::Result<(), Error> {
1919
let msg = format!("{}Creating a pkg directory...", emoji::FOLDER);
20-
PBAR.step(step, &msg)?;
20+
PBAR.step(step, &msg);
2121
let pkg_dir_path = format!("{}/pkg", path);
2222
fs::create_dir_all(pkg_dir_path)?;
2323
Ok(())
@@ -114,13 +114,13 @@ impl Init {
114114
"Your WASM pkg is ready to publish at {}/pkg.", &self.crate_path
115115
);
116116

117-
PBAR.message(&format!("{} Done in {}", emoji::SPARKLE, &duration))?;
117+
PBAR.message(&format!("{} Done in {}", emoji::SPARKLE, &duration));
118118

119119
PBAR.message(&format!(
120120
"{} Your WASM pkg is ready to publish at {}/pkg.",
121121
emoji::PACKAGE,
122122
&self.crate_path
123-
))?;
123+
));
124124
Ok(())
125125
}
126126

src/command/login.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@ pub fn login(
2626
npm::npm_login(&registry, &scope, always_auth, &auth_type)?;
2727
info!(&log, "Logged you in!");
2828

29-
PBAR.message(&format!("👋 logged you in!"))?;
29+
PBAR.message(&format!("👋 logged you in!"));
3030
Ok(())
3131
}

src/command/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ pub fn run_wasm_pack(command: Command, log: &Logger) -> result::Result<(), Error
146146
Ok(_) => {}
147147
Err(ref e) => {
148148
error!(&log, "{}", e);
149-
PBAR.error(e.error_type())?;
149+
PBAR.error(e.error_type());
150150
}
151151
}
152152

src/command/pack.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ pub fn pack(path: Option<String>, log: &Logger) -> result::Result<(), Error> {
1515
#[cfg(target_os = "windows")]
1616
info!(&log, "Your package is located at {}\\pkg", &crate_path);
1717

18-
PBAR.message("🎒 packed up your package!")?;
18+
PBAR.message("🎒 packed up your package!");
1919
Ok(())
2020
}

src/command/publish.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ pub fn publish(path: Option<String>, log: &Logger) -> result::Result<(), Error>
1313
npm::npm_publish(&crate_path)?;
1414
info!(&log, "Published your package!");
1515

16-
PBAR.message("💥 published your package!")?;
16+
PBAR.message("💥 published your package!");
1717
Ok(())
1818
}

src/error.rs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
use serde_json;
33
use std::borrow::Cow;
44
use std::io;
5-
use std::sync::PoisonError;
65
use toml;
76

87
#[derive(Debug, Fail)]
@@ -14,8 +13,6 @@ pub enum Error {
1413
SerdeJson(#[cause] serde_json::Error),
1514
#[fail(display = "{}", _0)]
1615
SerdeToml(#[cause] toml::de::Error),
17-
#[fail(display = "Acquiring lock failed")]
18-
PoisonedLockError,
1916
#[fail(display = "{}. stderr:\n\n{}", message, stderr)]
2017
Cli { message: String, stderr: String },
2118
#[fail(display = "{}", message)]
@@ -41,7 +38,6 @@ impl Error {
4138
Error::Io(_) => "There was an I/O error. Details:\n\n",
4239
Error::SerdeJson(_) => "There was an JSON error. Details:\n\n",
4340
Error::SerdeToml(_) => "There was an TOML error. Details:\n\n",
44-
Error::PoisonedLockError => "There was an RwLock error. Details: \n\n",
4541
Error::Cli {
4642
message: _,
4743
stderr: _,
@@ -70,9 +66,3 @@ impl From<toml::de::Error> for Error {
7066
Error::SerdeToml(e)
7167
}
7268
}
73-
74-
impl<T> From<PoisonError<T>> for Error {
75-
fn from(_: PoisonError<T>) -> Self {
76-
Error::PoisonedLockError
77-
}
78-
}

src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ extern crate failure;
44
extern crate indicatif;
55
#[macro_use]
66
extern crate lazy_static;
7+
extern crate parking_lot;
78
#[macro_use]
89
extern crate serde_derive;
910
extern crate serde_json;

src/manifest.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,20 +123,20 @@ pub fn write_package_json(
123123
)
124124
};
125125

126-
PBAR.step(step, &msg)?;
126+
PBAR.step(step, &msg);
127127
let pkg_file_path = format!("{}/pkg/package.json", path);
128128
let mut pkg_file = File::create(pkg_file_path)?;
129129
let crate_data = read_cargo_toml(path)?;
130130
let npm_data = crate_data.into_npm(scope, disable_dts);
131131

132132
if npm_data.description.is_none() {
133-
PBAR.warn(&warn_fmt("description"))?;
133+
PBAR.warn(&warn_fmt("description"));
134134
}
135135
if npm_data.repository.is_none() {
136-
PBAR.warn(&warn_fmt("repository"))?;
136+
PBAR.warn(&warn_fmt("repository"));
137137
}
138138
if npm_data.license.is_none() {
139-
PBAR.warn(&warn_fmt("license"))?;
139+
PBAR.warn(&warn_fmt("license"));
140140
}
141141

142142
let npm_json = serde_json::to_string_pretty(&npm_data)?;
@@ -150,7 +150,7 @@ pub fn get_crate_name(path: &str) -> Result<String, Error> {
150150

151151
pub fn check_crate_config(path: &str, step: &Step) -> Result<(), Error> {
152152
let msg = format!("{}Checking crate configuration...", emoji::WRENCH);
153-
PBAR.step(&step, &msg)?;
153+
PBAR.step(&step, &msg);
154154
check_wasm_bindgen(path)?;
155155
check_crate_type(path)?;
156156
Ok(())

src/progressbar.rs

Lines changed: 20 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
use console::style;
22
use emoji;
3-
use error::Error;
43
use indicatif::{ProgressBar, ProgressStyle};
4+
use parking_lot::RwLock;
55
use std::fmt;
6-
use std::sync::RwLock;
76

87
pub struct ProgressOutput {
98
spinner: RwLock<ProgressBar>,
@@ -18,73 +17,62 @@ impl ProgressOutput {
1817
}
1918
}
2019

21-
pub fn step(&self, step: &Step, message: &str) -> Result<(), Error> {
20+
pub fn step(&self, step: &Step, message: &str) {
2221
let msg = format!("{} {}", style(step).bold().dim(), message);
2322
self.message(&msg)
2423
}
2524

26-
fn finish(&self) -> Result<(), Error> {
27-
let spinner = self.spinner.read()?;
25+
fn finish(&self) {
26+
let spinner = self.spinner.read();
2827
spinner.finish();
2928

30-
let mut message = self.messages.write()?;
31-
print!("{}", message);
29+
let mut message = self.messages.write();
30+
print!("{}", *message);
3231
message.clear();
33-
34-
Ok(())
3532
}
3633

37-
pub fn message(&self, message: &str) -> Result<(), Error> {
38-
self.finish()?;
34+
pub fn message(&self, message: &str) {
35+
self.finish();
3936

40-
let mut spinner = self.spinner.write()?;
37+
let mut spinner = self.spinner.write();
4138
*spinner = Self::progressbar(message);
42-
Ok(())
4339
}
4440

45-
fn add_message(&self, msg: &str) -> Result<(), Error> {
46-
let mut message = self.messages.write()?;
41+
fn add_message(&self, msg: &str) {
42+
let mut message = self.messages.write();
4743
message.push_str(" ");
4844
message.push_str(msg);
4945
message.push('\n');
50-
51-
Ok(())
5246
}
5347

54-
pub fn info(&self, message: &str) -> Result<(), Error> {
48+
pub fn info(&self, message: &str) {
5549
let info = format!(
5650
"{} {}: {}",
5751
emoji::INFO,
5852
style("[INFO]").bold().dim(),
5953
message
6054
);
61-
self.add_message(&info)?;
62-
63-
Ok(())
55+
self.add_message(&info);
6456
}
6557

66-
pub fn warn(&self, message: &str) -> Result<(), Error> {
58+
pub fn warn(&self, message: &str) {
6759
let warn = format!(
6860
"{} {}: {}",
6961
emoji::WARN,
7062
style("[WARN]").bold().dim(),
7163
message
7264
);
73-
self.add_message(&warn)?;
74-
75-
Ok(())
65+
self.add_message(&warn);
7666
}
7767

78-
pub fn error(&self, message: String) -> Result<(), Error> {
68+
pub fn error(&self, message: String) {
7969
let err = format!(
8070
"{} {}: {}",
8171
emoji::ERROR,
8272
style("[ERR]").bold().dim(),
8373
message
8474
);
85-
self.add_message(&err)?;
86-
87-
Ok(())
75+
self.add_message(&err);
8876
}
8977

9078
fn progressbar(msg: &str) -> ProgressBar {
@@ -99,9 +87,8 @@ impl ProgressOutput {
9987
pb
10088
}
10189

102-
pub fn done(&self) -> Result<(), Error> {
103-
self.finish()?;
104-
Ok(())
90+
pub fn done(&self) {
91+
self.finish();
10592
}
10693
}
10794

@@ -127,6 +114,6 @@ impl fmt::Display for Step {
127114

128115
impl Drop for ProgressOutput {
129116
fn drop(&mut self) {
130-
self.done().unwrap();
117+
self.done();
131118
}
132119
}

src/readme.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ use PBAR;
77

88
pub fn copy_from_crate(path: &str, step: &Step) -> Result<(), Error> {
99
let msg = format!("{}Copying over your README...", emoji::DANCERS);
10-
PBAR.step(step, &msg)?;
10+
PBAR.step(step, &msg);
1111
let crate_readme_path = format!("{}/README.md", path);
1212
let new_readme_path = format!("{}/pkg/README.md", path);
1313
if let Err(_) = fs::copy(&crate_readme_path, &new_readme_path) {
14-
PBAR.warn("origin crate has no README")?;
14+
PBAR.warn("origin crate has no README");
1515
};
1616
Ok(())
1717
}

0 commit comments

Comments
 (0)