[Editar: funciona apenas se não houver Rakefile dentro do projeto]
Se você instalou o rake
gem e possui alguns .rake
arquivos em ~/.rake
, as tarefas dentro desses arquivos são carregadas automaticamente pelo rake
programa. 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.txt
que 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:
- Verifica se o diretório atual possui um
.git
diretório. - Se estiver presente, obterá o nome do diretório de trabalho atual e verificará se ele está presente dentro do
~/.code_notes
diretório. É aqui que todas as notas de código são salvas. - Se a pasta não estiver presente, ele criará uma pasta e criará o
notes.txt
arquivo dentro dela.
# ~/.zshrc
chpwd() {
rake code_notes
}
Arquivo de configuração Zsh
A chpwd()
função é um método de gancho fornecido pelo zsh
qual pode executar código personalizado sempre que você cd
entrar em um diretório. Acabamos de executar o rake code_notes
comando
Esta solução pretende ser uma solução rápida e uma demonstração de como zsh
facilita o uso dos métodos de gancho que ela fornece. O código está sujo, possivelmente não é uma solução elegante, mas funciona.