Exemplo n.º 1
0
class GitUpdater(BaseUpdater):
    def __init__(self, git_command):
        self.repo = LocalRepository(Env.get('app_dir'), command=git_command)

    def doUpdate(self):
        try:
            log.debug('Stashing local changes')
            self.repo.saveStash()

            log.info('Updating to latest version')
            info = self.info()
            self.repo.pull()

            # Delete leftover .pyc files
            self.deletePyc()

            # Notify before returning and restarting
            version_date = datetime.fromtimestamp(
                info['update_version']['date'])
            fireEvent(
                'updater.updated',
                'Updated to a new version with hash "%s", this version is from %s'
                % (info['update_version']['hash'], version_date),
                data=info)

            return True
        except:
            log.error('Failed updating via GIT: %s' % traceback.format_exc())

        self.update_failed = True

        return False

    def getVersion(self):

        if not self.version:
            try:
                output = self.repo.getHead()  # Yes, please
                log.debug('Git version output: %s' % output.hash)
                self.version = {
                    'hash': output.hash[:8],
                    'date': output.getDate(),
                    'type': 'git',
                }
            except Exception, e:
                log.error(
                    'Failed using GIT updater, running from source, you need to have GIT installed. %s'
                    % e)
                return 'No GIT'

        return self.version
Exemplo n.º 2
0
class GitUpdater(BaseUpdater):
    def __init__(self, git_command):
        self.repo = LocalRepository(Env.get('app_dir'), command=git_command)

    def doUpdate(self):

        try:
            log.info('Updating to latest version')
            self.repo.pull()

            # Delete leftover .pyc files
            self.deletePyc()

            return True
        except:
            log.error('Failed updating via GIT: %s', traceback.format_exc())

        self.update_failed = True

        return False

    def getVersion(self):

        if not self.version:
            try:
                output = self.repo.getHead()  # Yes, please
                log.debug('Git version output: %s', output.hash)
                self.version = {
                    'repr':
                    'git:(%s:%s % s) %s (%s)' %
                    (self.repo_user, self.repo_name, self.branch,
                     output.hash[:8], datetime.fromtimestamp(
                         output.getDate())),
                    'hash':
                    output.hash[:8],
                    'date':
                    output.getDate(),
                    'type':
                    'git',
                }
            except Exception, e:
                log.error(
                    'Failed using GIT updater, running from source, you need to have GIT installed. %s',
                    e)
                return 'No GIT'

        return self.version
Exemplo n.º 3
0
class GitUpdater(BaseUpdater):
    def __init__(self, git_command):
        self.repo = LocalRepository(Env.get("app_dir"), command=git_command)

    def doUpdate(self):

        try:
            log.info("Updating to latest version")
            self.repo.pull()

            # Delete leftover .pyc files
            self.deletePyc()

            return True
        except:
            log.error("Failed updating via GIT: %s", traceback.format_exc())

        self.update_failed = True

        return False

    def getVersion(self):

        if not self.version:
            try:
                output = self.repo.getHead()  # Yes, please
                log.debug("Git version output: %s", output.hash)
                self.version = {
                    "repr": "git:(%s:%s % s) %s (%s)"
                    % (
                        self.repo_user,
                        self.repo_name,
                        self.branch,
                        output.hash[:8],
                        datetime.fromtimestamp(output.getDate()),
                    ),
                    "hash": output.hash[:8],
                    "date": output.getDate(),
                    "type": "git",
                }
            except Exception, e:
                log.error("Failed using GIT updater, running from source, you need to have GIT installed. %s", e)
                return "No GIT"

        return self.version
Exemplo n.º 4
0
class GitUpdater(BaseUpdater):

    def __init__(self, git_command):
        self.repo = LocalRepository(Env.get('app_dir'), command = git_command)

    def doUpdate(self):

        try:
            log.debug('Stashing local changes')
            self.repo.saveStash()

            log.info('Updating to latest version')
            self.repo.pull()

            # Delete leftover .pyc files
            self.deletePyc()

            return True
        except:
            log.error('Failed updating via GIT: %s', traceback.format_exc())

        self.update_failed = True

        return False

    def getVersion(self):

        if not self.version:
            try:
                output = self.repo.getHead() # Yes, please
                log.debug('Git version output: %s', output.hash)
                self.version = {
                    'hash': output.hash[:8],
                    'date': output.getDate(),
                    'type': 'git',
                }
            except Exception, e:
                log.error('Failed using GIT updater, running from source, you need to have GIT installed. %s', e)
                return 'No GIT'

        return self.version
