use python for logic

This commit is contained in:
Daylin Morgan 2025-02-13 11:37:17 -06:00
parent 47bb0bda3a
commit aa4c3ecdae
Signed by: daylin
GPG key ID: 950D13E9719334AD
2 changed files with 55 additions and 19 deletions

View file

@ -0,0 +1,54 @@
#!/usr/bin/env python3
from pathlib import Path
import sys
from datetime import datetime
from tempfile import mkdtemp
SCRATCH_DIR = Path.home() / "scratch"
WEEK_SCRATCH = SCRATCH_DIR / datetime.now().strftime("%Y/%U")
(SCRATCH_DIR / "current").unlink()
(SCRATCH_DIR / "current").symlink_to(WEEK_SCRATCH)
def clean_up():
for p in WEEK_SCRATCH.iterdir():
if p.is_dir() and len(list(p.iterdir())) == 0:
sys.stderr.write(f"removing: {p}\n")
p.rmdir()
def make_temp() -> Path:
return Path(mkdtemp(prefix=datetime.now().strftime("%d") + ".", dir=WEEK_SCRATCH))
def make_named(name: str) -> Path:
d = WEEK_SCRATCH / name
d.mkdir(exist_ok=True)
return d
def return_last() -> Path:
dirs = [ d for d in WEEK_SCRATCH.iterdir() if d.is_dir()]
if len(dirs) == 0:
sys.stderr.write("no directores. exiting...")
return sorted(dirs, key = lambda p: p.stat().st_mtime, reverse=True)[0]
def main():
clean_up()
if len(sys.argv) > 2:
sys.exit("unexpected number of arguments")
elif len(sys.argv) > 1:
name = sys.argv[1]
if name == "last":
d = return_last()
else:
d = make_named(name)
else:
d = make_temp()
print(d)
if __name__ == "__main__":
main()

View file

@ -1,24 +1,6 @@
#!/usr/bin/env zsh
##? drop into a directory in ~/scratch/%Y/%U
# inspo: https://leahneukirchen.org/blog/archive/2006/01/keeping-your-home-clean-with-mess.html
local dir date_scratch
date_scratch=$HOME/scratch/$(date +"%Y/%U")
mkdir -p $date_scratch
ln -sfn $date_scratch $HOME/scratch/current
# cleanup any empty directories while I'm here
find $HOME/scratch/$(date +"%Y") \
-mindepth 2 -maxdepth 2 -type d -empty -print0 |\
xargs -0 --no-run-if-empty rmdir --verbose
if [[ -n $1 ]]; then
dir=$date_scratch/$1
mkdir -p $dir
else
dir=$(mktemp -d $date_scratch/$(date +"%d").XXXX)
fi
dir=$(mkscratch "$@")
pushd $dir