You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
9 years ago
|
#!/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())
|