#!/usr/bin/env python from __future__ import print_function import os import sys # Find the best reverse path to reference the current directory from another # directory. We use this to find relative paths to and from the source and build # directories. # # If the directory is given as an absolute path, return an absolute path to the # current directory. # # If there's a symlink involved, and the same relative path would not work if # the symlink was replace with a regular directory, then return an absolute # path. This handles paths like out -> /mnt/ssd/out # # For symlinks that can use the same relative path (out -> out.1), just return # the relative path. That way out.1 can be renamed as long as the symlink is # updated. # # For everything else, just return the relative path. That allows the source and # output directories to be moved as long as they stay in the same position # relative to each other. def reverse_path(path): if path.startswith("/"): return os.path.abspath('.') realpath = os.path.relpath(os.path.realpath('.'), os.path.realpath(path)) relpath = os.path.relpath('.', path) if realpath != relpath: return os.path.abspath('.') return relpath if __name__ == '__main__': print(reverse_path(sys.argv[1]))