Add repo_find
This commit is contained in:
parent
733e57e7cd
commit
7fe0065828
39
libwyag.py
39
libwyag.py
|
@ -146,3 +146,42 @@ argsp.add_argument("path",
|
|||
|
||||
def cmd_init(args):
|
||||
repo_create(args.path)
|
||||
|
||||
def repo_find(path=".", required=True):
|
||||
path = os.path.realpath(path)
|
||||
|
||||
if os.path.isdir(os.path.join(path, ".git")):
|
||||
return GitRepository(path)
|
||||
|
||||
# If we haven't returned, recurse in parent
|
||||
parent = os.path.realpath(os.path.join(path, ".."))
|
||||
|
||||
match os.name:
|
||||
case "nt":
|
||||
is_root = os.path.splitdrive(path)[1] == "\\"
|
||||
case "posix":
|
||||
# If parent==path, then path is root.
|
||||
is_root = parent == path
|
||||
case _:
|
||||
raise Exception(f"Unsupported os {os.name}")
|
||||
|
||||
if is_root:
|
||||
if required:
|
||||
raise Exception("No git directory.")
|
||||
else:
|
||||
return None
|
||||
|
||||
# Recursive case
|
||||
return repo_find(parent, required)
|
||||
|
||||
argsp = argsubparsers.add_parser("status", help="Get the status of the repo")
|
||||
|
||||
argsp.add_argument("path",
|
||||
metavar="directory",
|
||||
nargs="?",
|
||||
default=".",
|
||||
help="Which directory")
|
||||
|
||||
def cmd_status(args):
|
||||
# TODO: actually get status
|
||||
print(repo_find(args.path).worktree)
|
||||
|
|
Loading…
Reference in New Issue
Block a user