diff options
author | Camil Staps | 2016-02-08 23:40:34 +0100 |
---|---|---|
committer | Camil Staps | 2016-02-08 23:55:56 +0100 |
commit | fd31c8d0a20de41b7b2b701f737d74dd0c318350 (patch) | |
tree | e12a79bea429fba87c29691490c939c6cdad8ae7 /cleantools/clmgr.py | |
parent | Merge remote-tracking branch 'origin/master' (diff) |
Readme, more functions & output, python standards
- Fixed some python issues, complied to some standards
- Filled in the readme
- Added remove & upgrade to clmgr
- Renamed clone to install in clmgr
- More output for clmgr
Diffstat (limited to 'cleantools/clmgr.py')
-rwxr-xr-x | cleantools/clmgr.py | 46 |
1 files changed, 39 insertions, 7 deletions
diff --git a/cleantools/clmgr.py b/cleantools/clmgr.py index ec5764d..563f60c 100755 --- a/cleantools/clmgr.py +++ b/cleantools/clmgr.py @@ -4,14 +4,27 @@ import os import click from git import Repo from setuptools_scm import get_version +import shutil -import cleantools.settings +from . import settings + +__all__ = ['Library', 'main'] class Library(): """A Clean library""" def __init__(self, path): self.path = Library.get_path(path) + def upgrade(self): + repo = Repo(self.path) + old_sha = repo.head.commit.hexsha + repo.remotes.origin.pull() + new_sha = repo.head.commit.hexsha + return old_sha != new_sha + + def remove(self): + shutil.rmtree(self.path) + @staticmethod def get_path(lib): """Get the path of a library in the installation dir""" @@ -35,6 +48,7 @@ def cli(): @cli.command('version') def cli_version(): + """Print clmgr's version.""" print(get_version()) @cli.command('init') @@ -44,12 +58,12 @@ def cli_init(install_dir): """Initialise the installation directory.""" settings.init(install_dir) -@cli.command('clone') +@cli.command('install') @click.option('--abs/--github', help='Use an absolute path (default: use GitHub)') @click.argument('repo', metavar='repo') @click.argument('local_dir', metavar='local_dir', required=False) -def cli_clone(abs, repo, local_dir): +def cli_install(abs, repo, local_dir): """Clone a repository. If local_dir is empty, the last part of repo will be used. @@ -57,18 +71,36 @@ def cli_clone(abs, repo, local_dir): Examples: \b - clmgr clone username/MyLibrary (local_dir will be MyLibrary) - clmgr clone --abs /var/git/my-library LocalName""" - + clmgr install username/MyLibrary (local_dir will be MyLibrary) + clmgr install --abs /var/git/my-library LocalName""" if local_dir == None: local_dir = list(filter(lambda x: len(x)>0, repo.split('/')))[-1] - click.echo('No local_dir given, using \'%s\'' % local_dir, err=True) + click.secho('No local_dir given, using \'%s\'' % local_dir, + err=True, fg='yellow') if abs: Library.clone(repo, local_dir) else: Library.clone('https://github.com/' + repo, local_dir) + click.secho('%s installed as %s.' % (repo, local_dir), fg='green') + +@cli.command('upgrade') +@click.argument('library') +def cli_upgrade(library): + """Upgrade an installed library.""" + if Library(library).upgrade(): + click.secho('%s upgraded.' % library, fg='green') + else: + click.secho('%s is already the newest version.' % library, fg='yellow') + +@cli.command('remove') +@click.argument('library') +def cli_remove(library): + """Remove an installed library.""" + Library(library).remove() + click.secho('%s removed.' % library, fg='green') + @cli.command('echo') @click.option('--indent/--no-indent', help='Indent hierarchically') @click.argument('what', metavar='what', default='') |