Index: recipe_modules/git/resources/git_setup.py |
diff --git a/recipe_modules/git/resources/git_setup.py b/recipe_modules/git/resources/git_setup.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..90035224301d0185235369a8c15fa845050f7d87 |
--- /dev/null |
+++ b/recipe_modules/git/resources/git_setup.py |
@@ -0,0 +1,61 @@ |
+#!/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()) |