update the updater ;-)

This commit is contained in:
Mario Voigt 2021-10-28 16:00:52 +02:00
parent a4ea389be8
commit c737a8e220
2 changed files with 31 additions and 20 deletions

View File

@ -4,8 +4,14 @@
<id>fablabchemnitz.de.about_upgrade_mightyscape</id> <id>fablabchemnitz.de.about_upgrade_mightyscape</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="tab_settings" gui-text="Upgrade Options"> <page name="tab_settings" gui-text="Upgrade Options">
<label appearance="header">Install Updates / Options</label>
<param name="convert_to_git" type="bool" gui-text="Convert to .git" gui-description="If you downloaded MightyScape as .zip or .tar.gz you cannot upgrade using this extension. But you can convert your downloaded directory to a .git one by enabling this option">false</param> <param name="convert_to_git" type="bool" gui-text="Convert to .git" gui-description="If you downloaded MightyScape as .zip or .tar.gz you cannot upgrade using this extension. But you can convert your downloaded directory to a .git one by enabling this option">false</param>
<param name="stash_untracked" type="bool" gui-text="Stash untracked files" gui-description="Enable to drop your local changes">false</param> <param name="stash_untracked" type="bool" gui-text="Stash untracked files" gui-description="Enable to drop your local changes">false</param>
<label>Click "Apply" to upgrade MightyScape to recent version!</label>
<spacer />
<label appearance="header">Hint: Zip File Mirror</label>
<label>There's also a zip file mirror of all MightyScape extensions. This was made for the lazy or picky one's!</label>
<label appearance="url">https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.X-zipmirror</label>
</page> </page>
<page name="tab_about" gui-text="About"> <page name="tab_about" gui-text="About">
<label appearance="header">MightyScape Extension Collection</label> <label appearance="header">MightyScape Extension Collection</label>
@ -17,8 +23,6 @@
<label appearance="header">Contributing</label> <label appearance="header">Contributing</label>
<label appearance="url">https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.X</label> <label appearance="url">https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label> <label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<spacer />
<label appearance="header">Click "Apply" to upgrade MightyScape to recent version!</label>
</page> </page>
<page name="tab_donate" gui-text="Donate"> <page name="tab_donate" gui-text="Donate">
<label appearance="header">Coffee + Pizza</label> <label appearance="header">Coffee + Pizza</label>

View File

