2018-06-07 09:21:44 +03:00
|
|
|
use super::home_path;
|
2018-07-04 14:24:20 +03:00
|
|
|
use app_dirs::*;
|
2018-06-07 08:51:16 +03:00
|
|
|
use std::fs;
|
|
|
|
|
use std::path::PathBuf;
|
|
|
|
|
|
|
|
|
|
#[derive(Debug, Clone, Copy)]
|
|
|
|
|
pub enum PluginFramework {
|
|
|
|
|
Plug,
|
|
|
|
|
Vundle,
|
|
|
|
|
NeoBundle,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl PluginFramework {
|
|
|
|
|
pub fn detect(vimrc: &PathBuf) -> Option<PluginFramework> {
|
|
|
|
|
let content = fs::read_to_string(vimrc).ok()?;
|
|
|
|
|
|
|
|
|
|
if content.contains("NeoBundle") {
|
|
|
|
|
Some(PluginFramework::NeoBundle)
|
|
|
|
|
} else if content.contains("Vundle") {
|
|
|
|
|
Some(PluginFramework::Vundle)
|
|
|
|
|
} else if content.contains("plug#begin") {
|
|
|
|
|
Some(PluginFramework::Plug)
|
|
|
|
|
} else {
|
|
|
|
|
None
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn upgrade_command(self) -> &'static str {
|
|
|
|
|
match self {
|
|
|
|
|
PluginFramework::NeoBundle => "NeoBundleUpdate",
|
|
|
|
|
PluginFramework::Vundle => "PluginUpdate",
|
|
|
|
|
PluginFramework::Plug => "PlugUpdate",
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-06-07 09:21:44 +03:00
|
|
|
|
|
|
|
|
pub fn vimrc() -> Option<PathBuf> {
|
|
|
|
|
{
|
|
|
|
|
let vimrc = home_path(".vimrc");
|
|
|
|
|
if vimrc.exists() {
|
|
|
|
|
return Some(vimrc);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
let vimrc = home_path(".vim/vimrc");
|
|
|
|
|
if vimrc.exists() {
|
|
|
|
|
return Some(vimrc);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
None
|
|
|
|
|
}
|
2018-07-04 09:51:19 +02:00
|
|
|
|
|
|
|
|
pub fn nvimrc() -> Option<PathBuf> {
|
|
|
|
|
{
|
|
|
|
|
let mut nvimrc = get_data_root(AppDataType::UserConfig).unwrap();
|
|
|
|
|
nvimrc.push("nvim/init.vim");
|
|
|
|
|
|
|
|
|
|
if nvimrc.exists() {
|
|
|
|
|
return Some(nvimrc);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
let mut nvimrc = get_data_root(AppDataType::UserCache).unwrap();
|
|
|
|
|
nvimrc.push("nvim/init.vim");
|
|
|
|
|
|
|
|
|
|
if nvimrc.exists() {
|
|
|
|
|
return Some(nvimrc);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
None
|
|
|
|
|
}
|