d0p3t / macos-dotfiles

Shell scripts for applying default settings to UNIX-based operating systems.

Home Page:http://www.alchemists.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Dotfiles Icon

Dotfiles

Circle CI Status

Shell scripts for applying default settings to UNIX-based operating systems.

By default, these are set to my preferences (namely for macOS) but you can change them to your liking by editing any of the *.tt template files in the home_files directory. Read on to learn more.

Table of Contents

Features

  • Configures the Bash .bashrc, .bash_profile, and .inputrc files.
  • Configures the .hushlogin file.
  • Configures the CTags .ctags file.
  • Configures the Vim .vimrc file.
  • Configures the Git .gitconfig, .gitignore, and hook (i.e. .git_template) files.
  • Configures the Silver Surfer .agignore file.
  • Configures the Ruby Gems .gemrc file.
  • Configures the Ruby .ruby-version and .irbrc files.
  • Configures the Pry .pryrc file.
  • Configures the Ruby Debugger .rdebugrc file.
  • Configures the RSpec .rspec file.
  • Configures the Awesome Print .aprc file.
  • Configures the PostgreSQL .psqlrc file.
  • Configures the Rubocop .rubocop.yml file.
  • Configures the NPM .npmrc file.
  • Configures Sublime Text as the default editor.
  • Adds Bash Completion.
  • Adds GPG support.
  • Adds direnv support.
  • Adds chruby support.
  • Adds Node.js support.
  • Adds Z support.

Screencast

asciicast

Requirements

Setup

Open a terminal window and execute the following commands:

Current Version (stable)

git clone https://github.com/bkuhlmann/dotfiles.git
cd dotfiles
git checkout 33.1.0

Master Version (unstable)

git clone https://github.com/bkuhlmann/dotfiles.git
cd dotfiles

