How can I get Pants to store the output of git describe
somewhere in my .pex
file so that I can access it from the Python code I'm writing?
Basically I want to be able to clone my project and do this:
./pants binary px
dist/px.pex
to somebodypx.pex --version
and get a printout of whatever git describe
said when I built the .pex
in step one.Help!
Turns out pex
already does git describe
on build. The result it stores in a PEX-INFO
file in the root of the .pex
file. So to read it, I did this:
def get_version():
"""Extract version string from PEX-INFO file"""
my_pex_name = os.path.dirname(__file__)
zip = zipfile.ZipFile(my_pex_name)
with zip.open("PEX-INFO") as pex_info:
return json.load(pex_info)['build_properties']['tag']
This is good enough IMO, but there are also drawbacks. If somebody has an improved answer I'm prepared to switch to that one as the accepted one.
Outages with this one:
PEX-INFO
, would be better if there was some kind of API call for this.git describe --dirty
for example.