reworked updater to use a fallback remote
This commit is contained in:
parent
c96b05d0bb
commit
2045bc400c
@ -15,60 +15,23 @@ import inkex
|
||||
import os
|
||||
import warnings
|
||||
from datetime import datetime
|
||||
|
||||
class AboutUpgradeMightyScape(inkex.EffectExtension):
|
||||
|
||||
def add_arguments(self, pars):
|
||||
pars.add_argument("--tab")
|
||||
pars.add_argument("--stash_untracked", type=inkex.Boolean, default=False, help="Stash untracked files and continue to upgrade")
|
||||
|
||||
def effect(self):
|
||||
warnings.simplefilter('ignore', ResourceWarning) #suppress "enable tracemalloc to get the object allocation traceback"
|
||||
|
||||
try:
|
||||
import git
|
||||
from git import Repo #requires GitPython lib
|
||||
except:
|
||||
inkex.utils.debug("Error. GitPython was not installed but is required to run the upgrade process!")
|
||||
return
|
||||
exit(1)
|
||||
|
||||
#get the directory of mightyscape
|
||||
extension_dir = os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(__file__)), '../')) #go up to main dir /home/<user>/.config/inkscape/extensions/mightyscape-1.X/
|
||||
main_dir = os.path.abspath(os.path.join(extension_dir, '../../')) #go up to main dir /home/<user>/.config/inkscape/extensions/mightyscape-1.X/
|
||||
class AboutUpgradeMightyScape(inkex.EffectExtension):
|
||||
|
||||
#create some statistics
|
||||
totalFolders = 0
|
||||
for root, folders, files in os.walk(extension_dir):
|
||||
totalFolders += len(folders)
|
||||
break #prevent descending into subfolders
|
||||
|
||||
totalInx = 0
|
||||
for root, folders, files in os.walk(extension_dir):
|
||||
for file in files:
|
||||
if file.endswith('.inx'):
|
||||
totalInx += 1
|
||||
|
||||
inkex.utils.debug("Locally there are {} extension folders with {} .inx files!".format(totalFolders, totalInx))
|
||||
|
||||
repo = Repo(os.path.join(main_dir, ".git"))
|
||||
|
||||
#check if it is a non-empty git repository
|
||||
if repo.bare is False:
|
||||
if repo.is_dirty(untracked_files=True) is False:
|
||||
if len(repo.untracked_files) > 0:
|
||||
if self.options.stash_untracked is True:
|
||||
repo.git.stash('save')
|
||||
else:
|
||||
inkex.utils.debug("There are some untracked files in your MightyScape directory. Still trying to pull recent files from git...")
|
||||
|
||||
origin = repo.remotes.origin
|
||||
def update(self, local_repo, remote):
|
||||
try:
|
||||
latestRemoteCommit = git.cmd.Git().ls_remote("https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.X.git", heads=True).replace('refs/heads/master','').strip()
|
||||
localCommit = str(repo.head.commit)
|
||||
latestRemoteCommit = git.cmd.Git().ls_remote(remote, heads=True).replace('refs/heads/master','').strip()
|
||||
localCommit = str(local_repo.head.commit)
|
||||
#ref_logs = repo.head.reference.log()
|
||||
|
||||
#commits = list(repo.iter_commits("master", max_count=5))
|
||||
commits = list(repo.iter_commits("master"))
|
||||
#commits = list(local_repo.iter_commits("master", max_count=5))
|
||||
commits = list(local_repo.iter_commits("master"))
|
||||
self.msg("Local commit id is: " + localCommit[:7])
|
||||
self.msg("Latest remote commit is: " + latestRemoteCommit[:7])
|
||||
self.msg("There are {} remote commits at the moment.".format(len(commits)))
|
||||
@ -102,11 +65,61 @@ class AboutUpgradeMightyScape(inkex.EffectExtension):
|
||||
|
||||
else:
|
||||
inkex.utils.debug("Nothing to do! MightyScape is already up to date!")
|
||||
exit(0)
|
||||
|
||||
except git.exc.GitCommandError:
|
||||
self.msg("Error receiving latest remote commit from git. Are you offline? Cannot continue!")
|
||||
return
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def add_arguments(self, pars):
|
||||
pars.add_argument("--tab")
|
||||
pars.add_argument("--stash_untracked", type=inkex.Boolean, default=False, help="Stash untracked files and continue to upgrade")
|
||||
|
||||
|
||||
def effect(self):
|
||||
warnings.simplefilter('ignore', ResourceWarning) #suppress "enable tracemalloc to get the object allocation traceback"
|
||||
|
||||
#get the directory of mightyscape
|
||||
extension_dir = os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(__file__)), '../')) #go up to main dir /home/<user>/.config/inkscape/extensions/mightyscape-1.X/
|
||||
main_dir = os.path.abspath(os.path.join(extension_dir, '../../')) #go up to main dir /home/<user>/.config/inkscape/extensions/mightyscape-1.X/
|
||||
|
||||
#create some statistics
|
||||
totalFolders = 0
|
||||
for root, folders, files in os.walk(extension_dir):
|
||||
totalFolders += len(folders)
|
||||
break #prevent descending into subfolders
|
||||
|
||||
totalInx = 0
|
||||
for root, folders, files in os.walk(extension_dir):
|
||||
for file in files:
|
||||
if file.endswith('.inx'):
|
||||
totalInx += 1
|
||||
|
||||
inkex.utils.debug("Locally there are {} extension folders with {} .inx files!\n".format(totalFolders, totalInx))
|
||||
|
||||
local_repo = Repo(os.path.join(main_dir, ".git"))
|
||||
#check if it is a non-empty git repository
|
||||
if local_repo.bare is False:
|
||||
if local_repo.is_dirty(untracked_files=True) is False:
|
||||
if len(local_repo.untracked_files) > 0:
|
||||
if self.options.stash_untracked is True:
|
||||
local_repo.git.stash('save')
|
||||
else:
|
||||
inkex.utils.debug("There are some untracked files in your MightyScape directory. Still trying to pull recent files from git...")
|
||||
|
||||
origin = local_repo.remotes.origin
|
||||
remotes = []
|
||||
remotes.append("https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.X.git") #main
|
||||
remotes.append("https://github.com/vmario89/mightyscape-1.X.git") #copy/second remote
|
||||
|
||||
#finally run the update
|
||||
success = self.update(local_repo, remotes[0])
|
||||
if success is False: #try the second remote if first failed
|
||||
self.msg("Error receiving latest remote commit from main git remote {}. Trying second remote ...".format(remotes[0]))
|
||||
success = self.update(local_repo, remotes[1])
|
||||
if success is False: #if still false:
|
||||
self.msg("Error receiving latest remote commit from second git remote {}.\nAre you offline? Cannot continue!".format(remotes[0]))
|
||||
exit(1)
|
||||
|
||||
else:
|
||||
inkex.utils.debug("No \".git\" directory found. Seems your MightyScape was not installed with git clone. Please see documentation on how to do that.")
|
||||
|
Reference in New Issue
Block a user