DEV Community

loading...
Cover image for What's in my RC 2021

What's in my RC 2021

Henry Unite
Software Developer from Philadelphia, Pennsylvania
・3 min read

Welcome to a tour of my .zshrc file! I thought it would be fun to take a dive into the different tools I use to elevate my developer game.

If you want to see my whole config, I keep all my setup files on GitHub: https://github.com/unitehenry/config

Tools I Use

Before we dive into my configuration, here are the tools I use that help me speed up my tasks as a developer:

fzf | Fuzzy File Finder

pandoc | Pandoc Document Converter

brew | MacOS Package Manager

The Variables

# EDITOR
export EDITOR="vi";
export VISUAL="vi";

# iCloud Directory
export DOCS="/Users/henryunite/Library/Mobile Documents/com~apple~CloudDocs";

# Work Directory
export WORK="/Users/henryunite/Projects/bicycletransit";
Enter fullscreen mode Exit fullscreen mode

Pretty straightforward, but these are what I use to:

  • Default editing to be opened in vim
  • Reference my iCloud directory which I use to keep all my personal files
  • A quick reference to where I keep all my work repositories, notes, projects

Credentials

# Credentials Fetcher
function username() {
  export PASS_BACK_PATH=$(pwd);
  cd $DOCS/passwords;
  echo $(decrypt-file $(fzf) | grep "Username:" | cut -d ":" -f2) | pbcopy;
  cd $PASS_BACK_PATH && unset PASS_BACK_PATH;
}

function password() {
  export PASS_BACK_PATH=$(pwd);
  cd $DOCS/passwords;
  echo $(decrypt-file $(fzf) | grep "Password:" | cut -d ":" -f2) | pbcopy;
  cd $PASS_BACK_PATH && unset PASS_BACK_PATH;
}
Enter fullscreen mode Exit fullscreen mode

There are so many chrome extensions, keychains, any ways to access your passwords. I personally encrypt my passwords in my cloud storage so I can access them by utilizing a aes-256-cbc decryption tool.

File Formatting

## Code Formatter
function format-file() {
  export FILENAME="$(basename $@)";
  export EXTENSION="${FILENAME##*.}";

  if [ $EXTENSION = 'py' ]
  then
    yapf --in-place $@;
    return 0;
  fi

  if [ $EXTENSION = 'php' ]
  then
    php-cs-fixer fix $@;
    rm .php_cs.cache;
    return 0;
  fi

  npx prettier --write --single-quote $@;

  unset FILENAME; unset EXTENSION;
}
Enter fullscreen mode Exit fullscreen mode

File formatter that handles the languages I use on a day-to-day basis. It gets the job done for most file types including JSON, YAML, and even markdown.

Spell Check

## Spellcheck
function spellcheck-file() {
  npx spellchecker-cli --files $@;
}
Enter fullscreen mode Exit fullscreen mode

When you're writing as much markdown documentation as me, you'll want an easy way to spell check your files.

What the Commit

## What the Commit
function wtf() { git commit -am "$(curl http://whatthecommit.com/index.txt)"; }
Enter fullscreen mode Exit fullscreen mode

This is a gimmick, but if you ever just want to commit file changes and you just don't know what to say in the commit message, what the commit is just a fun resource to get whacky commit messages.

Cheat Sheet

## Cheat
function cheat(){ curl https://cheat.sh/"$@"; }
Enter fullscreen mode Exit fullscreen mode

There are so many times I use a CLI tool and can't remember simple commands and options that it takes to perform certain tasks. Check out cheat.sh if you're looking for an easy way to reference different CLI tools.

Document Generation

## Generate Markdown
function generate-doc() { 
  cp -rf . /tmp;
  if [ -n "$2" ]
  then
    pandoc -s $1 -c $2 -o "/tmp/$1.html";
  else
    pandoc -s $1 -o "/tmp/$1.html"; 
  fi
  open "/tmp/$1.html";
}

## Generate Slide
function generate-slide() {
  # https://revealjs.com/config/
  pandoc -t revealjs \
    -V progress="false" \
    -V navigationMode="linear" \
    -V transition="none" \
    -s $1 -o "/tmp/$1.html";
  cp -rf . /tmp;
  open "/tmp/$1.html";
}
Enter fullscreen mode Exit fullscreen mode

I use markdown to write documentation all the time, but if I need to send a coworker a document or present a slide with content that is written in markdown, I'll use pandoc to generate these intermediary file formats.

It's really nice to leverage CSS when I want to make my documents look nice or need a clean way to look at markdown files.

File Encryption

## Encrypt : aes-256-cbc
function encrypt-file() {
  if [ -z $@ ]
  then
    echo -n "Enter Encrypt Phrase: "; read -s ENCRYPTINPUT; echo "\n";
    echo $ENCRYPTINPUT | openssl enc -aes-256-cbc;
    unset ENCRYPTINPUT;
  else
    openssl enc -aes-256-cbc -in $@;
  fi
}

## Decrypt : aes-256-cbc
function decrypt-file() {
  if [ -z $@ ]
  then
    openssl enc -d -aes-256-cbc;
  else
    openssl enc -aes-256-cbc -d -in $@;
  fi
}
Enter fullscreen mode Exit fullscreen mode

It's nice to have a quick way to encrypt and decrypt files with sensitive information.

Homebrew

## Homebrew Install Script
function install-homebrew() { /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"; }
Enter fullscreen mode Exit fullscreen mode

This is just in my configuration in the event that I just want to install homebrew without copying and pasting the install script from the website.

If I have a new Mac I need to setup, it'll make the setup so much easier.

Version Managers

source ~/.nvmrc;
source ~/.rvmrc;
Enter fullscreen mode Exit fullscreen mode

I've been using nvm and rvm to manage my node and ruby installations. They append rc scripts to load into your base rc file which I extract into their own designated files and load them in at the end.

Discussion (1)

Collapse
robertbernstein profile image
Robert Bernstein

Thank you for sharing these tips. They are great!