From 28678790ab215070a8b7af66178550cefbe978c4 Mon Sep 17 00:00:00 2001 From: Kyle Fuller Date: Sun, 22 Jul 2018 10:38:24 +0100 Subject: [PATCH] feat(repo): Support copying files to all repos --- docs/repo.rst | 9 +++++++++ maintain/commands/repo.py | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/docs/repo.rst b/docs/repo.rst index 3c24c9b..f81f680 100644 --- a/docs/repo.rst +++ b/docs/repo.rst @@ -33,3 +33,12 @@ Options -s/--silent - Don't print subcommand output --exit - Exit after first failure (non zero exit) + +cp +-- + +Copies a file into each repository. + +.. code-block:: + + $ maintain repo cp contributing.md .github/CONTRIBUTING.md diff --git a/maintain/commands/repo.py b/maintain/commands/repo.py index 2b457b6..07b6548 100644 --- a/maintain/commands/repo.py +++ b/maintain/commands/repo.py @@ -1,6 +1,7 @@ import os import sys import subprocess +from shutil import copyfile import click from git import Repo @@ -101,3 +102,23 @@ def check(exit): break sys.exit(status) + + +@repo.command() +@click.argument('src', nargs=-1, type=click.Path(exists=True)) +@click.argument('dst', nargs=1, type=click.Path()) +def cp(src, dst): + status = 0 + + for (repo, path) in gather_repositories(): + for filename in src: + destination = os.path.join(path, dst) + + if os.path.exists(destination): + status = 1 + print('Cannot copy to {}, {} exists'.format(repo, dst)) + continue + + copyfile(filename, destination) + + sys.exit(status)