Split functionality into functions

This commit is contained in:
Marcel Schwarz 2019-12-28 06:04:27 +01:00
parent 33ae820b94
commit ad900097dc

View File

@ -22,13 +22,17 @@ class VimModule(AbstractModule):
self.plugins = self.json_config['plugins'] self.plugins = self.json_config['plugins']
self.settings = self.json_config['settings'] self.settings = self.json_config['settings']
def do_plugin_selection(self): def create_folder_structure(self):
# Create necessary folder structure for vim
os.makedirs(str(get_vim_root().joinpath("autoload")), exist_ok=True)
os.makedirs(str(get_vim_root().joinpath("plugged")), exist_ok=True)
def create_plugin_section(self, vimrc_content):
mapped_list = [] mapped_list = []
for choice in self.plugins.keys(): for choice in self.plugins.keys():
mapped_list.append({ mapped_list.append({
"name": choice "name": choice
}) })
print("Available Plugins:") print("Available Plugins:")
module_selection = [ module_selection = [
{ {
@ -38,29 +42,9 @@ class VimModule(AbstractModule):
'choices': mapped_list 'choices': mapped_list
} }
] ]
return prompt(module_selection)['modules'] selected_plugins = prompt(module_selection)['modules']
def run(self):
# Create necessary folder structure for vim
os.makedirs(str(get_vim_root().joinpath("autoload")), exist_ok=True)
os.makedirs(str(get_vim_root().joinpath("plugged")), exist_ok=True)
selected_plugins = self.do_plugin_selection()
default_settings = list(self.settings.values())
# print out selected plugins
print("\033[4mYour selection:\033[0m") print("\033[4mYour selection:\033[0m")
[print(x) for x in selected_plugins] [print(x) for x in selected_plugins]
print("\n\033[4mDefault settings:\033[0m")
[print(i) for i in default_settings]
# Create vimrc file
vimrc_path = str(get_vim_root().joinpath(".vimrc"))
try:
with open(vimrc_path, "r") as vimrc_file:
vimrc_content = vimrc_file.readlines()
except FileNotFoundError:
vimrc_content = []
try: try:
index = vimrc_content.index("call plug#begin('~/.vim/plugged')\n") + 1 index = vimrc_content.index("call plug#begin('~/.vim/plugged')\n") + 1
@ -73,17 +57,42 @@ class VimModule(AbstractModule):
vimrc_content.append(self.plugins[element] + "\n") vimrc_content.append(self.plugins[element] + "\n")
vimrc_content.append("call plug#end()\n") vimrc_content.append("call plug#end()\n")
def create_setting_section(self, vimrc_content):
default_settings = list(self.settings.values())
print("\n\033[4mDefault settings:\033[0m")
[print(i) for i in default_settings]
default_settings.reverse() default_settings.reverse()
for setting in default_settings: for setting in default_settings:
vimrc_content.insert(0, setting + "\n") vimrc_content.insert(0, setting + "\n")
def get_vimfile_working_copy(self):
vimrc_path = str(get_vim_root().joinpath(".vimrc"))
try:
with open(vimrc_path, "r") as vimrc_file:
vimrc_content = vimrc_file.readlines()
except FileNotFoundError:
vimrc_content = []
return vimrc_content
def write_vimfile(self, vimrc_content):
seen = set() seen = set()
seen_add = seen.add seen_add = seen.add
vimrc_content = [x1 for x1 in vimrc_content if not (x1 in seen or seen_add(x1))] vimrc_content = [x1 for x1 in vimrc_content if not (x1 in seen or seen_add(x1))]
vimrc_path = str(get_vim_root().joinpath(".vimrc"))
with open(vimrc_path, "w") as vimrc_file: with open(vimrc_path, "w") as vimrc_file:
for line in vimrc_content: for line in vimrc_content:
vimrc_file.write(line) vimrc_file.write(line)
def run(self):
self.create_folder_structure()
vimrc_content = self.get_vimfile_working_copy()
self.create_plugin_section(vimrc_content)
self.create_setting_section(vimrc_content)
self.write_vimfile(vimrc_content)
# TODO: check if existing plugin manager file # TODO: check if existing plugin manager file
# TODO: else download plugin manager # TODO: else download plugin manager