mirror of
https://git.alemi.dev/gitshell.git
synced 2024-11-23 16:04:51 +01:00
feat: removed public, ls marks hidden repos
This commit is contained in:
parent
ee328d60a3
commit
186dc3ca52
2 changed files with 14 additions and 18 deletions
18
ls
18
ls
|
@ -1,6 +1,7 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import subprocess
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
GIT_ROOT = Path(os.environ.get("GIT_ROOT_DIR") or "/srv/git/")
|
GIT_ROOT = Path(os.environ.get("GIT_ROOT_DIR") or "/srv/git/")
|
||||||
|
@ -8,20 +9,29 @@ GIT_ROOT = Path(os.environ.get("GIT_ROOT_DIR") or "/srv/git/")
|
||||||
def pre(depth: int, last: bool = False) -> str:
|
def pre(depth: int, last: bool = False) -> str:
|
||||||
return (': ' * (depth)) + ("'-" if last else '|-')
|
return (': ' * (depth)) + ("'-" if last else '|-')
|
||||||
|
|
||||||
|
def is_public(repo: Path) -> bool:
|
||||||
|
cmd = ["git", "config", "-f", f"{repo}/config", "cgit.ignore"]
|
||||||
|
proc = subprocess.run(cmd, stdout=subprocess.PIPE)
|
||||||
|
if proc.stdout.decode().strip() == "1":
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def print_dir(dir: str, depth: int):
|
def print_dir(dir: str, depth: int):
|
||||||
print(f"{pre(depth)}+ {dir}/")
|
print(f"{pre(depth)}+ {dir}/")
|
||||||
|
|
||||||
def print_repo(repo: str, depth: int, last: bool = False):
|
def print_repo(repo: str, depth: int, last: bool = False, public: bool = False):
|
||||||
print(f"{pre(depth, last=last)} {repo.replace('.git','')}")
|
print(f"{pre(depth, last=last)} {repo.replace('.git','')} {'' if public else '[h]'}")
|
||||||
|
|
||||||
def run_on_all_repos(root: Path, depth: int = 0):
|
def run_on_all_repos(root: Path, depth: int = 0):
|
||||||
contents = os.listdir(root)
|
contents = sorted(os.listdir(root))
|
||||||
for element in contents:
|
for element in contents:
|
||||||
full_path = root / element
|
full_path = root / element
|
||||||
if element.startswith("."):
|
if element.startswith("."):
|
||||||
pass # ignore hidden files
|
pass # ignore hidden files
|
||||||
elif element.endswith(".git"):
|
elif element.endswith(".git"):
|
||||||
print_repo(element, depth, last=element==contents[-1])
|
public = is_public(full_path)
|
||||||
|
last = element == contents[-1]
|
||||||
|
print_repo(element, depth, last=last, public=public)
|
||||||
elif os.path.isdir(root / element):
|
elif os.path.isdir(root / element):
|
||||||
print_dir(element, depth)
|
print_dir(element, depth)
|
||||||
run_on_all_repos(root / element, depth=depth+1)
|
run_on_all_repos(root / element, depth=depth+1)
|
||||||
|
|
14
public
14
public
|
@ -1,14 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# ls /srv/git -I 'git-shell-commands'
|
|
||||||
|
|
||||||
# one above misses repos like '.dotfiles', let's do it by hand
|
|
||||||
for f in $(ls /srv/git/.public -a); do
|
|
||||||
if [[ $f == '.' ]]; then
|
|
||||||
continue
|
|
||||||
elif [[ $f == '..' ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$f"
|
|
||||||
done
|
|
Loading…
Reference in a new issue