linux-tools/modules/vim/module.py
Lucas Noki 04e6f9b160 Extract plugin list into json file
Adjust line-breaks within strings
Simplify if clause
2020-01-11 02:38:46 +01:00

88 lines
3.1 KiB
Python

from AbstractModule import AbstractModule
from subprocess import call
from PyInquirer import prompt
import os
import shutil
import json
class VimModule(AbstractModule):
def __init__(self):
super().__init__()
self.plugins = {}
with open("modules/vim/vim_plugins.json") as plugins:
self.plugins = json.load(plugins)['plugins']
def do_module_selection(self):
mapped_list = []
for choice in self.plugins.keys():
mapped_list.append({
"name": choice
})
print("Available Plugins:")
module_selection = [
{
'type': 'checkbox',
'message': 'Select plugins',
'name': 'modules',
'choices': mapped_list
}
]
return prompt(module_selection)['modules']
def run(self):
selected_modules = self.do_module_selection()
# print out selected plugins
[print(x) for x in selected_modules]
# Create vimrc file
vimrc_exists = os.path.isfile("testfile")
if vimrc_exists:
temp_file = open('temp', 'w')
with open("testfile", "r") as vimrc_out_file:
for line in vimrc_out_file:
if line.startswith("call plug#begin('~/.vim/plugged')"):
for element in selected_modules:
line = line.strip() + "\n" + self.plugins[element] + "\n"
temp_file.write(line)
temp_file.close()
shutil.move('temp', 'testfile')
# Merge duplicates to first ocassion with awk
sorted_file = "awk -i inplace ' !x[$0]++' ~/Gitlab/linux-tools/testfile"
call(sorted_file, shell=True)
else:
with open("testfile", "w+") as vimrc_file:
vimrc_file.write("\n" + "call plug#begin('~/.vim/plugged')\n")
for element in selected_modules:
vimrc_file.write(self.plugins[element] + "\n")
vimrc_file.write("call plug#end()\n")
vimdir_exists = os.path.isdir("/home/clay/Gitlab/linux-tools/testdirectory/")
autoloaddir_exists = os.path.isdir("/home/clay/Gitlab/linux-tools/testdirectory/autoload/")
# Create necessary folder structure for Plugin Manager
if not autoloaddir_exists:
if vimdir_exists:
install_vimplug = "cd ~/Gitlab/linux-tools/testdirectory/ " \
"&& mkdir autoload " \
"&& cd autoload " \
"&& touch test.txt"
call(install_vimplug, shell=True)
else:
make_vimdir = "cd ~/Gitlab/linux-tools/ " \
"&& mkdir testdirectory " \
"&& cd testdirectory " \
"&& mkdir autoload " \
"&& cd autoload " \
"&& touch test.txt"
call(make_vimdir, shell=True)
else:
print("Vim-Plug already installed!")