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 <vapier@google.com>
Reviewed-by: David Pursehouse <dpursehouse@collab.net>
diff --git a/git_command.py b/git_command.py
index 6742303..32dcde0 100644
--- a/git_command.py
+++ b/git_command.py
@@ -98,6 +98,52 @@
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: