Codifique notas usando Rake, Zsh

[Editar: funciona apenas se não houver Rakefile dentro do projeto]

Se você instalou o rakegem e possui alguns .rakearquivos em ~/.rake, as tarefas dentro desses arquivos são carregadas automaticamente pelo rakeprograma. Este recurso pode ser usado para escrever trechos globais para sua conveniência.

Levando esse recurso um pouco mais longe, eu o utilizo para criar por projeto notes.txtque pode ser usado como um bloco de notas para ideias.

# ~/.rake/codenotes.rake

require
"etc"
require
"fileutils"

desc
"Create a per-repository notes file"
task
:code_notes do
user
= Etc.getlogin
notes_dir_path
= "#{Dir.home(user)}/.code_notes/"
Dir.mkdir(notes_dir_path) unless Dir.exists?(notes_dir_path)

if Dir.exists?(".git")
project_name
= Dir.pwd.split("/").last.gsub(/./, "")
code_notes_dir_path
= "#{notes_dir_path}/#{project_name}"
Dir.mkdir(code_notes_dir_path) unless Dir.exists?(code_notes_dir_path)
FileUtils.touch("#{code_notes_dir_path}/notes.txt") unless File.exists?("#{code_notes_dir_path}/notes.txt")
end
end

A tarefa Rake

Este é o fluxo do programa:

  1. Verifica se o diretório atual possui um .gitdiretório.
  2. Se estiver presente, obterá o nome do diretório de trabalho atual e verificará se ele está presente dentro do ~/.code_notesdiretório. É aqui que todas as notas de código são salvas.
  3. Se a pasta não estiver presente, ele criará uma pasta e criará o notes.txtarquivo dentro dela.
# ~/.zshrc

chpwd
() {
rake code_notes

}

Arquivo de configuração Zsh

A chpwd()função é um método de gancho fornecido pelo zshqual pode executar código personalizado sempre que você cdentrar em um diretório. Acabamos de executar o rake code_notescomando

Esta solução pretende ser uma solução rápida e uma demonstração de como zshfacilita o uso dos métodos de gancho que ela fornece. O código está sujo, possivelmente não é uma solução elegante, mas funciona.