import sublime, sublime_plugin,subprocess,os def setvars(): global settings,path,sitename settings=sublime.load_settings("hugofy.sublime-settings") path=settings.get("Directory") sitename=settings.get("Sitename") if not os.path.exists(os.path.join(path,sitename)): os.makedirs(os.path.join(path,sitename)) os.chdir(os.path.join(path,sitename)) class HugonewsiteCommand(sublime_plugin.TextCommand): def run(self, edit): setvars() process=["hugo", "new", "site", os.path.join(path,sitename)] subprocess.Popen(process) class HugonewcontentCommand(sublime_plugin.TextCommand): def on_done(self,pagename): if not pagename: sublime.error_message("No filename provided") process=["hugo", "new", pagename] subprocess.Popen(process) sublime.active_window().open_file(os.path.join(path,sitename,"content",pagename)) def on_change(self,filename): pass def on_cancel(self): sublime.error_message("No filename provided") def run(self,edit): setvars() sublime.active_window().show_input_panel("Enter file name", "", self.on_done, self.on_change, self.on_cancel) class HugoversionCommand(sublime_plugin.TextCommand): def run(self,edit): try: out=subprocess.check_output(["hugo", "version"],stderr=subprocess.STDOUT,universal_newlines=True) sublime.message_dialog(out) except: sublime.error_message("Hugo not installed or path not set") class HugoserverCommand(sublime_plugin.TextCommand): def run(self,edit): setvars() server=settings.get("Server") startCmd = ["hugo", "server"] if server["THEME_FLAG"]: startCmd = startCmd + ["--theme={}".format(server["THEME"])] if server["DRAFTS_FLAG"]: startCmd = startCmd + ["--buildDrafts"] startCmd = startCmd + ["--watch", "--port={}".format(server["PORT"])] try: out=subprocess.Popen(startCmd,stderr=subprocess.STDOUT,universal_newlines=True) sublime.status_message('Server Started: {}'.format(startCmd)) except: sublime.error_message("Error starting server") class HugobuildCommand(sublime_plugin.TextCommand): def run(self,edit): try: out=subprocess.Popen(["hugo", "--buildDrafts"],stdout=subprocess.PIPE) #print(out.communicate()[0].decode('utf-8')) sublime.message_dialog(out.communicate()[0].decode('utf-8')) except: sublime.error_message("Hugo not installed") class HugogetthemesCommand(sublime_plugin.TextCommand): """download themes for hugo""" def run(self,edit): setvars() try: out=subprocess.Popen(["git", "clone", "--recursive", "https://github.com/spf13/hugoThemes.git", os.path.join(path,sitename,"themes")], stderr=subprocess.STDOUT,universal_newlines=True) except: sublime.error_message("git not installed or path not set") class HugosetthemeCommand(sublime_plugin.TextCommand): def on_done(self,themename): if not themename: sublime.error_message("No theme name provided") else: settings.set("DefaultTheme",themename) sublime.save_settings("hugofy.sublime-settings") def on_change(self,themename): pass def on_cancel(self): pass def run(self,edit): setvars() sublime.active_window().show_input_panel("Enter theme name", "", self.on_done, self.on_change, self.on_cancel)