From 369814b4a77adcc78b2549ad728e0d69175f08e8 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 10 Jul 2019 17:10:07 -0400 Subject: move UserAgent to git_command for wider user We can't import the main module, so move the UserAgent helper out of it and into the git_command module so it can be used in more places. Bug: https://crbug.com/gerrit/11144 Change-Id: I8093c8a20bd1dc7d612d0e2a85180341817c0d86 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/231057 Tested-by: Mike Frysinger Reviewed-by: David Pursehouse --- git_command.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'git_command.py') diff --git a/git_command.py b/git_command.py index 67423035..32dcde09 100644 --- a/git_command.py +++ b/git_command.py @@ -98,6 +98,52 @@ class _GitCall(object): return fun git = _GitCall() + +_user_agent = None + +def RepoUserAgent(): + """Return a User-Agent string suitable for HTTP-like services. + + We follow the style as documented here: + https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent + """ + global _user_agent + + if _user_agent is None: + py_version = sys.version_info + + os_name = sys.platform + if os_name == 'linux2': + os_name = 'Linux' + elif os_name == 'win32': + os_name = 'Win32' + elif os_name == 'cygwin': + os_name = 'Cygwin' + elif os_name == 'darwin': + os_name = 'Darwin' + + p = GitCommand( + None, ['describe', 'HEAD'], + cwd=os.path.dirname(__file__), + capture_stdout=True) + if p.Wait() == 0: + repo_version = p.stdout + if repo_version and repo_version[-1] == '\n': + repo_version = repo_version[0:-1] + if repo_version and repo_version[0] == 'v': + repo_version = repo_version[1:] + else: + repo_version = 'unknown' + + _user_agent = 'git-repo/%s (%s) git/%s Python/%d.%d.%d' % ( + repo_version, + os_name, + git.version_tuple().full, + py_version.major, py_version.minor, py_version.micro) + + return _user_agent + + def git_require(min_version, fail=False, msg=''): git_version = git.version_tuple() if min_version <= git_version: -- cgit v1.2.3-54-g00ecf