Files
fluxengine/build/_sandbox.py
David Given 8e5d52f2c7 Update ab.
2025-07-24 23:25:41 +02:00

50 lines
1.3 KiB
Python

#!/usr/bin/python3
from os.path import *
import argparse
import os
import shutil
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-s", "--sandbox")
parser.add_argument("-v", "--verbose", action="store_true")
parser.add_argument("-l", "--link", action="store_true")
parser.add_argument("-e", "--export", action="store_true")
parser.add_argument("files", nargs="*")
args = parser.parse_args()
assert args.sandbox, "You must specify a sandbox directory"
assert args.link ^ args.export, "You can't link and export at the same time"
if args.link:
os.makedirs(args.sandbox, exist_ok=True)
for f in args.files:
sf = join(args.sandbox, f)
if args.verbose:
print("link", sf)
os.makedirs(dirname(sf), exist_ok=True)
try:
os.symlink(abspath(f), sf)
except PermissionError:
shutil.copy(f, sf)
if args.export:
for f in args.files:
sf = join(args.sandbox, f)
if args.verbose:
print("export", sf)
df = dirname(f)
if df:
os.makedirs(df, exist_ok=True)
try:
os.remove(f)
except FileNotFoundError:
pass
os.rename(sf, f)
main()