@ -7,13 +7,11 @@ Extension for InkScape 1.X
Author: Mario Voigt / FabLab Chemnitz Author: Mario Voigt / FabLab Chemnitz
Mail: mario.voigt@stadtfabrikanten.org Mail: mario.voigt@stadtfabrikanten.org
Date: 14.05.2021 Date: 14.05.2021
Last patch: 23.07.2021 Last patch: 28.10.2021
License: GNU GPL v3 License: GNU GPL v3
ToDo ToDo
- enable stash option - add routine to check for differences between remotes (unequal commits)
- add while loop to list all remoteCommits by jumping from parent to parent
- add option to create/init .git repo from zip downloaded MightyScape version (to enable upgrader) if no .git dir was found
""" """
import inkex import inkex
@ -29,23 +27,30 @@ except:
class AboutUpgradeMightyScape(inkex.EffectExtension): class AboutUpgradeMightyScape(inkex.EffectExtension):
def update(self, local_repo, remote): def update(self, local_repo, remote, localCommitCount):
self.msg("Chosen remote is: {}".format(remote))
try: try:
localCommit = local_repo.head.commit localCommit = local_repo.head.commit
remote_repo = git.remote.Remote(local_repo, 'origin') remote_repo = git.remote.Remote(local_repo, remote)
remoteCommit = remote_repo.fetch()[0].commit remoteCommit = remote_repo.fetch()[0].commit
self.msg("Latest remote commit is: " + str(remoteCommit)[:7]) self.msg("Latest remote commit is: " + str(remoteCommit)[:7])
remoteCommitCount = 0
for c in remote_repo.repo.iter_commits('origin/master'):
remoteCommitCount += 1
self.msg("Commits at remote: {}".format(remoteCommitCount))
if localCommit.hexsha != remoteCommit.hexsha: if localCommit.hexsha != remoteCommit.hexsha:
ssh_executable = 'git' ssh_executable = 'git'
with local_repo.git.custom_environment(GIT_SSH=ssh_executable): with local_repo.git.custom_environment(GIT_SSH=ssh_executable):
origin = local_repo.remotes.origin #origin = local_repo.remotes.origin
origin.fetch() #origin.fetch()
#fetch_info = origin.pull() #finally pull new data
fetch_info = origin.pull() #finally pull new data fetch_info = remote_repo.fetch()
remote_repo.pull() #finally pull new data
for info in fetch_info: #should return only one line in total for info in fetch_info: #should return only one line in total
inkex.utils.debug("Updated %s to commit id %s" % (info.ref, str(info.commit)[:7])) inkex.utils.debug("Updated {} to commit id {}. {} commits were pulled".format(info.ref, str(info.commit)[:7], remoteCommitCount - localCommitCount))
inkex.utils.debug("Please restart Inkscape to let the changes take effect.") inkex.utils.debug("Please restart Inkscape to let the changes take effect.")
else: else:
@ -125,15 +130,17 @@ class AboutUpgradeMightyScape(inkex.EffectExtension):
inkex.utils.debug("There are some untracked files in your MightyScape directory. Still trying to pull recent files from git...") inkex.utils.debug("There are some untracked files in your MightyScape directory. Still trying to pull recent files from git...")
localLatestCommit = local_repo.head.commit localLatestCommit = local_repo.head.commit
localCommits = list(local_repo.iter_commits("origin/master", max_count=10, skip=0)) localCommits = list(local_repo.iter_commits("origin/master", skip=0))
localCommitCount = len(localCommits)
self.msg("Local commit id is: " + str(localLatestCommit)[:7]) self.msg("Local commit id is: " + str(localLatestCommit)[:7])
self.msg("There are {} local commits at the moment.".format(len(localCommits))) self.msg("There are {} local commits at the moment.".format(localCommitCount))
localCommits = localCommits[:10] #get only last ten commits
localCommitList = [] localCommitList = []
for localCommit in localCommits: for localCommit in localCommits:
localCommitList.append(localCommit) localCommitList.append(localCommit)
#localCommitList.reverse() #localCommitList.reverse()
self.msg("*"*40) self.msg("*"*40)
self.msg("Latest local commits are:") self.msg("Latest {} local commits are:".format(len(localCommits)))
for i in range(0, len(localCommits)): for i in range(0, len(localCommits)):
self.msg("{} | {} : {}".format( self.msg("{} | {} : {}".format(
datetime.utcfromtimestamp(localCommitList[i].committed_date).strftime('%Y-%m-%d %H:%M:%S'), datetime.utcfromtimestamp(localCommitList[i].committed_date).strftime('%Y-%m-%d %H:%M:%S'),
@ -144,10 +151,10 @@ class AboutUpgradeMightyScape(inkex.EffectExtension):
self.msg("*"*40) self.msg("*"*40)
#finally run the update #finally run the update
success = self.update(local_repo, remotes[0][0]) success = self.update(local_repo, remotes[0][1], localCommitCount)
if success is False: #try the second remote if first failed 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][0])) self.msg("Error receiving latest remote commit from main git remote {}. Trying second remote ...".format(remotes[0][0]))
success = self.update(local_repo, remotes[1][0]) success = self.update(local_repo, remotes[1][1], localCommitCount)
if success is False: #if still false: 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][0])) self.msg("Error receiving latest remote commit from second git remote {}.\nAre you offline? Cannot continue!".format(remotes[0][0]))
exit(1) exit(1)