Page MenuHomec4science

version.py
No OneTemporary

File Metadata

Created
Sat, May 11, 07:13

version.py

# -*- coding: utf-8 -*-
# @file
# @section LICENSE
#
# Copyright (©) 2016-2020 EPFL (École Polytechnique Fédérale de Lausanne),
# Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
import subprocess
import base64
from zlib import compress
def git(*args):
"""Run a git command"""
try:
return bytes(subprocess.check_output(["git"] + list(args)))
except subprocess.CalledProcessError:
return bytes()
def get_git_subst():
"""Get info about state of git repository"""
branch = git("rev-parse", "--abbrev-ref", "@")[:-1]
commit = git("rev-parse", branch)[:-1]
diff = git("diff", "@")
remotes = git('remote', '-v')
if remotes != "":
remotes_string = remotes[:-1].decode().replace('\n', '\\\\n')
else:
remotes_string = '""'
return {
'@commit@': commit.decode(),
'@branch@': branch.decode(),
'@diff@': base64.b64encode(compress(diff, 9)).decode(),
'@remotes@': remotes_string,
}

Event Timeline