Edit any of the home_files/*.tt template files as you see fit. Then open a terminal window and execute the following command to install:

cd dotfiles
bin/run

Executing the bin/run script will present the following options:

s: Show managed dotfiles.
i: Install dotfiles (existing files are skipped).
l: Link dotfiles to this project (interactive per file, excludes: env.sh and .gitconfig).
c: Check for differences between $HOME files and this project's files.
d: Delete dotfiles (interactive per file, excludes: env.sh and .gitconfig).
q: Quit/Exit.

The options prompt can be skipped by passing the desired option directly to the bin/run script. For example, executing bin/run s will show all managed dotfiles by this project.

After install, the following files will require manual updating:

  • .bash/env.sh: Add secret/machine-specific environment settings (if any).
  • .gitconfig: Uncomment the name, email, and token lines within the [user] and [github] sections to replace with your own details.

Upgrade

When upgrading to a new version, run the following:

  1. Run: bin/run l. This will link any new files. If not using linked files, run bin/run d and bin/run i instead.
  2. Run: bin/run c. This will display file differences (if any -- usually, should only be excluded files).
  3. Run: exec $SHELL. This will apply updates to the current shell.

Usage

Aliases

General

.. = "cd .."
... = "cd ../.."
cdb = "cd -"
c = "clear"
h = "history"
l = "ls -alhT"
o = "open"
p = 'pwd | tr -d "\r\n" | _copy_and_print'
du = "ncdu -e --color dark"
l1 = "ls -A1 | _copy_and_print '\n'"
cat = "bat --theme DarkNeon"
home = "cd $HOME"
man = "gem man --system"
ping = "prettyping --nolegend"
rmde = "find . -type d -empty -not -path '*.git*' -delete"
top = "htop"
bashe = "$EDITOR $HOME/.config/bash/env.sh"
bashs = "exec $SHELL"

Network

sshe = "$EDITOR $HOME/.ssh/config"
key = "open /Applications/Utilities/Keychain\ Access.app"
ipa = 'curl --silent checkip.dyndns.org | ag --only-matching "[0-9\.]+" | _copy_and_print'
dnsi = "scutil --dns"
dnss = "sudo dscacheutil -statistics"
dnsf = "sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder && printf 'DNS cache cleared.\n'"
ff = "fzf --preview 'bat --theme DarkNeon --color always {}'"
tsl = "tmux list-sessions"
tsa = "tmux attach-session -t"
tsk = "tmux kill-session -t"
tsr = "tmux rename-session -t"
hb = "brew"
hbi = "brew install"
hbin = "brew info"
hbu = "brew uninstall"
hbl = "brew list"
hbs = "brew search"
hbsw = "brew switch"
hbup = "brew update"
hbug = "brew upgrade"
hbp = "brew pin"
hbpu = "brew unpin"
hbd = "brew doctor"
hbc = "brew cleanup"
hbsu = "brew update && brew upgrade && brew cleanup"
gi = "git init"
gcle = "git config --local --edit"
gcge = "git config --global --edit"
gcd = "git config --show-origin"
gget = "git config --get"
gset = "git config --add"
gst = "git status --short --branch"
gl = 'git log --graph --pretty=format:"$(_git_log_line_format)"'
glh = "_git_commit_last | _copy_and_print"
glf = 'git fetch && git log --reverse --no-merges --pretty=format:"$(_git_log_line_format)" ..@{upstream}'
glg = 'git log --pretty=format:"$(_git_log_line_format)" --grep'
gls = 'git log --pretty=format:"$(_git_log_line_format)" -S'
glt = 'git for-each-ref --sort=taggerdate --color --format = "%(color:yellow)%(refname:short)%(color:reset)|%(taggerdate:short)|%(color:blue)%(color:bold)%(*authorname)%(color:reset)|%(subject)" refs/tags | column -s"|" -t'
grl = "git reflog"
gg = "git grep"
guthors = 'git log --color --pretty=format:"%C(bold blue)%an%C(reset)" | sort | uniq -c | sort --reverse'
gd = "git diff"
gdc = "git diff --cached"
gdm = "git diff origin/master"
gdw = "git diff --color-words"
gdo = 'git diff --name-only | uniq | xargs $EDITOR'
gdt = "git difftool"
gdtc = "git difftool --cached"
gdtm = "git difftool origin/master"
glame = "git blame -M -C -C -C"
gbi = "git bisect"
gbis = "git bisect start"
gbib = "git bisect bad"
gbig = "git bisect good"
gbir = "git bisect reset"
gbisk = "git bisect skip"
gbil = "git bisect log"
gbire = "git bisect replay"
gbiv = 'git bisect visualize --reverse --pretty=format:"$(_git_log_line_format)"'
gbih = "git bisect help"
gb = "git branch --verbose"
gbt = "git show-branch --topics"
gba = "git branch --all"
gbn = "_git_branch_name | _copy_and_print"
gbr = "git branch --move"
gm = "git merge"
gcl = "git clone"
gch = "git checkout"
gchm = "git checkout master"
ga = "git add"
gau = "git add --update"
gap = "git add --patch"
gall = "git add --all ."
gco = "git commit"
gce = 'cat .git/COMMIT_EDITMSG | ag --invert-match "^\#.*" | pbcopy'
gatch = "git commit --patch"
gca = "git commit --all"
gcm = "git commit --message"
gcam = "git commit --all --message"
gcf = "git commit --fixup"
gcs = "git commit --squash"
gamend = "git commit --amend"
gamendh = "git commit --amend --no-edit"
gamenda = "git commit --amend --all --no-edit"
gcp = "git cherry-pick"
gcpa = "git cherry-pick --abort"
gashc = "git stash clear"
gnl = "git notes list"
gns = "git notes show"
gna = "git notes add"
gne = "git notes edit"
gnd = "git notes remove"
gnp = "git notes prune"
gf = "git fetch"
gpu = "git pull"
gpuo = "git pull origin"
gpuom = "git pull origin master"
gpuum = "git pull upstream master"
grbo = "git rebase --onto"
grbc = "git rebase --continue"
grbd = "git rebase --show-current-patch"
grbs = "git rebase --skip"
grba = "git rebase --abort"
grbt = "git rebase --edit-todo"
ger = "git rerere"
gp = "git push"
gpf = "git push --force-with-lease"
gpn = "git push --no-verify"
gpo = "git push --set-upstream origin"
gpr = "git push review master"
gps = "git push stage stage:master"
gpp = "git push production production:master"
gtag = "git tag"
gtagv = "git tag --verify"
gtags = "git push --tags"
gwl = "git worktree list"
gwp = "git worktree prune"
gr = "git reset" # Unstage staged files for commit.
grm = "git reset --merge ORIG_HEAD" # Reset to original HEAD prior to merge.
grom = "git fetch --all && git reset --hard origin/master" # Reset local branch to origin/master branch. UNRECOVERABLE!
gel = "git rm"
gelc = "git rm --cached" # Removes previously tracked file from index after being added to gitignore.
grev = "git revert --no-commit"
glean = "git clean -d --force"
bzc = "tar --use-compress-program=pigz --create --preserve-permissions --bzip2 --verbose --file"
bzx = "tar --extract --bzip2 --verbose --file"
pgi = "initdb /usr/local/var/postgres"
pgst = "pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start &"
pgsp = "pg_ctl -D /usr/local/var/postgres stop -s -m fast"
reds = "redis-server /usr/local/etc/redis.conf &"
redc = "redis-cli"
rb = "chruby"
rbi = "ruby-install"
gemcr = "$EDITOR ~/.gem/credentials"
geml = "gem list"
gemi = "gem install"
gemu = "gem uninstall"
gemc = "gem cleanup"
gems = "gem server"
gemp = "gem pristine"
geme = "gem environment"
gemuc = "gem update --system && gem update && gem cleanup"
gemcli = "ag --depth=1 --files-with-matches --file-search-regex gemspec executables | xargs basename | cut -d. -f1 | _copy_and_print '\n'"
gemw = "gem whois"
bert = "ber -T"
berq = "ber code_quality"
bs = "bundle show"
bsp = "bundle show --paths"
bi = "bundle install"
bu = "bundle update"
bo = "bundle outdated --only-explicit"
bce = "$EDITOR $HOME/.bundle/config"
bcon = "bundle console"
be = "bundle exec"
bch = "rm -f Gemfile.lock; bundle check"
ms = "milestoner"
msc = 'milestoner --commits | _copy_and_print "\n"'
msp = "milestoner --publish"
mse = "milestoner --config --edit"
gsg = "gemsmith --generate"
gse = "gemsmith --config --edit"
gsr = "gemsmith --read"
gso = "gemsmith --open"
gsi = "bundle exec rake install"
gsp = "bundle exec rake publish"
gsq = "bundle exec rake code_quality"
bess = "bes spec"
best = "bess --tag"
besn = "bess --next-failure"
besf = "bess --only-failures"
beso = "bess --dry-run --format doc > tmp/rspec-overview.txt && e tmp/rspec-overview.txt"
mm = "middleman"
mmi = "middleman init"
mmb = "middleman build"
railsb = "rails console --sandbox"
railse = "EDITOR = 'sublime --wait' rails secrets:edit"
railsdbm = "ber db:migrate && ber db:rollback && ber db:migrate && RAILS_ENV=test ber db:migrate"
cr = "crystal"
crb = "crystal build"
crr = "crystal run"
crd = "crystal docs"
crdo = "open docs/index.html"
crs = "crystal spec"
elmc = "elm repl"
elmg = "elm init"
elmi = "elm install"
elms = "elm reactor"
elmt = "elm-test"
elmp = "elm publish"
cop = "rubocop --parallel --display-cop-names --display-style-guide"
copc = "rubocop --auto-gen-config"
copo = "rubocop --display-cop-names --only"
copf = "rubocop --auto-correct"
cops = "rubocop --show-cops"
copd = 'find . -name ".rubocop-http*" -type f -delete'
cov = "open coverage/index.html"
agf = "ag --hidden --files-with-matches --file-search-regex"
denva = "direnv allow"
denvr = "direnv reload"
denvs = "direnv status"
yarni = "yarn install"
yarna = "yarn add"
yarnu = "yarn upgrade"
yarnr = "yarn remove"
ze = "$EDITOR $HOME/.z"
pfo = 'open -a "Path Finder.app" "$PWD"'
e = "sublime"
mo = "open -a Marked\ 2"
ad = "asciidoctor"
cin = "asciinema"
cina = "asciinema rec --idle-time-limit 1 --append"
cinc = "asciinema cat"
cinp = "asciinema play"
cinu = "asciinema upload"
dutia = "duti ~/.config/duti/configuration.duti"
tf = "terraform"
tfa = "terraform apply"
tfc = "terraform console"
tff = "terraform fmt"
tfg = "terraform graph | dot -Tsvg > tmp/graph.svg && open -a 'Firefox.app' tmp/graph.svg"
tfi = "terraform init"
tfp = "terraform plan"
tfv = "terraform validate"
wp = "watch --interval 1 --color --beep --exec"

Functions

General

t2s = Tab to Space - Convert file from tab to space indendation.
cype = Colorized Type - Identical to "type" system command but with Bat support.
eup = Environment Update - Update environment with latest software.
iso = ISO - Builds an ISO image from mounted volume.
pss = Process Status (specialized) - Display process status (excluding current process) and ignoring case.
kilp = Kill Process - Kill errant processes.
lessi = Less Interactive - Inspect file, interactively.
licensei = License Finder (include) - Include license in global list.
licensea = License Finder (add) - Adds library to global list.
sslc = SSL Certificate Creation - Create SSL certificate.
curli = Curl Inspect - Inspect remote file with default editor.
curld = Curl Diagnostics - Curl with diagnostic information for request.
port = Port - List file activity on given port.
gia = Git Init (all) - Initialize/re-initialize repositories in current directory.
groot = Git Root - Change to repository root directory regardless of current depth.
ginfo = Git Info - Print repository overview information.
gstats = Git Statistics - Answer statistics for current project.
gstatsa = Git Statistics (all) - Answer statistics for all projects in current directory.
ghurn = Git Churn - Answer commit churn for project files (sorted highest to lowest).
gount = Git Commit Count - Answer total number of commits for current project.
gli = Git Log (interactive) - List feature branch commits with support to show/diff individual commits.
gld = Git Log Details - Dynamically list commit details for current feature branch or entire master branch.
ghow = Git Show - Show commit details with optional diff support.
gile = Git File - Show file details for a specific commit (with optional diff support).
gistory = Git File History - View file commit history (with optional diff support).
glameh = Git Blame History - View file commit history for a specific file and/or lines (with optional diff support).
guthorsa = Git Authors (all) - Answer author commit activity per project (ranked highest to lowest).
guthorc = Git Author Contributions - Answers total lines added/removed by author for repo (with emphasis on deletion).
gsta = Git Status (all) - Answer status of projects with uncommited/unpushed changes.
gup = Git Update - Fetch commits, prune untracked references, review each commit (optional, with diff), and pull (optional).
gync = Git Sync - Syncs up remote changes and deletes pruned/merged branches.
gseta = Git Set Config Value (all) - Set key value for projects in current directory.
ggeta = Git Get Config Value (all) - Answer key value for projects in current directory.
gunseta = Git Unset (all) - Unset key value for projects in current directory.
gailsa = Git Email Set (all) - Sets user email for projects in current directory.
gail = Git Email Get - Answer user email for current project.
gaila = Git Email Get (all) - Answer user email for projects in current directory.
gince = Git Since - Answer summarized list of activity since date/time for projects in current directory.
gday = Git Day - Answer summarized list of current day activity for projects in current directory.
gweek = Git Week - Answer summarized list of current week activity for projects in current directory.
gmonth = Git Month - Answer summarized list of current month activity for projects in current directory.
gsup = Git Standup - Answer summarized list of activity since yesterday for projects in current directory.
gtail = Git Tail - Answer commit history since last tag for current project (copies results to clipboard).
gtaila = Git Tail (all) - Answer commit history count since last tag for projects in current directory.
gash = Git Stash - Creates stash.
gashl = Git Stash List - List stashes.
gashs = Git Stash Show - Show stash or prompt for stash to show.
gashp = Git Stash Pop - Pop stash or prompt for stash to pop.
gashd = Git Stash Drop - Drop stash or prompt for stash to drop.
gasha = Git Stash (all) - Answer stash count for projects in current directory.
gucca = Git Upstream Commit Count (all) - Answer upstream commit count since last pull for projects in current directory.
gpua = Git Pull (all) - Pull new changes from remote branch for projects in current directory.
galla = Git Add (all) - Apply file changes (including new files) for projects in current directory.
gcfi = Git Commit Fix (interactive) - Select which commit to fix within current feature branch.
gcff = Git Commit Fix (file) - Create commit fix for file (ignores previous fixups).
gcfp = Git Commit Fix and Push - Create fixup commit, push, and copy URL to clipboard.
gcaa = Git Commit (all) - Commit changes (unstaged and staged) for projects in current directory.
gcap = Git Commit and Push (all) - Commit and push changes for projects in current directory.
gpob = Git Push Origin Branch - Pushes current branch to origin and sets upstream tracking.
gpa = Git Push (all) - Push changes for projects in current directory.
grbi = Git Rebase (interactive) - Rebase commits, interactively.
grbq = Git Rebase (quick) - Rebase commits, quickly. Identical to `grbi` function but skips editor.
gbl = Git Branch List - List local and remote branch details.
gblo = Git Branch List Owner - List branches owned by current author or supplied author.
gbla = Git Branch List (all) - List current branch for projects in current directory.
gbc = Git Branch Create - Create and switch to branch.
gbca = Git Branch Create (all) - Create and switch to branch for projects in current directory.
gbs = Git Branch Switch - Switch between branches.
gbsa = Git Branch Switch (all) - Switch to given branch for projects in current directory.
gbna = Git Branch Number (all) - Answer number of branches for projects in current directory.
gbd = Git Branch Delete - Delete branch (select local and/or remote).
gbdl = Git Branch Delete (local) - Delete local branch.
gbdr = Git Branch Delete (remote) - Delete remote branch.
gbdm = Git Branch Delete (merged) - Delete remote and local merged branches.
gtagr = Git Tag Rebuild - Rebuild a previous tag. WARNING: Use with caution, especially if previously published.
gtagd = Git Tag Delete - Delete local and remote tag (if found).
gwa = Git Worktree Add - Add and switch to new worktree.
gwd = Git Worktree Delete - Deletes current Git worktree.
gra = Git Remote Add - Add and track a remote repository.
grs = Git Reset Soft - Resets previous commit (default), resets back to number of commits, or resets to specific commit.
grh = Git Reset Hard - Reset to HEAD, destroying all untracked, staged, and unstaged changes. UNRECOVERABLE!
grha = Git Reset Hard (all) - Destroy all untracked, staged, and unstaged changes for all projects in current directory. UNRECOVERABLE!
guke = Git Nuke - Permanently destroy and erase a file from history. UNRECOVERABLE!
gleana = Git Clean (all) - Clean uncommitted files from all projects in current directory.
glear = Git Clear - Clear repository for packaging/shipping purposes.
gvac = Git Verify and Clean - Verify and clean objects for current project.
gvaca = Git Verify and Clean (all) - Verify and clean objects for projects in current directory.
gh = GitHub - View GitHub details for current project.
ghpra = GitHub Pull Request (all) - Open pull requests for all projects in current directory (non-master branches only).
pguc = PostgreSQL User Create - Create PostgreSQL user.
pgud = PostgreSQL User Drop - Drop PostgreSQL user.
pgt = PostgreSQL Template - Edit PostgreSQL template.
rbva = Ruby Version (all) - Show current Ruby version for all projects in current directory.
rbua = Ruby Upgrade (all) - Upgrade Ruby projects in current directory with new Ruby version.
rbs = Ruby Server - Serve web content from current directory via WEBrick.
gemdep = Gem Dependency Search - Finds a gem defined within a Gemfile or a gemspec.
bj = Bundler Jobs - Answer maximum Bundler job limit for current machine or automatically set it.
bcg = Bundler Config Gem - Configure Bundler to use local gem for development purposes.
bcim = Bundler Config Ignore Post-Install Message - Configure Bundler to ignore install messages for specified gem.
boa = Bundle Outdated (all) - Answer outdated gems for projects in current directory.
bua = Bundle Update (all) - Update gems for projects in current directory.
bca = Bundle Clean (all) - Clean projects of gem artifacts (i.e. pkg folder).
ber = Bundle Execute Rake - Run Rake via binstub or Bundler.
bera = Bundle Execute Rake (all) - Run default Rake tasks via binstub or Bundler for projects in current directory.
cqa = Code Quality (all) - Run code quality tasks via binstub or Bundler for projects in current directory.
cqi = Code Quality Issues - List all source files affected by code quality issues.
bes = Bundle Execute RSpec - Run RSpec via binstub or Bundler.
besb = Bundle Exec RSpec Bisect - Debug RSpec failure using bisect to automatically determine where failure is occuring.
besd = Bundle Exec RSpec Debug - Debug intermittent RSpec failure(s) by running spec(s) until failure is detected.
besp = Bundle Exec RSpec Profile - Runs RSpec specs with profiling enabled.
bessa = Bundle Execute RSpec (all) - Run RSpec via binstub or Bundler for projects in current directory.
beg = Bundle Execute Guard - Run Guard via binstub or Bundler.
railsn = Ruby on Rails New - Create new Rails application from selected template.
rr = RailRoady Models - Generate diagrams for Rails models, controllers, or states.
elmm = Elm Make - Compile Elm source.
elml = Elm Live - Watch for source code changes and recompile immediately.
cinr = asciinema Record - Create new asciinema recording.
oms = Overmind Start - Start processes.
omc = Overmind Connect - Connect to running process.
omr = Overmind Restart - Restart running process.

Dotfiles

dots = Dotfiles - Learn about dotfile aliases, functions, etc.

Git Hooks

brakeman_check = Brakeman Check - Scan Rails project for security vulnerabilities.
bundler_gemfile_path = Bundler Gemfile Path - Detect gem path statements.
bundler_audit_check = Bundler Audit Check - Scans gem dependencies for security vulnerabilities.
capybara_save_and_open_page = Capybara Save And Open Page - Detect save_and_open_page statements.
comment_totals = Comment Totals - Print project comment totals.
ctags_rebuild = CTags Rebuild - Rebuild project .tags file.
elm_debug = Elm Debug - Detect debug statements.
git_cop = Git Cop - Enforce consistent Git commits.
git_trailer_cleaner = Git Trailer Cleaner - Remove unused/empty Git commit body trailers.
java_script_debugger = JavaScript Debugger - Detect JavaScript debug statements.
java_script_console = JavaScript Console - Detect JavaScript console statements.
java_script_alert = JavaScript Alert - Detect JavaScript alert statements.
license_finder_check = License Finder Check - Scan project for valid licenses.
pry_binding = Pry Binding - Detect Pry debug statements.
reek_check = Reek Check - Scan Ruby code for poor style choices.
rspec_focus = RSpec Focus - Detect RSpec focus.
rubocop_check = Rubocop Check - Scan Ruby code for poor style choices.
irb_binding = IRB Binding - Detect IRB debug statements.

IRB, Pry, and Rails consoles

CK.locate - Locates source code for given object and method.
CK.search - Searches for object method for given pattern.
CK.copy - Copies data to OS X clipboard.
CK.paste - Pastes data from OS X clipboard.

Pry Aliases

'w' = "whereami"
'c' = "continue"
's' = "step"
'n' = "next"
'f' = "finish"
"ss" = "show-source"
"bp" = "break"
"bpe" = "break --enable"
"bpd" = "break --disable"
"bpD" = "break --delete"
"bpc" = "break --disable-all"
"bpC" = "break --delete-all"
"bph" = "break --help"

Versioning

Read Semantic Versioning for details. Briefly, it means:

  • Major (X.y.z) - Incremented for any backwards incompatible public API changes.
  • Minor (x.Y.z) - Incremented for new, backwards compatible, public API enhancements/fixes.
  • Patch (x.y.Z) - Incremented for small, backwards compatible, bug fixes.

Code of Conduct

Please note that this project is released with a CODE OF CONDUCT. By participating in this project you agree to abide by its terms.

Contributions

Read CONTRIBUTING for details.

License

Copyright 2010 Alchemists. Read LICENSE for details.

History

Read CHANGES for details. Built with Bashsmith.

Credits

Developed by Brooke Kuhlmann at Alchemists.

About

Shell scripts for applying default settings to UNIX-based operating systems.

http://www.alchemists.io

License:Apache License 2.0


Languages

Language:Shell 98.5%Language:Ruby 1.5%