示例#1
0
    def release(self, new_version):
        command = ['hub', 'release', 'create']

        if new_version.prerelease:
            command.append('-p')

        for artefact in self.artefacts:
            command.append('-a')
            command.append(artefact)

        command.append(str(new_version))

        changelog = self.get_changelog()
        if changelog:
            with tempfile.NamedTemporaryFile() as fp:
                fp.write('{}\n\n'.format(new_version).encode('utf-8'))
                fp.write(changelog.encode('utf-8'))
                fp.flush()

                command.append('-F')
                command.append(fp.name)

                invoke(command)
            return

        invoke(command)
示例#2
0
文件: gem.py 项目: kylef/maintain
    def release(self):
        gems = glob('*.gem')
        if len(gems) != 0:
            raise Exception('Cannot release, found multiple unexpected ' +
                            'gems ({})'.format(', '.join(gems)))

        invoke(['gem', 'build', self.gemspec])
        invoke(['gem', 'push', glob('*.gem')[0]])
示例#3
0
    def release(self, new_version):
        gems = glob('*.gem')
        if len(gems) != 0:
            raise Exception('Cannot release, found multiple unexpected ' +
                            'gems ({})'.format(', '.join(gems)))

        invoke(['gem', 'build', self.gemspec])
        invoke(['gem', 'push', glob('*.gem')[0]])
示例#4
0
 def release(self):
     invoke(['pod', 'trunk', 'push', self.podspec])
示例#5
0
def git_update():
    invoke(['git', 'pull', 'origin', 'master'])
示例#6
0
def release(version, dry_run, bump, pull_request, dependents):
    if pull_request and not cmd_exists('hub'):
        click.echo('Missing dependency for hub: https://github.com/github/hub.' +
                   ' Please install `hub` and try again.')
        exit(1)

    if os.path.exists('.maintain.yml'):
        with open('.maintain.yml') as fp:
            config = yaml.load(fp.read())
    else:
        config = {}

    releaser = AggregateReleaser()

    if not version and bump:
        raise MissingParameter(param_hint='version', param_type='argument')
    elif version in ('major', 'minor', 'patch'):
        if bump:
            version = bump_version(releaser.determine_current_version(), version)
        else:
            releaser.determine_current_version()
    else:
        try:
            version = Version(version)
        except ValueError as e:
            raise click.BadParameter('{} is not a semantic version'.format(version))

    if not bump:
        current_version = releaser.determine_current_version()
        if current_version != version:
            click.echo('--no-bump was used, however the supplied version ' +
                       'is not equal to current version {} != {}'.format(current_version, version))
            exit(1)

    git_check_repository()
    git_check_branch()
    git_update()
    git_check_dirty()

    if bump:
        branch = 'master'
        if pull_request:
            branch = 'release-{}'.format(version)
            invoke(['git', 'checkout', '-b', branch])

        execute_hooks('bump', 'pre', config)

        releaser.bump(version)
        click.echo('Committing and tagging {}'.format(version))
        message = 'Release {}'.format(version)
        invoke(['git', 'commit', '-a', '-m', message])

        execute_hooks('bump', 'post', config)

        if not dry_run:
            invoke(['git', 'push', 'origin', branch])
            if pull_request:
                invoke(['hub', 'pull-request', '-m', message])

    if not dry_run and not pull_request:
        execute_hooks('publish', 'pre', config)

        invoke(['git', 'tag', '-a', str(version), '-m', 'Release {}'.format(version)])
        invoke(['git', 'push', 'origin', str(version)])

        releaser.release()

        execute_hooks('publish', 'post', config)

    if dependents and not pull_request and 'dependents' in config:
        # TODO dry run
        url = subprocess.check_output('git config --get remote.origin.url', shell=True).strip()
        map(lambda x: update_dependent(x, version, url), config['dependents'])
示例#7
0
def update_dependent(dependent, version, source_url):
    with temp_directory():
        invoke(['git', 'clone', dependent, 'repository', '--depth', '1'])

        with chdir('repository'):
            # Check for submodules
            submodules = git_get_submodules()
            if not submodules:
                return  # TODO Only git submodules are supported

            module = next(iter(filter(lambda m: m[1] == source_url, submodules.items())), None)
            if not module:
                return

            invoke(['git', 'submodule', 'update', '--init'])

            with chdir(module[0]):
                invoke(['git', 'checkout', str(version)])

            # TODO branch name
            branch = 'update'
            invoke(['git', 'checkout', '-b', branch])

            # TODO commit message
            package = 'Unknown'
            message = '[{}] Update to {}'.format(package, version)
            invoke(['git', 'commit', '-a', '-m', message])
            invoke(['git', 'push', 'origin', branch])
            invoke(['hub', 'pull-request', '-m', message])
示例#8
0
def github_create_pr(message):
    invoke(['hub', 'pull-request', '-m', message])
示例#9
0
def git_check_dirty():
    error = 'You need to have a clean check out. You have un-committed local changes.'
    invoke(['git', 'diff', '--quiet'], error)
    invoke(['git', 'diff', '--cached'], error)
示例#10
0
 def release(self, new_version):
     invoke(['pod', 'trunk', 'push', self.podspec])
示例#11
0
 def release(self):
     invoke(["pod", "trunk", "push", self.podspec])
示例#12
0
 def release(self, new_version):
     version = self.determine_current_version()
     invoke(['python', 'setup.py', 'sdist', 'bdist_wheel'])
     invoke(['twine', 'upload', 'dist/*{}*'.format(version)])
示例#13
0
 def release(self, new_version):
     invoke(['npm', 'publish'])
示例#14
0
 def create_pull_request(self, version):
     invoke(['hub', 'pull-request', '-m', 'Release {}'.format(version)])
示例#15
0
文件: npm.py 项目: kylef/maintain
 def release(self):
     invoke(['npm', 'publish'])
示例#16
0
 def release(self):
     version = self.determine_current_version()
     invoke(['python', 'setup.py', 'sdist', 'bdist_wheel'])
     invoke(['twine', 'upload', 'dist/*{}*'.format(version)])
示例#17
0
def git_update():
    invoke(['git', 'pull', '--no-rebase'])