Exemplo n.º 5
0
class GitUpdater(BaseUpdater):

    def __init__(self, git_command):
        self.repo = LocalRepository(Env.get('app_dir'), command = git_command)

    def doUpdate(self):

        try:
            log.info('Updating to latest version')
            self.repo.pull()

            return True
        except:
            log.error('Failed updating via GIT: %s', traceback.format_exc())

        self.update_failed = True

        return False

    def getVersion(self):

        if not self.version:

            hash = None
            date = None
            branch = self.branch

            try:
                output = self.repo.getHead()  # Yes, please
                log.debug('Git version output: %s', output.hash)

                hash = output.hash[:8]
                date = output.getDate()
                branch = self.repo.getCurrentBranch().name
            except Exception as e:
                log.error('Failed using GIT updater, running from source, you need to have GIT installed. %s', e)

            self.version = {
                'repr': 'git:(%s:%s % s) %s (%s)' % (self.repo_user, self.repo_name, branch, hash or 'unknown_hash', datetime.fromtimestamp(date) if date else 'unknown_date'),
                'hash': hash,
                'date': date,
                'type': 'git',
                'branch': branch
            }

        return self.version

    def check(self):

        if self.update_version:
            return True

        log.info('Checking for new version on github for %s', self.repo_name)
        if not Env.get('dev'):
            self.repo.fetch()

        current_branch = self.repo.getCurrentBranch().name

        for branch in self.repo.getRemoteByName('origin').getBranches():
            if current_branch == branch.name:

                local = self.repo.getHead()
                remote = branch.getHead()

                log.debug('Versions, local:%s, remote:%s', (local.hash[:8], remote.hash[:8]))

                if local.getDate() < remote.getDate():
                    self.update_version = {
                        'hash': remote.hash[:8],
                        'date': remote.getDate(),
                    }
                    return True

        self.last_check = time.time()
        return False
Exemplo n.º 6
0
class GitUpdater(BaseUpdater):

    def __init__(self, git_command):
        self.repo = LocalRepository(Env.get('app_dir'), command = git_command)

    def doUpdate(self):

        try:
            log.info('Updating to latest version')
            self.repo.pull()

            # Delete leftover .pyc files
            self.deletePyc()

            return True
        except:
            log.error('Failed updating via GIT: %s', traceback.format_exc())

        self.update_failed = True

        return False

    def getVersion(self):

        if not self.version:
            try:
                output = self.repo.getHead()  # Yes, please
                log.debug('Git version output: %s', output.hash)
                self.version = {
                    'repr': 'git:(%s:%s % s) %s (%s)' % (self.repo_user, self.repo_name, self.branch, output.hash[:8], datetime.fromtimestamp(output.getDate())),
                    'hash': output.hash[:8],
                    'date': output.getDate(),
                    'type': 'git',
                }
            except Exception as e:
                log.error('Failed using GIT updater, running from source, you need to have GIT installed. %s', e)
                return 'No GIT'

        return self.version

    def check(self):

        if self.update_version:
            return True

        log.info('Checking for new version on github for %s', self.repo_name)
        if not Env.get('dev'):
            self.repo.fetch()

        current_branch = self.repo.getCurrentBranch().name

        for branch in self.repo.getRemoteByName('origin').getBranches():
            if current_branch == branch.name:

                local = self.repo.getHead()
                remote = branch.getHead()

                log.debug('Versions, local:%s, remote:%s', (local.hash[:8], remote.hash[:8]))

                if local.getDate() < remote.getDate():
                    self.update_version = {
                        'hash': remote.hash[:8],
                        'date': remote.getDate(),
                    }
                    return True

        self.last_check = time.time()
        return False
