diff --git a/git-open b/git-open index f5c24082d0f3d7aaf4b36b6e959ef34f8ce01d2b..5782da93da61461aec2cfdb00b86dc0f9e7ac405 100755 --- a/git-open +++ b/git-open @@ -2,6 +2,8 @@ import sys import subprocess +import argparse + def popen(str): p = subprocess.Popen(str.split(" "), @@ -50,26 +52,27 @@ def main(args): out = popen("git remote") remotes = out.strip().split("\n") - remote = False - if len(args) == 2: - remote = sys.argv[1] + remote = args.remote - # TODO -n --no-act flag + do = open_remote + if args.dry_run: + do = lambda x: print(to_http(remote_url(x))) if not remotes: err("No remotes") - try: - open_remote(remote) - return - except Exception as e: - warn(str(e)) - warn("Giving up") - return + if remote: + try: + do(remote) + return + except Exception as e: + warn(str(e)) + warn("Giving up") + return for remote in remotes: try: - open_remote(remote) + do(remote) break except Exception as e: warn(str(e)) @@ -77,4 +80,9 @@ def main(args): err("All remotes failed") if __name__ == "__main__": - main(sys.argv) + parser = argparse.ArgumentParser(description='open git remotes in web browser') + parser.add_argument('-n', '--dry-run', action='store_true', dest='dry_run') + parser.add_argument('remote', action='store', nargs='?') + args = parser.parse_args() + main(args) +