aboutsummaryrefslogtreecommitdiff
path: root/cleantools/clmgr.py
diff options
context:
space:
mode:
authorCamil Staps2016-02-08 23:40:34 +0100
committerCamil Staps2016-02-08 23:55:56 +0100
commitfd31c8d0a20de41b7b2b701f737d74dd0c318350 (patch)
treee12a79bea429fba87c29691490c939c6cdad8ae7 /cleantools/clmgr.py
parentMerge 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-xcleantools/clmgr.py46
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='')