#!/usr/bin/env python3 import os import argparse parser = argparse.ArgumentParser(description="Place a folder in ~/Documents in ~/Documents/Archives and symlink it") parser.add_argument('dir', metavar='DIRECTORY', type=str, help="The directory to archive") parser.add_argument('-d', '--dry', action='store_true') args = parser.parse_args() # Finding directories assert('HOME' in os.environ), "Home directory unknown" docs = os.path.realpath(os.path.join(os.environ['HOME'], 'Documents')) assert(os.path.isdir(docs)), "Documents folder not found" arcs = os.path.join(docs, 'Archives') assert(os.path.isdir(arcs)), "Archives folder not found" def archive(docdir): docdir = os.path.realpath(args.dir) assert(os.path.isdir(docdir)), docdir + " must be a directory" assert(docdir.startswith(docs)), "Directory is not in the document folder" assert(not docdir.startswith(arcs)), "Directory is already in the archive folder" reldir = os.path.relpath(docdir, docs) print("ARC", reldir) arcdir = os.path.join(arcs, reldir) parentArcdir = os.path.realpath(os.path.join(arcdir, '..')) parentDocdir = os.path.realpath(os.path.join(docdir, '..')) linkDest = os.path.relpath(arcdir, parentDocdir) # BULLSHIT # If the directory exists if os.path.isdir(arcdir): return # for f in os.listdir(arcdir): # assert(os.path.isdir(f)), "Something unknown in Archive dir") # archive(os.path.join(arcdir, f)) # If the directory doesn't exist, create the directories under it and move all the folder else: if args.dry: print("mkdir -p", parentArcdir) else: os.makedirs(parentArcdir, exist_ok=True) if args.dry: print("mv", docdir, arcdir) else: os.rename(docdir, arcdir) if args.dry: print("ln -s", linkDest, docdir) else: os.symlink(linkDest, docdir) def unarchive(arcdir): return archive(args.dir)