flooose-gemedit 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/gemedit/edit_command.rb +95 -0
- data/lib/gemedit/version.rb +5 -0
- data/lib/gemedit.rb +6 -0
- data/lib/rubygems_plugin.rb +4 -0
- metadata +72 -0
@@ -0,0 +1,95 @@
|
|
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
|
+
:git => false,
|
11
|
+
:editor => ENV['GEMEDITOR'] || ENV['VISUAL'] || ENV['EDITOR'] || 'vi'
|
12
|
+
}
|
13
|
+
|
14
|
+
include Gem::VersionOption
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
super 'edit', 'Open an installed gem in your favorite editor', OPTIONS
|
18
|
+
|
19
|
+
add_version_option
|
20
|
+
|
21
|
+
add_option('-e', '--editor EDITOR', String,
|
22
|
+
'The editor to use to open the gems',
|
23
|
+
'GEMEDITOR, VISUAL and EDITOR environment variables',
|
24
|
+
'are used to find the default',
|
25
|
+
"Default: #{OPTIONS[:editor]}") do |editor, options|
|
26
|
+
options[:editor] = editor
|
27
|
+
end
|
28
|
+
|
29
|
+
add_option('-g', '--git',
|
30
|
+
'Create a git repository in gem directory and do an',
|
31
|
+
'initial commit to help keep track of subsequent',
|
32
|
+
'changes.',
|
33
|
+
"Default: #{OPTIONS[:git]}") do |git, options|
|
34
|
+
if(git?)
|
35
|
+
options[:git] = git
|
36
|
+
else
|
37
|
+
puts "It doesn't appear that git is installed. If you're sure it's installed please check your $PATH"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
add_option('-d', '--[no-]dry-run',
|
42
|
+
'Shows what command would be run without running it',
|
43
|
+
'Turns on verbose logging', "Default: #{OPTIONS[:dryrun]}") do |dryrun, options|
|
44
|
+
Gem.configuration.verbose ||= true if dryrun
|
45
|
+
options[:dryrun] = dryrun
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def arguments # :nodoc:
|
50
|
+
"GEMNAME name of gem to open in your favorite editor"
|
51
|
+
end
|
52
|
+
|
53
|
+
def git?
|
54
|
+
system("which git")
|
55
|
+
end
|
56
|
+
|
57
|
+
def defaults_str # :nodoc:
|
58
|
+
"--version '#{OPTIONS[:version]}' --editor #{OPTIONS[:editor]} --no-dry-run"
|
59
|
+
end
|
60
|
+
|
61
|
+
def usage # :nodoc:
|
62
|
+
"#{program_name} [options] GEMNAME [GEMNAME ...]"
|
63
|
+
end
|
64
|
+
|
65
|
+
def execute
|
66
|
+
version = options[:version] || OPTIONS[:version]
|
67
|
+
|
68
|
+
gem_specs = get_all_gem_names.map { |gem_name|
|
69
|
+
if spec = Gem.source_index.find_name(gem_name, version).last
|
70
|
+
say "Found gem for '#{gem_name}' with version #{version}" if Gem.configuration.verbose
|
71
|
+
else
|
72
|
+
say "No gem found for '#{gem_name}' with version #{version}" if Gem.configuration.verbose
|
73
|
+
end
|
74
|
+
spec
|
75
|
+
}.compact
|
76
|
+
|
77
|
+
if gem_specs.size > 0
|
78
|
+
say "Opening the following gems with #{options[:editor]}:" if Gem.configuration.verbose
|
79
|
+
paths = gem_specs.map do |spec|
|
80
|
+
say " #{spec.full_name} #{spec.full_gem_path}" if Gem.configuration.verbose
|
81
|
+
%Q{"#{spec.full_gem_path}"}
|
82
|
+
end
|
83
|
+
say "Initializing empty git repository in #{paths}" if Gem.configuration.verbose
|
84
|
+
paths.each{|path| system('git init #{path}')} if options[:git]
|
85
|
+
say "Creating initial commit" if Gem.configuration.verbose
|
86
|
+
paths.each{|path| system("cd #{path} && git add ./ && git commit -m 'Gemedit generated commit'")} if options[:git]
|
87
|
+
cmd = "#{options[:editor]} #{paths.join(' ')}"
|
88
|
+
say "Running `#{cmd}`" if Gem.configuration.verbose
|
89
|
+
exec cmd unless options[:dryrun]
|
90
|
+
else
|
91
|
+
say "No gems found for #{get_all_gem_names.join(', ')}"
|
92
|
+
raise Gem::SystemExitException, 1
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
data/lib/gemedit.rb
ADDED
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: flooose-gemedit
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 55
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 10
|
9
|
+
- 0
|
10
|
+
version: 0.10.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- !binary |
|
14
|
+
Y2hyaXMgZmzDtsOf
|
15
|
+
|
16
|
+
autorequire:
|
17
|
+
bindir: bin
|
18
|
+
cert_chain: []
|
19
|
+
|
20
|
+
date: 2010-10-19 00:00:00 +02:00
|
21
|
+
default_executable:
|
22
|
+
dependencies: []
|
23
|
+
|
24
|
+
description: Initialize and make a first commit before editing gem
|
25
|
+
email: skeptikos@gmail.com
|
26
|
+
executables: []
|
27
|
+
|
28
|
+
extensions: []
|
29
|
+
|
30
|
+
extra_rdoc_files: []
|
31
|
+
|
32
|
+
files:
|
33
|
+
- lib/gemedit.rb
|
34
|
+
- lib/gemedit/edit_command.rb
|
35
|
+
- lib/gemedit/version.rb
|
36
|
+
- lib/rubygems_plugin.rb
|
37
|
+
has_rdoc: true
|
38
|
+
homepage: http://github.com/flooose/flooose-gemedit
|
39
|
+
licenses: []
|
40
|
+
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
|
44
|
+
require_paths:
|
45
|
+
- lib
|
46
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
hash: 3
|
52
|
+
segments:
|
53
|
+
- 0
|
54
|
+
version: "0"
|
55
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 3
|
61
|
+
segments:
|
62
|
+
- 0
|
63
|
+
version: "0"
|
64
|
+
requirements: []
|
65
|
+
|
66
|
+
rubyforge_project: "[none]"
|
67
|
+
rubygems_version: 1.3.7
|
68
|
+
signing_key:
|
69
|
+
specification_version: 3
|
70
|
+
summary: gemedit with git functionality
|
71
|
+
test_files: []
|
72
|
+
|