use python for logic
This commit is contained in:
parent
47bb0bda3a
commit
aa4c3ecdae
2 changed files with 55 additions and 19 deletions
54
home/private_bin/executable_mkscratch
Normal file
54
home/private_bin/executable_mkscratch
Normal 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()
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue