Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
TextMate snippet to quickly populate a fresh gemspec
#!/usr/bin/env ruby
def git_config(key)
value = `git config #{key}`.chomp
value.empty?? nil : value
end
name = File.basename(ENV['TM_FILENAME'] || 'name').split('.').first
user = git_config('github.user') || ENV['USER'] || ENV['USERNAME'] || 'user'
email = git_config('user.email') || 'you@example.com'
full_name = git_config('user.name') || 'Your Full Name'
puts <<-GEMSPEC
Gem::Specification.new do |gem|
gem.name = '${1:#{name}}'
gem.version = '${2:0.0.1}'
gem.date = Date.today.to_s
# gem.add_dependency 'hpricot', '~> 0.8.2'
# gem.add_development_dependency 'rspec', '~> 1.2.9'
gem.summary = "${3:summary}"
gem.description = "${4:Longer description.}"
gem.authors = ['${5:#{full_name}}']
gem.email = '${6:#{email}}'
gem.homepage = 'http://github.com/#{user}/$1'
gem.rubyforge_project = nil
gem.has_rdoc = true
gem.rdoc_options = ['--main', 'README.rdoc', '--charset=UTF-8']
gem.extra_rdoc_files = ['README.rdoc', 'LICENSE', 'CHANGELOG.rdoc']
gem.files = Dir['Rakefile', '{bin,lib,man,test,spec}/**/*', 'README*', 'LICENSE*'] & \\`git ls-files -z\\`.split("\\0")
end
GEMSPEC

How to install:

  1. Create a new command
  2. Paste the ruby code into it
  3. Output: "Insert as Snippet"
  4. Tab trigger: gemspec
  5. Scope: source.ruby

Hey Mislav, Thanks for the nice snippet!

It all seems to work, except for the part where I invoke the "git_config" method.

See Pastie Snippet: http://pastie.org/908210

First 3 lines error out for some reason, do you have any idea why?
When I manually execute "git config user.name" etc from the command line it does work, but something goes wrong when doing it from TextMate.

This isn't a big issue or anything, I can manually insert the variables of course, but if you know why this happens, please let me know. :)

Thanks!

Owner

mislav commented Apr 7, 2010

TextMate can't find your git. First check where it is:

$ which git

Then make sure it's in TextMate's PATH: "Settings → Advanced → Shell variables". If you don't have PATH there, create it by copying it from the shell:

$ echo $PATH | pbcopy

Thanks, that did the trick!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment