SetupActivity ok

This commit is contained in:
ChristianVisintin
2020-12-25 18:39:18 +01:00
parent 2e4ff78124
commit 90f28d9f27
3 changed files with 60 additions and 13 deletions

View File

@@ -27,6 +27,7 @@
// Locals
use super::{Color, Popup, SetupActivity};
// Ext
use crossterm::terminal::{disable_raw_mode, enable_raw_mode};
use std::env;
impl SetupActivity {
@@ -103,6 +104,14 @@ impl SetupActivity {
// Prepare text editor
env::set_var("EDITOR", cli.get_text_editor());
let placeholder: String = format!("# Type private SSH key for {}@{}\n", username, host);
// Put input mode back to normal
let _ = disable_raw_mode();
// Leave alternate mode
if let Some(ctx) = self.context.as_mut() {
ctx.leave_alternate_screen();
}
// Re-enable raw mode
let _ = enable_raw_mode();
// Write key to file
match edit::edit(placeholder.as_bytes()) {
Ok(rsa_key) => {
@@ -111,8 +120,7 @@ impl SetupActivity {
if rsa_key.is_empty() {
// Report error: empty key
self.popup = Some(Popup::Alert(Color::Red, format!("SSH Key is empty")));
return;
}
} else {
// Add key
if let Err(err) =
self.add_ssh_key(host.as_str(), username.as_str(), rsa_key.as_str())
@@ -123,6 +131,7 @@ impl SetupActivity {
))
}
}
}
Err(err) => {
// Report error
self.popup = Some(Popup::Alert(
@@ -131,6 +140,13 @@ impl SetupActivity {
))
}
}
// Restore terminal
if let Some(ctx) = self.context.as_mut() {
// Clear screen
ctx.clear_screen();
// Enter alternate mode
ctx.enter_alternate_screen();
}
}
}
}

View File

@@ -28,6 +28,7 @@
use super::{ConfigClient, Popup, SetupActivity};
use crate::system::environment;
// Ext
use crossterm::terminal::{disable_raw_mode, enable_raw_mode};
use std::env;
use std::path::PathBuf;
@@ -119,6 +120,12 @@ impl SetupActivity {
Some(cli) => {
// Set text editor
env::set_var("EDITOR", cli.get_text_editor());
// Prepare terminal
let _ = disable_raw_mode();
// Leave alternate mode
if let Some(ctx) = self.context.as_mut() {
ctx.leave_alternate_screen();
}
// Check if key exists
match cli.iter_ssh_keys().nth(self.ssh_key_idx) {
Some(key) => {
@@ -128,8 +135,30 @@ impl SetupActivity {
None => Ok(()),
Some((_, _, key_path)) => match edit::edit_file(key_path.as_path())
{
Ok(_) => Ok(()),
Err(err) => Err(format!("Could not edit ssh key: {}", err)),
Ok(_) => {
// Restore terminal
if let Some(ctx) = self.context.as_mut() {
// Clear screen
ctx.clear_screen();
// Enter alternate mode
ctx.enter_alternate_screen();
}
// Re-enable raw mode
let _ = enable_raw_mode();
Ok(())
}
Err(err) => {
// Restore terminal
if let Some(ctx) = self.context.as_mut() {
// Clear screen
ctx.clear_screen();
// Enter alternate mode
ctx.enter_alternate_screen();
}
// Re-enable raw mode
let _ = enable_raw_mode();
Err(format!("Could not edit ssh key: {}", err))
}
},
},
Err(err) => Err(format!("Could not read ssh key: {}", err)),

View File

@@ -409,6 +409,7 @@ impl SetupActivity {
Block::default()
.borders(Borders::TOP | Borders::RIGHT | Borders::LEFT)
.border_type(BorderType::Rounded)
.style(Style::default().fg(Color::White))
.title("Host name or address"),
);
let username: Paragraph = Paragraph::new(self.user_input.get(1).unwrap().as_str())
@@ -418,8 +419,9 @@ impl SetupActivity {
}))
.block(
Block::default()
.borders(Borders::TOP | Borders::RIGHT | Borders::LEFT)
.borders(Borders::BOTTOM | Borders::RIGHT | Borders::LEFT)
.border_type(BorderType::Rounded)
.style(Style::default().fg(Color::White))
.title("Username"),
);
(address, username)