Dave's Notebook

Data Science, Machine Learning, Artificial Intelligence, Visualization, and Complex Systems.
@sixhat@datasci.social wiki

My approach to managing scratch projects with bash scripts

July 25, 2023

In R if I just want to test an idea I create a scratch project in /tmp . This will removed automatically on the next boot. This makes it easy to setup scratch folders without leaving much clutter behind. The problem is that the next time you open R after a reboot it will complaint about not finding the previous workspace. I also do the same thing with Markdown files and folders. To help me manage this I have a new_project bash script in my bin folder that goes like this (only .r and .md versions shown but can easily be extended for your needs)

    #!/bin/bash
    set -euo pipefail

    __usage="usage: new_project name <type>

       type can be one of md, r, or any other... and accordingly it should open 
       and setup different folder structures

       name will be the folder name where the project exists.
    "

    make_folder () {
        mkdir -p "$1"
        cd "$1"
    }

    project_md (){
        make_folder "$1"
        local today_file="$(date +%F).md"
        if test ! -f "$today_file"; then
            touch "$today_file"
        fi
        open -a "/Applications/Visual Studio Code.app/" "$today_file"
    }

    project_r (){
        make_folder "$1"
        local today_file="$(date +%F).r"
        if test ! -f "$today_file"; then
            touch "$today_file"
        fi
        open -a "/Applications/RStudio.app" "$today_file"
    }

    # Start logic bellow this line

    if [ "$#" != 2 ]; then
        echo "$__usage"
        exit 1
    fi

    if [ "$2" = "r" ]; then
        project_r $1
    fi

    if [ "$2" = "md" ]; then
        project_md $1
    fi

Tags: bash, productivity, terminal, scratch