gemedit 0.0.2 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +8 -0
- data/README.txt +5 -9
- data/bin/gemedit +2 -84
- data/lib/gemedit.rb +2 -1
- data/lib/gemedit/edit_command.rb +74 -0
- data/lib/gemedit/version.rb +2 -2
- data/lib/rubygems_plugin.rb +4 -0
- metadata +19 -6
data/History.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
== 0.9.0 2009-11-15
|
2
|
+
|
3
|
+
* 1 major change:
|
4
|
+
* installs itself as a rubygems command, use "gem edit" to run
|
5
|
+
* 2 minor changes
|
6
|
+
* verbose short switch becomes -V instead of -v
|
7
|
+
* -p/--pretend are rename to -d/--dry-run to be consistent with other gem commands
|
8
|
+
|
1
9
|
== 0.0.2 2008-03-07
|
2
10
|
|
3
11
|
* 1 minor enhancement:
|
data/README.txt
CHANGED
@@ -14,21 +14,17 @@ Gemedit can be installed via RubyGems:
|
|
14
14
|
|
15
15
|
$ sudo gem install gemedit
|
16
16
|
|
17
|
-
If you would like some basic command completion for installed gems add the following to your ~/.bashrc or ~/.profile:
|
18
|
-
|
19
|
-
complete -C "/usr/bin/gemedit --complete" gemedit
|
20
|
-
|
21
17
|
== USAGE:
|
22
18
|
|
23
19
|
If you want to see how gemedit works just install it and run this:
|
24
|
-
$
|
20
|
+
$ gem edit gemedit
|
25
21
|
|
26
|
-
Gemedit tries to use your favorite editor from your <tt>$VISUAL</tt> or <tt>$EDITOR</tt> environment variable. It will fall back to <em>everyone's</em> favorite editor: *vi*. You can specify the editor with the <tt>-e/--editor</tt> switch. Run this to view the source for +rake+ in TextMate[http://macromates.com]:
|
27
|
-
$
|
22
|
+
Gemedit tries to use your favorite editor from your <tt>$GEMEDITOR</tt>, <tt>$VISUAL</tt> or <tt>$EDITOR</tt> environment variable. It will fall back to <em>everyone's</em> favorite editor: *vi*. You can specify the editor with the <tt>-e/--editor</tt> switch. Run this to view the source for +rake+ in TextMate[http://macromates.com]:
|
23
|
+
$ gem edit -e mate rake
|
28
24
|
|
29
25
|
And of course, help is available:
|
30
|
-
$
|
31
|
-
$
|
26
|
+
$ gem edit -h
|
27
|
+
$ gem edit --help
|
32
28
|
|
33
29
|
== DOCUMENTATION:
|
34
30
|
|
data/bin/gemedit
CHANGED
@@ -3,88 +3,6 @@
|
|
3
3
|
# Created on 2008-2-27.
|
4
4
|
# Copyright (c) 2008. All rights reserved.
|
5
5
|
|
6
|
-
|
7
|
-
require 'rubygems'
|
8
|
-
rescue LoadError
|
9
|
-
# no rubygems to load, so we fail silently
|
10
|
-
end
|
6
|
+
$stderr.puts 'gemedit is now a gem command, see gem edit --help'
|
11
7
|
|
12
|
-
|
13
|
-
|
14
|
-
OPTIONS = {
|
15
|
-
:verbose => false,
|
16
|
-
:pretend => false,
|
17
|
-
:editor => ENV['VISUAL'] || ENV['EDITOR'] || 'vi'
|
18
|
-
}
|
19
|
-
|
20
|
-
parser = OptionParser.new do |opts|
|
21
|
-
opts.banner = <<BANNER
|
22
|
-
Open the source of installed gems in your favorite editor
|
23
|
-
|
24
|
-
Usage: #{File.basename($0)} GEM_NAME...
|
25
|
-
|
26
|
-
Options are:
|
27
|
-
BANNER
|
28
|
-
opts.on("-e", "--editor=EDITOR", String,
|
29
|
-
"The editor to open the gems with", "Default: #{OPTIONS[:editor]}") { |editor| OPTIONS[:editor] = editor }
|
30
|
-
opts.on("-p", "--pretend",
|
31
|
-
"Shows what command would be run without running it", "Turns on verbose logging", "Default: #{OPTIONS[:pretend]}") { |pretend|
|
32
|
-
OPTIONS[:pretend] = OPTIONS[:verbose] = true
|
33
|
-
}
|
34
|
-
opts.on("-v", "--verbose",
|
35
|
-
"Enable verbose logging", "Default: #{OPTIONS[:verbose]}") { |verbose| OPTIONS[:verbose] = true }
|
36
|
-
opts.on("-h", "--help",
|
37
|
-
"Show this help message.") { puts opts; exit }
|
38
|
-
end
|
39
|
-
|
40
|
-
if ARGV.include?('--complete')
|
41
|
-
exit 0 unless /\b#{Regexp.escape(File.basename($0))}\b/ =~ ENV["COMP_LINE"]
|
42
|
-
after_match = $'
|
43
|
-
complete_term = (after_match.empty? || after_match =~ /\s$/) ? nil : after_match.split.last
|
44
|
-
completions = if complete_term =~ /\A-/
|
45
|
-
parser.top.list.select { |opt| OptionParser::Switch === opt }.inject([]) { |ary, opt|
|
46
|
-
ary + opt.short + opt.long
|
47
|
-
}.select { |opt_string| opt_string =~ /\A#{Regexp.escape(complete_term)}/ }
|
48
|
-
elsif complete_term
|
49
|
-
Gem.source_index.inject([]) { |ary, (full_name, spec)| ary << full_name if /^#{Regexp.escape(complete_term)}/i =~ full_name; ary }
|
50
|
-
else
|
51
|
-
Gem.source_index.map { |full_name, spec| full_name }
|
52
|
-
end
|
53
|
-
puts completions
|
54
|
-
exit 0
|
55
|
-
end
|
56
|
-
|
57
|
-
parser.parse!(ARGV)
|
58
|
-
|
59
|
-
def get_gem(gem_name)
|
60
|
-
possible_gems = Gem.source_index.inject([]) { |ary, (name, spec)| ary << spec if /^#{Regexp.escape(gem_name)}/i =~ spec.full_name; ary }.sort_by { |gem| gem.version }.reverse
|
61
|
-
if possible_gems.size < 1
|
62
|
-
puts "No gems found for #{gem_name}... skipping"
|
63
|
-
end
|
64
|
-
gem = possible_gems.first if possible_gems.map { |g| g.name }.uniq.size == 1
|
65
|
-
gem ||= begin
|
66
|
-
require 'rubygems/user_interaction'
|
67
|
-
include Gem::DefaultUserInteraction
|
68
|
-
list = possible_gems.map { |g| "#{g.name} #{g.version}" }
|
69
|
-
list << 'None of the above'
|
70
|
-
name, index = ui.choose_from_list("Choose which gem to view for '#{gem_name}':", list)
|
71
|
-
possible_gems[index] if (0...possible_gems.size).include?(index)
|
72
|
-
end
|
73
|
-
gem
|
74
|
-
end
|
75
|
-
|
76
|
-
gems = ARGV.reject { |arg| arg.empty? }.map { |gem_name| get_gem(gem_name) }.compact
|
77
|
-
|
78
|
-
if gems.size > 0
|
79
|
-
puts "Opening the following gems with #{OPTIONS[:editor]}:" if OPTIONS[:verbose]
|
80
|
-
paths = gems.map do |gem|
|
81
|
-
puts " #{gem.full_name}: #{gem.full_gem_path}" if OPTIONS[:verbose]
|
82
|
-
%Q{"#{gem.full_gem_path}"}
|
83
|
-
end
|
84
|
-
cmd = "#{OPTIONS[:editor]} #{paths.join(' ')}"
|
85
|
-
puts "Running `#{cmd}`" if OPTIONS[:verbose]
|
86
|
-
exec cmd unless OPTIONS[:pretend]
|
87
|
-
else
|
88
|
-
puts "No gems found for editing"
|
89
|
-
end
|
90
|
-
exit 0
|
8
|
+
exit 1
|
data/lib/gemedit.rb
CHANGED
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'rubygems/command'
|
2
|
+
require 'rubygems/version_option'
|
3
|
+
|
4
|
+
class Gem::Commands::EditCommand < Gem::Command
|
5
|
+
|
6
|
+
OPTIONS = {
|
7
|
+
:version => Gem::Requirement.default,
|
8
|
+
:verbose => false,
|
9
|
+
:dryrun => false,
|
10
|
+
:editor => ENV['GEMEDITOR'] || ENV['VISUAL'] || ENV['EDITOR'] || 'vi'
|
11
|
+
}
|
12
|
+
|
13
|
+
include Gem::VersionOption
|
14
|
+
|
15
|
+
def initialize
|
16
|
+
super 'edit', 'Open an installed gem in your favorite editor', OPTIONS
|
17
|
+
|
18
|
+
add_version_option
|
19
|
+
|
20
|
+
add_option('-e', '--editor EDITOR', String,
|
21
|
+
'The editor to use to open the gems',
|
22
|
+
'GEMEDITOR, VISUAL and EDITOR environment variables',
|
23
|
+
'are used to find the default',
|
24
|
+
"Default: #{OPTIONS[:editor]}") do |editor, options|
|
25
|
+
options[:editor] = editor
|
26
|
+
end
|
27
|
+
|
28
|
+
add_option('-d', '--[no-]dry-run',
|
29
|
+
'Shows what command would be run without running it',
|
30
|
+
'Turns on verbose logging', "Default: #{OPTIONS[:dryrun]}") do |dryrun, options|
|
31
|
+
Gem.configuration.verbose ||= true if dryrun
|
32
|
+
options[:dryrun] = dryrun
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def arguments # :nodoc:
|
37
|
+
"GEMNAME name of gem to open in your favorite editor"
|
38
|
+
end
|
39
|
+
|
40
|
+
def defaults_str # :nodoc:
|
41
|
+
"--version '#{OPTIONS[:version]}' --editor #{OPTIONS[:editor]} --no-dry-run"
|
42
|
+
end
|
43
|
+
|
44
|
+
def usage # :nodoc:
|
45
|
+
"#{program_name} [options] GEMNAME [GEMNAME ...]"
|
46
|
+
end
|
47
|
+
|
48
|
+
def execute
|
49
|
+
version = options[:version] || OPTIONS[:version]
|
50
|
+
|
51
|
+
gem_specs = get_all_gem_names.map { |gem_name|
|
52
|
+
if spec = Gem.source_index.find_name(gem_name, version).last
|
53
|
+
say "Found gem for '#{gem_name}' with version #{version}" if Gem.configuration.verbose
|
54
|
+
else
|
55
|
+
say "No gem found for '#{gem_name}' with version #{version}" if Gem.configuration.verbose
|
56
|
+
end
|
57
|
+
spec
|
58
|
+
}.compact
|
59
|
+
|
60
|
+
if gem_specs.size > 0
|
61
|
+
say "Opening the following gems with #{options[:editor]}:" if Gem.configuration.verbose
|
62
|
+
paths = gem_specs.map do |spec|
|
63
|
+
say " #{spec.full_name} #{spec.full_gem_path}" if Gem.configuration.verbose
|
64
|
+
%Q{"#{spec.full_gem_path}"}
|
65
|
+
end
|
66
|
+
cmd = "#{options[:editor]} #{paths.join(' ')}"
|
67
|
+
say "Running `#{cmd}`" if Gem.configuration.verbose
|
68
|
+
exec cmd unless options[:dryrun]
|
69
|
+
else
|
70
|
+
say "No gems found for #{get_all_gem_names.join(', ')}"
|
71
|
+
raise Gem::SystemExitException, 1
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
data/lib/gemedit/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemedit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lee Marlow
|
@@ -9,10 +9,19 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-11-15 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: hoe
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.8.0
|
24
|
+
version:
|
16
25
|
description: A utility to view a gem's source in your favorite editor
|
17
26
|
email:
|
18
27
|
- lmarlow@rubyforge.org
|
@@ -29,10 +38,14 @@ files:
|
|
29
38
|
- License.txt
|
30
39
|
- README.txt
|
31
40
|
- bin/gemedit
|
41
|
+
- lib/rubygems_plugin.rb
|
32
42
|
- lib/gemedit.rb
|
33
43
|
- lib/gemedit/version.rb
|
44
|
+
- lib/gemedit/edit_command.rb
|
34
45
|
has_rdoc: true
|
35
46
|
homepage: http://gemedit.rubyforge.org
|
47
|
+
licenses: []
|
48
|
+
|
36
49
|
post_install_message:
|
37
50
|
rdoc_options:
|
38
51
|
- --main
|
@@ -54,9 +67,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
54
67
|
requirements: []
|
55
68
|
|
56
69
|
rubyforge_project: gemedit
|
57
|
-
rubygems_version: 1.
|
70
|
+
rubygems_version: 1.3.5
|
58
71
|
signing_key:
|
59
|
-
specification_version:
|
72
|
+
specification_version: 3
|
60
73
|
summary: A utility to view a gem's source in your favorite editor
|
61
74
|
test_files: []
|
62
75
|
|