diff options
Diffstat (limited to 'uv_magic_uv/updater.py')
-rw-r--r-- | uv_magic_uv/updater.py | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/uv_magic_uv/updater.py b/uv_magic_uv/updater.py new file mode 100644 index 00000000..41becfe7 --- /dev/null +++ b/uv_magic_uv/updater.py @@ -0,0 +1,136 @@ +# <pep8-80 compliant> + +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +__author__ = "Nutti <nutti.metro@gmail.com>" +__status__ = "production" +__version__ = "5.2" +__date__ = "17 Nov 2018" + +import os + +import bpy +from bpy.props import ( + StringProperty, +) + +from .utils.bl_class_registry import BlClassRegistry +from .utils.addon_updator import AddonUpdatorManager, AddonUpdatorConfig +from .utils import compatibility as compat + + +@BlClassRegistry() +class MUV_OT_CheckAddonUpdate(bpy.types.Operator): + bl_idname = "uv.muv_ot_check_addon_update" + bl_label = "Check Update" + bl_description = "Check Add-on Update" + bl_options = {'REGISTER', 'UNDO'} + + def execute(self, _): + updater = AddonUpdatorManager.get_instance() + updater.check_update_candidate() + + return {'FINISHED'} + + +@BlClassRegistry() +@compat.make_annotations +class MUV_OT_UpdateAddon(bpy.types.Operator): + bl_idname = "uv.muv_ot_update_addon" + bl_label = "Update" + bl_description = "Update Add-on" + bl_options = {'REGISTER', 'UNDO'} + + branch_name = StringProperty( + name="Branch Name", + description="Branch name to update", + default="", + ) + + def execute(self, _): + updater = AddonUpdatorManager.get_instance() + updater.update(self.branch_name) + + return {'FINISHED'} + + +def draw_updater_ui(prefs_obj): + layout = prefs_obj.layout + updater = AddonUpdatorManager.get_instance() + + layout.separator() + + if not updater.candidate_checked(): + col = layout.column() + col.scale_y = 2 + row = col.row() + row.operator(MUV_OT_CheckAddonUpdate.bl_idname, + text="Check 'Magic UV' add-on update", + icon='FILE_REFRESH') + else: + row = layout.row(align=True) + row.scale_y = 2 + col = row.column() + col.operator(MUV_OT_CheckAddonUpdate.bl_idname, + text="Check 'Magic UV' add-on update", + icon='FILE_REFRESH') + col = row.column() + if updater.latest_version() != "": + col.enabled = True + ops = col.operator( + MUV_OT_UpdateAddon.bl_idname, + text="Update to the latest release version (version: {})" + .format(updater.latest_version()), + icon='TRIA_DOWN_BAR') + ops.branch_name = updater.latest_version() + else: + col.enabled = False + col.operator(MUV_OT_UpdateAddon.bl_idname, + text="No updates are available.") + + layout.separator() + layout.label(text="Manual Update:") + row = layout.row(align=True) + row.prop(prefs_obj, "updater_branch_to_update", text="Target") + ops = row.operator( + MUV_OT_UpdateAddon.bl_idname, text="Update", + icon='TRIA_DOWN_BAR') + ops.branch_name = prefs_obj.updater_branch_to_update + + layout.separator() + if updater.has_error(): + box = layout.box() + box.label(text=updater.error(), icon='CANCEL') + elif updater.has_info(): + box = layout.box() + box.label(text=updater.info(), icon='ERROR') + + +def register_updater(bl_info): + config = AddonUpdatorConfig() + config.owner = "nutti" + config.repository = "Magic-UV" + config.current_addon_path = os.path.dirname(os.path.realpath(__file__)) + config.branches = ["master", "develop"] + config.addon_directory = \ + config.current_addon_path[:config.current_addon_path.rfind("/")] + config.min_release_version = bl_info["version"] + config.target_addon_path = "src/uv_magic_uv" + updater = AddonUpdatorManager.get_instance() + updater.init(bl_info, config) |