helper for making symlinks
This commit is contained in:
parent
ef84edee63
commit
64cfd3c382
60
scripts/ezlink
Executable file
60
scripts/ezlink
Executable file
@ -0,0 +1,60 @@
|
|||||||
|
#! /usr/bin/env python
|
||||||
|
import argparse
|
||||||
|
import sys
|
||||||
|
import logging
|
||||||
|
import subprocess
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> int:
|
||||||
|
# Handle program arguments
|
||||||
|
ap = argparse.ArgumentParser(prog="ezlink", description="Easier symlink took")
|
||||||
|
ap.add_argument("pointer", help="Link that points to the destination", type=Path)
|
||||||
|
ap.add_argument("destination", help="Destination of the link", type=Path)
|
||||||
|
ap.add_argument(
|
||||||
|
"-f", "--force", help="Force the link to be created", action="store_true"
|
||||||
|
)
|
||||||
|
ap.add_argument(
|
||||||
|
"--hard", help="Link directly to the destination inode", action="store_true"
|
||||||
|
)
|
||||||
|
ap.add_argument("--absolute", "-a", help="Use absolute paths", action="store_true")
|
||||||
|
ap.add_argument(
|
||||||
|
"--dereference-destination",
|
||||||
|
help="Follow the destination if it is also a pointer",
|
||||||
|
action="store_true",
|
||||||
|
)
|
||||||
|
ap.add_argument(
|
||||||
|
"--dry-run", help="Don't actually create the link", action="store_true"
|
||||||
|
)
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
# Convert to absolute paths if requested
|
||||||
|
if args.absolute:
|
||||||
|
args.pointer = args.pointer.absolute()
|
||||||
|
args.destination = args.destination.absolute()
|
||||||
|
|
||||||
|
# Construct the appropriate LN command
|
||||||
|
command = ["ln"]
|
||||||
|
if not args.dereference_destination:
|
||||||
|
command.append("-n")
|
||||||
|
if not args.hard:
|
||||||
|
command.append("-s")
|
||||||
|
if args.force:
|
||||||
|
command.append("-f")
|
||||||
|
command.append(str(args.destination))
|
||||||
|
command.append(str(args.pointer))
|
||||||
|
|
||||||
|
# Print the command
|
||||||
|
print(" ".join(command))
|
||||||
|
|
||||||
|
# Run the command if not a dry run
|
||||||
|
if not args.dry_run:
|
||||||
|
return subprocess.run(command).returncode
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
sys.exit(main())
|
4
scripts/ezlink3
Executable file
4
scripts/ezlink3
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
python3 $(which ezlink) $@
|
Loading…
x
Reference in New Issue
Block a user