def UpdatePythonPlugin(self, ppAuthor, ppRepository, ppKey): Domoticz.Debug("UpdatePythonPlugin called") if ppKey == "PP-MANAGER": Domoticz.Log("Self Update Initiated") ppGitReset = "LANG=en_US /usr/bin/git reset --hard HEAD" try: pr = subprocess.Popen( ppGitReset , cwd = str(os.getcwd() + "/plugins/" + ppKey), shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE ) (out, error) = pr.communicate() if out: Domoticz.Debug("Git Response:" + str(out)) if error: Domoticz.Debug("Git Error:" + str(error.strip())) except OSError as eReset: Domoticz.Error("Git ErrorNo:" + str(eReset.errno)) Domoticz.Error("Git StrError:" + str(eReset.strerror)) elif (self.plugindata[ppKey][2] in self.ExceptionList): Domoticz.Log("Plugin:" + self.plugindata[ppKey][2] + " excluded by Exclusion file (exclusion.txt). Skipping!!!") return Domoticz.Log("Updating Plugin:" + ppKey) ppUrl = "LANG=en_US /usr/bin/git pull --force" Domoticz.Debug("Calling:" + ppUrl + " on folder " + str(os.getcwd()) + "/plugins/" + ppKey) try: pr = subprocess.Popen( ppUrl , cwd = str(os.getcwd() + "/plugins/" + ppKey), shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE ) (out, error) = pr.communicate() if out: Domoticz.Debug("Git Response:" + str(out)) if (str(out).find("Already up-to-date") != -1) or (str(out).find("Already up to date") != -1): Domoticz.Log("Plugin " + ppKey + " already Up-To-Date") #Domoticz.Log("find(error):" + str(str(out).find("error"))) elif (str(out).find("Updating") != -1) and (str(str(out).find("error")) == "-1"): ppUrl = "chmod " Domoticz.Log("Succesfully pulled gitHub update:" + str(out)[str(out).find("Updating")+8:26] + " for plugin " + ppKey) Domoticz.Log("---Restarting Domoticz MAY BE REQUIRED to activate new plugins---") else: Domoticz.Error("Something went wrong with update of " + str(ppKey)) if error: Domoticz.Debug("Git Error:" + str(error.strip())) if str(error).find("Not a git repository") != -1: Domoticz.Log("Plugin:" + ppKey + " is not installed from gitHub. Cannot be updated with PP-Manager!!.") except OSError as e: Domoticz.Error("Git ErrorNo:" + str(e.errno)) Domoticz.Error("Git StrError:" + str(e.strerror)) return None
def CheckForUpdatePythonPlugin(self, ppAuthor, ppRepository, ppKey): Domoticz.Debug("CheckForUpdatePythonPlugin called") if (self.plugindata[ppKey][2] in self.ExceptionList): Domoticz.Log("Plugin:" + self.plugindata[ppKey][2] + " excluded by Exclusion file (exclusion.txt). Skipping!!!") return Domoticz.Debug("Checking Plugin:" + ppKey + " for updates") #Domoticz.Log("Fetching Repository Details") ppGitFetch = "LANG=en_US /usr/bin/git fetch" try: prFetch = subprocess.Popen( ppGitFetch , cwd = str(os.getcwd() + "/plugins/" + ppKey), shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE ) (outFetch, errorFetch) = prFetch.communicate() if outFetch: Domoticz.Debug("Git Response:" + str(outFetch)) if errorFetch: Domoticz.Debug("Git Error:" + str(errorFetch.strip())) except OSError as eFetch: Domoticz.Error("Git ErrorNo:" + str(eFetch.errno)) Domoticz.Error("Git StrError:" + str(eFetch.strerror)) ppUrl = "LANG=en_US /usr/bin/git status -uno" Domoticz.Debug("Calling:" + ppUrl + " on folder " + str(os.getcwd()) + "/plugins/" + ppKey) try: pr = subprocess.Popen( ppUrl , cwd = str(os.getcwd() + "/plugins/" + ppKey), shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE ) (out, error) = pr.communicate() if out: Domoticz.Debug("Git Response:" + str(out)) if (str(out).find("up-to-date") != -1) or (str(out).find("up to date") != -1): Domoticz.Log("Plugin " + ppKey + " already Up-To-Date") Domoticz.Debug("find(error):" + str(str(out).find("error"))) elif (str(out).find("Your branch is behind") != -1) and (str(str(out).find("error")) == "-1"): Domoticz.Log("Found that we are behind on plugin " + ppKey) self.fnSelectedNotify(ppKey) elif (str(out).find("Your branch is ahead") != -1) and (str(str(out).find("error")) == "-1"): Domoticz.Debug("Found that we are ahead on plugin " + ppKey + ". No need for update") else: Domoticz.Error("Something went wrong with update of " + str(ppKey)) if error: Domoticz.Debug("Git Error:" + str(error.strip())) if str(error).find("Not a git repository") != -1: Domoticz.Log("Plugin:" + ppKey + " is not installed from gitHub. Ignoring!!.") except OSError as e: Domoticz.Error("Git ErrorNo:" + str(e.errno)) Domoticz.Error("Git StrError:" + str(e.strerror)) return None