#!/usr/bin/env python # Copyright 2013 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """This script ensures that a given directory is an initialized git repo.""" import argparse import logging import os import subprocess import sys def run_git(git_cmd, *args, **kwargs): """Runs git with given arguments. kwargs are passed through to subprocess. If the kwarg 'throw' is provided, this behaves as check_call, otherwise will return git's return value. """ logging.info('Running: %s %s %s', git_cmd, args, kwargs) func = subprocess.check_call if kwargs.pop('throw', True) else subprocess.call return func((git_cmd,)+args, **kwargs) def main(): parser = argparse.ArgumentParser() parser.add_argument('--path', help='Path to prospective git repo.', required=True) parser.add_argument('--url', help='URL of remote to make origin.', required=True) parser.add_argument('--git_cmd_path', help='Path to the git command to run.', default='git') parser.add_argument('--remote', help='Name of the git remote.', default='origin') parser.add_argument('-v', '--verbose', action='store_true') opts = parser.parse_args() path = opts.path remote = opts.remote url = opts.url logging.getLogger().setLevel(logging.DEBUG if opts.verbose else logging.WARN) if not os.path.exists(path): os.makedirs(path) if os.path.exists(os.path.join(path, '.git')): run_git(opts.git_cmd_path, 'config', '--remove-section', 'remote.%s' % remote, cwd=path) else: run_git(opts.git_cmd_path, 'init', cwd=path) run_git(opts.git_cmd_path, 'remote', 'add', remote, url, cwd=path) return 0 if __name__ == '__main__': sys.exit(main())