Exemplo n.º 7
0
class GitUpdater(BaseUpdater):
    def __init__(self, git_command):
        self.repo = LocalRepository(Env.get("app_dir"), command=git_command)

    def doUpdate(self):

        try:
            log.info("Updating to latest version")
            self.repo.pull()

            return True
        except:
            log.error("Failed updating via GIT: %s", traceback.format_exc())

        self.update_failed = True

        return False

    def getVersion(self):

        if not self.version:

            hash = None
            date = None
            branch = self.branch

            try:
                output = self.repo.getHead()  # Yes, please
                log.debug("Git version output: %s", output.hash)

                hash = output.hash[:8]
                date = output.getDate()
                branch = self.repo.getCurrentBranch().name
            except Exception as e:
                log.error("Failed using GIT updater, running from source, you need to have GIT installed. %s", e)

            self.version = {
                "repr": "git:(%s:%s % s) %s (%s)"
                % (
                    self.repo_user,
                    self.repo_name,
                    branch,
                    hash or "unknown_hash",
                    datetime.fromtimestamp(date) if date else "unknown_date",
                ),
                "hash": hash,
                "date": date,
                "type": "git",
                "branch": branch,
            }

        return self.version

    def check(self):

        if self.update_version:
            return True

        log.info("Checking for new version on github for %s", self.repo_name)
        if not Env.get("dev"):
            self.repo.fetch()

        current_branch = self.repo.getCurrentBranch().name

        for branch in self.repo.getRemoteByName("origin").getBranches():
            if current_branch == branch.name:

                local = self.repo.getHead()
                remote = branch.getHead()

                log.debug("Versions, local:%s, remote:%s", (local.hash[:8], remote.hash[:8]))

                if local.getDate() < remote.getDate():
                    self.update_version = {"hash": remote.hash[:8], "date": remote.getDate()}
                    return True

        self.last_check = time.time()
        return False
Exemplo n.º 8
0
class GitUpdater(BaseUpdater):

    old_repo = 'RuudBurger/CouchPotatoServer'
    new_repo = 'CouchPotato/CouchPotatoServer'

    def __init__(self, git_command):
        self.repo = LocalRepository(Env.get('app_dir'), command=git_command)

        remote_name = 'origin'
        remote = self.repo.getRemoteByName(remote_name)
        if self.old_repo in remote.url:
            log.info('Changing repo to new github organization: %s -> %s',
                     (self.old_repo, self.new_repo))
            new_url = remote.url.replace(self.old_repo, self.new_repo)
            self.repo._executeGitCommandAssertSuccess("remote set-url %s %s" %
                                                      (remote_name, new_url))

    def doUpdate(self):

        try:
            log.info('Updating to latest version')
            self.repo.pull()

            return True
        except:
            log.error('Failed updating via GIT: %s', traceback.format_exc())

        self.update_failed = True

        return False

    def getVersion(self):

        if not self.version:

            hash = None
            date = None
            branch = self.branch

            try:
                output = self.repo.getHead()  # Yes, please
                log.debug('Git version output: %s', output.hash)

                hash = output.hash[:8]
                date = output.getDate()
                branch = self.repo.getCurrentBranch().name
            except Exception as e:
                log.error(
                    'Failed using GIT updater, running from source, you need to have GIT installed. %s',
                    e)

            self.version = {
                'repr':
                'git:(%s:%s % s) %s (%s)' %
                (self.repo_user, self.repo_name, branch, hash
                 or 'unknown_hash',
                 datetime.fromtimestamp(date) if date else 'unknown_date'),
                'hash':
                hash,
                'date':
                date,
                'type':
                'git',
                'branch':
                branch
            }

        return self.version

    def check(self):

        if self.update_version:
            return True

        log.info('Checking for new version on github for %s', self.repo_name)
        if not Env.get('dev'):
            self.repo.fetch()

        current_branch = self.repo.getCurrentBranch().name

        for branch in self.repo.getRemoteByName('origin').getBranches():
            if current_branch == branch.name:

                local = self.repo.getHead()
                remote = branch.getHead()

                log.debug('Versions, local:%s, remote:%s',
                          (local.hash[:8], remote.hash[:8]))

                if local.getDate() < remote.getDate():
                    self.update_version = {
                        'hash': remote.hash[:8],
                        'date': remote.getDate(),
                    }
                    return True

        self.last_check = time.time()
        return False