message: Use output instead of status
diff: use error::Error;
  -use std::process::Command;
  +use std::process::{Command, Stdio};
  pub fn npm_pack(path: &str) -> Result<(), Error> {
  let pkg_file_path = format!("{}/pkg", path);
  @@ -38,24 +38,30 @@ pub fn npm_login(
  let mut args = String::new();
  if let Some(registry) = registry {
  - args.push_str(&format!(" --registry={}", registry))
  + args.push_str(&format!(" --registry={}", registry));
  }
  if let Some(scope) = scope {
  - args.push_str(&format!(" --scope={}", scope))
  + args.push_str(&format!(" --scope={}", scope));
  }
  if always_auth == true {
  - args.push_str(" --always_auth")
  + args.push_str(" --always_auth");
  }
  if let Some(auth_type) = auth_type {
  - args.push_str(&format!(" --auth_type={}", auth_type))
  + args.push_str(&format!(" --auth_type={}", auth_type));
  }
  - let status = Command::new("npm").arg("login").arg(args).status()?;
  + let output = Command::new("npm")
  + .arg("login")
  + .arg(args)
  + .stdin(Stdio::inherit())
  + .stdout(Stdio::inherit())
  + .output()?;
  - if !status.success() {
  - bail!("Registry user account login failed");
  + if !output.status.success() {
  + let s = String::from_utf8_lossy(&output.stderr);
  + Error::cli("Registry user account login failed", s)
  } else {
  Ok(())
  }
  