blob: 4ebb958c3d5fae95f092445cd7c27868ab676791 [file] [log] [blame]
"""Copy a generated file to the source tree.
Run like:
copy_to_source path/to/generated_file path/to/source_file_to_overwrite
"""
import os
import shutil
import stat
import sys
from pathlib import Path
def copy_to_source(generated_relative_path: Path, target_relative_path: Path) -> None:
"""Copy the generated file to the target file path.
Expands the relative paths by looking at Bazel env vars to figure out which absolute paths to use.
"""
# This script normally gets executed from the runfiles dir, so find the absolute path to the generated file based on that.
generated_absolute_path = Path.cwd() / generated_relative_path
# Similarly, the target is relative to the source directory.
target_absolute_path = os.getenv("BUILD_WORKSPACE_DIRECTORY") / target_relative_path
print(f"Copying {generated_absolute_path} to {target_absolute_path}")
target_absolute_path.parent.mkdir(parents=True, exist_ok=True)
shutil.copy(generated_absolute_path, target_absolute_path)
target_absolute_path.chmod(0o664)
if __name__ == "__main__":
if len(sys.argv) != 3:
sys.exit("Usage: copy_to_source <generated_file> <target_file>")
copy_to_source(Path(sys.argv[1]), Path(sys.argv[2]))