#!/bin/bash # This script is intended to be run via cron. # It creates a folder structure in home for the current date in the following format: # $HOME//// # It also sets up a symlink for the tagged folder. # This symlink will always point to the folder for the current date. # Finally, it removes any folders without data, to prevent clutter. LD_INTERNAL=1 . $(dirname $(realpath $0))/daisy.source if [[ $1 == '' ]]; then echo "Usage: $LD_BIN " echo "Creates a folder within '.daisy' in the current directory containing" echo "a tree of dates associated with the folder name given by argument." echo "A symlink is (re-)created at the same time with the same folder name." echo "For example, if given the folder 'notes', this utility will:" echo "- Create a folder '/.daisy/notes///'." echo "- Create a symlink named 'notes' that points to it." echo "It is recommended to run this via cron." exit 1 fi root_dir=$(dirname $1)/.daisy/$(basename $1) today_sym=$1 # Present day today=$(date -I) year=$(echo $today | awk -F"-" '{print $1}') month=$(echo $today | awk -F"-" '{print $2}') day=$(echo $today | awk -F"-" '{print $3}') set -e function errorFn() { error=$? if [[ $error -gt 0 ]]; then echo "$LD_BIN error ($error): " perl -E 'say $!=shift' $error fi exit $error } # Error handling trap errorFn ERR # First we clear out empty folders, and remove the symlink if it exists test -e "$root_dir" && find "$root_dir" -maxdepth 3 -type d -empty -print | xargs rm -rf test -L "$today_sym" && rm -rf "$today_sym" # Now we can set up today's directory mkdir -p "$root_dir/$year/$month/$day" ln -s "$root_dir/$year/$month/$day" "$today_sym" exitcode=@?