This repository has been archived by the owner on Sep 26, 2022. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 89
/
core.py
104 lines (83 loc) · 3.36 KB
/
core.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# --------------------------------------------------------------------------
# Copyright (c) 2015-2017 Digital Sapphire
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files
# (the "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to permit
# persons to whom the Software is furnished to do so, subject to the
# following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
# TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
# SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
# ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
# OR OTHER DEALINGS IN THE SOFTWARE.
# --------------------------------------------------------------------------
from __future__ import unicode_literals
import os
from pyupdater.key_handler import KeyHandler
from pyupdater.key_handler.keys import KeyImporter
from pyupdater.package_handler import PackageHandler
from pyupdater.uploader import Uploader
from pyupdater.utils.config import Config
class PyUpdater(object):
"""Processes, signs & uploads updates
Kwargs:
config (obj): config object
"""
def __init__(self, config=None):
self.config = Config()
# Important to keep this before updating config
if config is not None:
self.update_config(config)
def update_config(self, config):
"""Updates internal config
Args:
config (obj): config object
"""
if not hasattr(config, 'DATA_DIR'):
config.DATA_DIR = None
if config.DATA_DIR is None:
config.DATA_DIR = os.getcwd()
self.config.from_object(config)
self._update(self.config)
def _update(self, config):
self.kh = KeyHandler()
self.key_importer = KeyImporter()
self.ph = PackageHandler(config)
self.up = Uploader(config)
def setup(self):
"Sets up root dir with required PyUpdater folders"
self.ph.setup()
def process_packages(self, report_errors=False):
"""Creates hash for updates & adds information about update to
version file
"""
self.ph.process_packages(report_errors)
def set_uploader(self, requested_uploader, keep=False):
"""Sets upload destination
Args:
requested_uploader (str): upload service. i.e. s3, scp
keep (bool): False to delete files after upload, True to keep files. Default False.
"""
self.up.set_uploader(requested_uploader, keep)
def upload(self):
"Uploads files in deploy folder"
self.up.upload()
def get_plugin_names(self):
return self.up.get_plugin_names()
def import_keypack(self):
"Creates signing keys"
self.key_importer.start()
def sign_update(self):
"Signs version file with signing key"
self.kh.sign_update()