import logging import os import shlex def install_bumper(ctx): runcmd_prepend_to_path = globals()["runcmd_prepend_to_path"] srcdir = globals()["srcdir"] # Add the directory with built Rust binaries to the path. runcmd_prepend_to_path(ctx, dirname=os.path.join(srcdir, "target", "debug")) def git_init_and_commit_everything(ctx, dirname=None): runcmd_run = globals()["runcmd_run"] runcmd_run(ctx, ["git", "init", dirname]) runcmd_run(ctx, ["git", "add", "."], cwd=dirname) runcmd_run(ctx, ["git", "commit", "-minitial"], cwd=dirname) def remember_HEAD(ctx, dirname=None, varname=None): runcmd_run = globals()["runcmd_run"] runcmd_get_stdout = globals()["runcmd_get_stdout"] runcmd_run(ctx, ["git", "rev-parse", "HEAD"], cwd=dirname) ctx[varname] = runcmd_get_stdout(ctx).strip() def run_command_in_directory(ctx, dirname=None, argv0=None, args=None): runcmd_run = globals()["runcmd_run"] runcmd_exit_code_is_zero = globals()["runcmd_exit_code_is_zero"] argv = [shlex.quote(argv0)] + shlex.split(args) runcmd_run(ctx, argv, cwd=dirname) runcmd_exit_code_is_zero(ctx) def git_tag_points_at(ctx, dirname=None, tag=None, varname=None): runcmd_run = globals()["runcmd_run"] runcmd_get_stdout = globals()["runcmd_get_stdout"] runcmd_exit_code_is_zero = globals()["runcmd_exit_code_is_zero"] runcmd_run(ctx, ["git", "show", "--raw", tag], cwd=dirname) runcmd_exit_code_is_zero(ctx) output = runcmd_get_stdout(ctx) commit = ctx[varname] logging.debug(f"expecting tag {tag} to point at {commit}") logging.debug(f"tag: {output!r}") assert output.startswith(f"tag {tag}\n") assert f"\ncommit {commit}" in output