sapling/eden/scm/gen_version.py
Jun Wu 2a99866d7b codemod: update license headers
Summary:
The "Portions" license cannot be updated automatically. So this is a manual
update using:

  sd -s 'Portions Copyright (c) Facebook, Inc. and its affiliates.' 'Portions Copyright (c) Meta Platforms, Inc. and affiliates.' `rg -l Facebook`
  sd -s 'Copyright (c) Facebook, Inc. and its affiliates.' 'Copyright (c) Meta Platforms, Inc. and affiliates.' `rg -l Facebook`

Differential Revision: D33420114

fbshipit-source-id: 49ae00a7b62e3b8cc6c5dd839b3c104a75e72a56
2022-01-05 14:43:32 -08:00

64 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python3
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2.
import argparse
import errno
import hashlib
import os
import struct
MAIN_VERSION = "4.4.2"
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--version", required=True)
ap.add_argument("--release", required=True)
ap.add_argument("--revision", required=True)
ap.add_argument("output_path")
args = ap.parse_args()
if args.version and args.release:
sub_version = "%s_%s_%s" % (args.version, args.release, args.revision[:8])
elif args.revision:
sub_version = args.revision[:8]
else:
# Buck does not pass in any build data info in dev builds
sub_version = "dev"
version = "%s_%s" % (MAIN_VERSION, sub_version)
versionb = version.encode("ascii")
versionhash = struct.unpack(">Q", hashlib.sha1(versionb).digest()[:8])[0]
if args.output_path.endswith("py"):
contents = (
"# auto-generated by the build\n" 'version = "%s"\n' "versionhash = %s\n"
) % (version, versionhash)
elif args.output_path.endswith("rs"):
contents = (
(
r"""// auto-generated by the build
pub static VERSION: &'static str = "%s";
pub static VERSION_HASH: u64 = %s;
"""
)
% (version, versionhash)
)
try:
output_dir = os.path.dirname(args.output_path)
os.makedirs(output_dir)
except OSError as ex:
if ex.errno != errno.EEXIST:
raise
with open(args.output_path, "w") as f:
f.write(contents)
main()