Uber refactor

This commit is contained in:
Roey Darwish Dror
2018-08-19 14:45:23 +03:00
parent 8ae5065167
commit 473f361fca
12 changed files with 434 additions and 340 deletions

View File

@@ -1,4 +1,5 @@
use super::utils::{Check, PathExt};
use super::terminal::Terminal;
use super::utils::{which, Check, PathExt};
use directories::BaseDirs;
use failure;
use std::fs;
@@ -44,7 +45,7 @@ pub fn vimrc(base_dirs: &BaseDirs) -> Option<PathBuf> {
.or_else(|| base_dirs.home_dir().join(".vim/vimrc").if_exists())
}
pub fn nvimrc(base_dirs: &BaseDirs) -> Option<PathBuf> {
fn nvimrc(base_dirs: &BaseDirs) -> Option<PathBuf> {
#[cfg(unix)]
return base_dirs.config_dir().join("nvim/init.vim").if_exists();
@@ -52,7 +53,8 @@ pub fn nvimrc(base_dirs: &BaseDirs) -> Option<PathBuf> {
return base_dirs.cache_dir().join("nvim/init.vim").if_exists();
}
pub fn upgrade(vim: &PathBuf, vimrc: &PathBuf, plugin_framework: &PluginFramework) -> Result<(), failure::Error> {
#[must_use]
fn upgrade(vim: &PathBuf, vimrc: &PathBuf, plugin_framework: PluginFramework) -> Result<(), failure::Error> {
Command::new(&vim)
.args(&[
"-N",
@@ -74,3 +76,33 @@ pub fn upgrade(vim: &PathBuf, vimrc: &PathBuf, plugin_framework: &PluginFramewor
Ok(())
}
#[must_use]
pub fn upgrade_vim(base_dirs: &BaseDirs, terminal: &mut Terminal) -> Option<(&'static str, bool)> {
if let Some(vim) = which("vim") {
if let Some(vimrc) = vimrc(&base_dirs) {
if let Some(plugin_framework) = PluginFramework::detect(&vimrc) {
terminal.print_separator(&format!("Vim ({:?})", plugin_framework));
let success = upgrade(&vim, &vimrc, plugin_framework).is_ok();
return Some(("vim", success));
}
}
}
None
}
#[must_use]
pub fn upgrade_neovim(base_dirs: &BaseDirs, terminal: &mut Terminal) -> Option<(&'static str, bool)> {
if let Some(nvim) = which("nvim") {
if let Some(nvimrc) = nvimrc(&base_dirs) {
if let Some(plugin_framework) = PluginFramework::detect(&nvimrc) {
terminal.print_separator(&format!("Neovim ({:?})", plugin_framework));
let success = upgrade(&nvim, &nvimrc, plugin_framework).is_ok();
return Some(("Neovim", success));
}
}
}
None
}