make-vcs-info.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env python3
  2. import argparse
  3. import json
  4. import os
  5. import subprocess
  6. def main():
  7. parser = argparse.ArgumentParser()
  8. parser.add_argument('path')
  9. parser.add_argument('out', type=argparse.FileType('w'))
  10. args = parser.parse_args()
  11. os.chdir(os.path.expanduser(args.path))
  12. git_show_cmd = 'git show -s --format=\'{"ref": "%D", "sha": "%H","author": "%an <%ae>","date":"%ad","commit_message": "%s"}\' HEAD'
  13. output = subprocess.getoutput(git_show_cmd)
  14. print(f'git output: {output}')
  15. git_info = json.loads(output)
  16. refname = os.environ['GIT_REF']
  17. # refname = git_info['ref']
  18. commit = git_info['sha']
  19. author = git_info['author']
  20. summary = git_info['commit_message']
  21. scm_data = f'''Git info:
  22. refname: {refname}
  23. Commit: {commit}
  24. Author: {author}
  25. Summary: {summary}
  26. '''
  27. vcs_info = {
  28. 'BRANCH': refname,
  29. 'SCM_DATA': scm_data,
  30. 'PROGRAM_VERSION': scm_data
  31. }
  32. json.dump(vcs_info, args.out, indent=4)
  33. if __name__ == '__main__':
  34. main()