from AbstractModule import AbstractModule from subprocess import call from PyInquirer import prompt from pathlib import Path import os 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'] self.settings = {} with open("modules/vim/vim_settings.json") as settings: self.settings = json.load(settings)['settings'] def add_settings(self): list_settings = [] for setting in self.settings.values(): list_settings.append(setting) return list_settings def do_plugin_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_plugins = self.do_plugin_selection() default_settings = self.add_settings() # print out selected plugins print("\033[4mYour selection:\033[0m") [print(x) for x in selected_plugins] print("\n\033[4mDefault settings:\033[0m") [print(i) for i in default_settings] # Create vimrc file try: with open("vim_testfile", "r") as vim_file: vimrc_content = vim_file.readlines() except FileNotFoundError: vimrc_content = [] try: index = vimrc_content.index("call plug#begin('~/.vim/plugged')\n") + 1 # print("Index of plugman " + str(index)) for plugin in selected_plugins: vimrc_content.insert(index, self.plugins[plugin] + "\n") default_settings.reverse() for setting in default_settings: vimrc_content.insert(index - 1, setting + "\n") except ValueError: vimrc_content.append("call plug#begin('~/.vim/plugged')\n") for element in selected_plugins: vimrc_content.append(self.plugins[element] + "\n") vimrc_content.append("call plug#end()\n") seen = set() seen_add = seen.add vimrc_content = [x1 for x1 in vimrc_content if not (x1 in seen or seen_add(x1))] with open("vim_testfile", "w") as vimrc_file: for line in vimrc_content: vimrc_file.write(line) # Create necessary folder structure for Plugin Manager autoload = str(Path.home().joinpath("Gitlab", "linux-tools", "testdirectory", "autoload")) testdirectory = str(Path.home().joinpath("Gitlab", "linux-tools", "testdirectory")) if not os.path.isdir(autoload): if os.path.isdir(testdirectory): 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!")