simonmenke-gm 0.0.4 → 0.0.5
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/bin/gmm +5 -0
- data/gm_commands/build_command.rb +7 -1
- data/gm_commands/clean_command.rb +3 -1
- data/gm_commands/create_command.rb +3 -4
- data/gm_commands/gen_command.rb +6 -4
- data/gm_commands/help_command.rb +15 -1
- data/gm_commands/install_command.rb +3 -3
- data/gm_commands/spec_command.rb +2 -0
- data/gm_passes/configatron.rb +5 -5
- data/gm_passes/defaults.rb +1 -1
- data/gm_passes/github.rb +1 -1
- data/lib/gm/app.rb +4 -18
- data/lib/gm/command.rb +33 -11
- data/lib/gm/dsl.rb +7 -6
- metadata +17 -15
data/bin/gmm
ADDED
@@ -3,10 +3,16 @@ module GM
|
|
3
3
|
|
4
4
|
class BuildCommand < Command
|
5
5
|
|
6
|
+
desc "Build the gem (gem will be in ./pkg)"
|
7
|
+
|
6
8
|
def run
|
7
9
|
app.emulate = true
|
8
10
|
app.build_gemspec
|
9
|
-
|
11
|
+
|
12
|
+
builder = Gem::Builder.new app.gemspec
|
13
|
+
app.gem_file_name = builder.build
|
14
|
+
system("rm -f pkg/#{app.gem_file_name}")
|
15
|
+
system("mkdir -p pkg && mv #{app.gem_file_name} pkg/")
|
10
16
|
end
|
11
17
|
|
12
18
|
end
|
@@ -3,11 +3,10 @@ module GM
|
|
3
3
|
|
4
4
|
class CreateCommand < Command
|
5
5
|
|
6
|
+
desc "Generate the basic directory tree for a new gem"
|
7
|
+
|
6
8
|
def run
|
7
|
-
|
8
|
-
|
9
|
-
RubiGen::Base.use_component_sources!(:gm)
|
10
|
-
RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'gem')
|
9
|
+
Command.run(:gen, ['gem', *ARGV])
|
11
10
|
end
|
12
11
|
|
13
12
|
end
|
data/gm_commands/gen_command.rb
CHANGED
@@ -3,13 +3,15 @@ module GM
|
|
3
3
|
|
4
4
|
class GenCommand < Command
|
5
5
|
|
6
|
+
desc "Use a generator"
|
7
|
+
|
6
8
|
def run
|
7
|
-
app.build_gemspec
|
8
|
-
@gen_name =
|
9
|
-
@gen_options =
|
9
|
+
app.build_gemspec if File.exist?('./gmfile.yml')
|
10
|
+
@gen_name = self.argv.shift
|
11
|
+
@gen_options = self.argv
|
10
12
|
|
11
13
|
RubiGen::Base.use_component_sources!(:gm)
|
12
|
-
RubiGen::Scripts::Generate.new.run(
|
14
|
+
RubiGen::Scripts::Generate.new.run(@gen_options, :generator => @gen_name)
|
13
15
|
end
|
14
16
|
|
15
17
|
end
|
data/gm_commands/help_command.rb
CHANGED
@@ -3,10 +3,24 @@ module GM
|
|
3
3
|
|
4
4
|
class HelpCommand < Command
|
5
5
|
|
6
|
+
desc "Display this help message"
|
7
|
+
|
6
8
|
def run
|
7
9
|
puts "#{File.basename($0)} <command> <options>"
|
8
|
-
puts "Commands: #{App.instance.command_names.join(' ')}"
|
9
10
|
puts options.to_s
|
11
|
+
puts "Commands:"
|
12
|
+
puts command_descriptions
|
13
|
+
end
|
14
|
+
|
15
|
+
def command_descriptions
|
16
|
+
descriptions = []
|
17
|
+
app.commands.collect do |name, cmd|
|
18
|
+
descriptions << [name.to_s.underscore.sub('_command', ''), cmd.description]
|
19
|
+
end
|
20
|
+
descriptions.sort { |a,b| a.first <=> b.first }
|
21
|
+
descriptions.collect do |(name, desc)|
|
22
|
+
"#{name+(" "*(17-name.length))} #{desc}"
|
23
|
+
end
|
10
24
|
end
|
11
25
|
|
12
26
|
end
|
data/gm_commands/spec_command.rb
CHANGED
data/gm_passes/configatron.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
|
2
|
-
|
2
|
+
configuration_pass :configatron_defaults do |spec|
|
3
3
|
|
4
4
|
configatron.configure_from_hash({
|
5
5
|
:general => {
|
@@ -35,17 +35,17 @@ pre_pass :configatron_defaults do |spec|
|
|
35
35
|
|
36
36
|
end
|
37
37
|
|
38
|
-
|
38
|
+
configuration_pass :configatron_global, :configatron_defaults do |s|
|
39
39
|
c = configatron
|
40
40
|
c.configure_from_yaml(File.expand_path('~/.gmrc.yml'))
|
41
41
|
end
|
42
42
|
|
43
|
-
|
43
|
+
configuration_pass :configatron_local, :configatron_global do |s|
|
44
44
|
c = configatron
|
45
45
|
c.configure_from_yaml(File.expand_path('gmfile.yml'))
|
46
46
|
end
|
47
47
|
|
48
|
-
|
48
|
+
configuration_pass :configatron_normalize, :configatron_local do |s|
|
49
49
|
c = configatron
|
50
50
|
|
51
51
|
if c.rubyforge.project.nil?
|
@@ -57,7 +57,7 @@ pre_pass :configatron_normalize, :configatron_local do |s|
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
|
60
|
+
configuration_pass :configatron_exclude_passes, :configatron_local do |s|
|
61
61
|
c = configatron
|
62
62
|
c.excluded_passes.each do |pass|
|
63
63
|
exclude_pass(pass)
|
data/gm_passes/defaults.rb
CHANGED
data/gm_passes/github.rb
CHANGED
data/lib/gm/app.rb
CHANGED
@@ -30,14 +30,7 @@ module GM
|
|
30
30
|
def run
|
31
31
|
load_passes
|
32
32
|
load_commands
|
33
|
-
Command.
|
34
|
-
end
|
35
|
-
|
36
|
-
# ge a list of all the command names
|
37
|
-
def command_names
|
38
|
-
commands.keys.collect do |name|
|
39
|
-
name.to_s.gsub(/[A-Z]/){|m|'_'+m.downcase}.sub(/^_/, '').sub('_command', '')
|
40
|
-
end.sort
|
33
|
+
Command.run
|
41
34
|
end
|
42
35
|
|
43
36
|
# should we emulate github?
|
@@ -47,21 +40,14 @@ module GM
|
|
47
40
|
|
48
41
|
def build_gemspec
|
49
42
|
@gemspec = Gem::Specification.new do |s|
|
50
|
-
ConfigurationPassQueue.new(:
|
51
|
-
ConfigurationPassQueue.new(:
|
43
|
+
ConfigurationPassQueue.new(:initialization).run(s)
|
44
|
+
ConfigurationPassQueue.new(:configuration).run(s)
|
52
45
|
ConfigurationPassQueue.new(:normal).run(s)
|
53
|
-
ConfigurationPassQueue.new(:
|
46
|
+
ConfigurationPassQueue.new(:finalization).run(s)
|
54
47
|
end
|
55
48
|
@gemspec.validate
|
56
49
|
end
|
57
50
|
|
58
|
-
def build_gem
|
59
|
-
builder = Gem::Builder.new @gemspec
|
60
|
-
@gem_file_name = builder.build
|
61
|
-
system("rm -f pkg/#{@gem_file_name}")
|
62
|
-
system("mkdir -p pkg && mv #{@gem_file_name} pkg/")
|
63
|
-
end
|
64
|
-
|
65
51
|
private
|
66
52
|
|
67
53
|
# load all passes
|
data/lib/gm/command.rb
CHANGED
@@ -4,8 +4,19 @@ module GM
|
|
4
4
|
class Command
|
5
5
|
|
6
6
|
attr_accessor :app
|
7
|
+
attr_accessor :argv
|
7
8
|
attr_accessor :options
|
8
9
|
|
10
|
+
def self.desc(text)
|
11
|
+
module_eval %{
|
12
|
+
def self.description
|
13
|
+
#{text.inspect}
|
14
|
+
end
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
desc ""
|
19
|
+
|
9
20
|
# load a command from a file
|
10
21
|
def self.load_command(path)
|
11
22
|
cmd_name = File.basename(path, '.rb')
|
@@ -22,21 +33,32 @@ module GM
|
|
22
33
|
end
|
23
34
|
|
24
35
|
# build a command
|
25
|
-
def self.
|
26
|
-
|
27
|
-
|
28
|
-
cmd_name = cmd_name + '_command'
|
29
|
-
cmd_name = cmd_name.gsub(/(^|_)([a-z])/i) { |m| $2.upcase }
|
30
|
-
cmd_class = GM::App.instance.commands[cmd_name.to_sym] || GM::App.instance.commands[:HelpCommand]
|
31
|
-
cmd = cmd_class.new
|
36
|
+
def self.run(cmd_name=nil, argv=ARGV)
|
37
|
+
app = GM::App.instance
|
38
|
+
cmd = self.build(cmd_name, argv)
|
32
39
|
cmd.app = app
|
33
|
-
cmd.options = app.options = Clip do |p|
|
40
|
+
cmd.options = app.options = Clip(argv) do |p|
|
34
41
|
app.extra_options(p)
|
35
42
|
cmd.extra_options(p)
|
36
43
|
end
|
37
|
-
|
38
|
-
|
39
|
-
cmd
|
44
|
+
argv.clear
|
45
|
+
argv.concat(cmd.options.remainder)
|
46
|
+
cmd.argv = argv
|
47
|
+
cmd.run
|
48
|
+
argv
|
49
|
+
end
|
50
|
+
|
51
|
+
# build a command
|
52
|
+
def self.build(cmd_name=nil, argv=ARGV)
|
53
|
+
if cmd_name.nil?
|
54
|
+
cmd_name = (argv.detect {|i| not i =~ /^--?/ } || 'help')
|
55
|
+
argv.delete(cmd_name)
|
56
|
+
end
|
57
|
+
app = GM::App.instance
|
58
|
+
cmd_name = "#{cmd_name}_command".camelize
|
59
|
+
cmd_class = app.commands[cmd_name.to_sym]
|
60
|
+
cmd_class ||= app.commands[:HelpCommand]
|
61
|
+
cmd_class.new
|
40
62
|
end
|
41
63
|
|
42
64
|
# A command can overwrite this method in order to add extra command line options.
|
data/lib/gm/dsl.rb
CHANGED
@@ -11,18 +11,19 @@ module GM
|
|
11
11
|
end
|
12
12
|
module_function :load_pass
|
13
13
|
|
14
|
-
def
|
15
|
-
ConfigurationPass.new(name, dependencies, &proc).register(:
|
14
|
+
def initialization_pass(name, dependencies=[], &proc)
|
15
|
+
ConfigurationPass.new(name, dependencies, &proc).register(:initialization)
|
16
16
|
end
|
17
|
-
def
|
18
|
-
ConfigurationPass.new(name, dependencies, &proc).register(:
|
17
|
+
def configuration_pass(name, dependencies=[], &proc)
|
18
|
+
ConfigurationPass.new(name, dependencies, &proc).register(:configuration)
|
19
19
|
end
|
20
20
|
def pass(name, dependencies=[], &proc)
|
21
21
|
ConfigurationPass.new(name, dependencies, &proc).register(:normal)
|
22
22
|
end
|
23
|
-
def
|
24
|
-
ConfigurationPass.new(name, dependencies, &proc).register(:
|
23
|
+
def finalization_pass(name, dependencies=[], &proc)
|
24
|
+
ConfigurationPass.new(name, dependencies, &proc).register(:finalization)
|
25
25
|
end
|
26
|
+
|
26
27
|
def exclude_pass(name, fase=:normal)
|
27
28
|
GM::App.instance.exclude_pass(name, fase)
|
28
29
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simonmenke-gm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon Menke
|
@@ -10,7 +10,7 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
|
12
12
|
date: 2009-01-14 00:00:00 -08:00
|
13
|
-
default_executable:
|
13
|
+
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: configatron
|
@@ -52,12 +52,14 @@ description:
|
|
52
52
|
email: simon.menke@gmail.com
|
53
53
|
executables:
|
54
54
|
- gm
|
55
|
+
- gmm
|
55
56
|
extensions: []
|
56
57
|
|
57
58
|
extra_rdoc_files: []
|
58
59
|
|
59
60
|
files:
|
60
61
|
- bin/gm
|
62
|
+
- bin/gmm
|
61
63
|
- lib/extentions/gem.rb
|
62
64
|
- lib/gm/app.rb
|
63
65
|
- lib/gm/command.rb
|
@@ -67,19 +69,6 @@ files:
|
|
67
69
|
- lib/gm.rb
|
68
70
|
- LICENSE.txt
|
69
71
|
- README.textile
|
70
|
-
- gm_generators/bin/bin_generator.rb
|
71
|
-
- gm_generators/bin/templates/bin/bin.rb
|
72
|
-
- gm_generators/gem/gem_generator.rb
|
73
|
-
- gm_generators/gem/templates/gmfile.yml
|
74
|
-
- gm_generators/gem/templates/lib/module.rb
|
75
|
-
- gm_generators/gem/templates/README.textile
|
76
|
-
- gm_generators/mit_license/mit_license_generator.rb
|
77
|
-
- gm_generators/mit_license/templates/LICENSE.txt
|
78
|
-
- gm_generators/rails/rails_generator.rb
|
79
|
-
- gm_generators/rails/templates/rails/init.rb
|
80
|
-
- gm_generators/test/templates/test/test_case.rb
|
81
|
-
- gm_generators/test/templates/test/test_helper.rb
|
82
|
-
- gm_generators/test/test_generator.rb
|
83
72
|
- gm_commands/build_command.rb
|
84
73
|
- gm_commands/clean_command.rb
|
85
74
|
- gm_commands/create_command.rb
|
@@ -97,6 +86,19 @@ files:
|
|
97
86
|
- gm_passes/rubigen.rb
|
98
87
|
- gm_passes/specs.rb
|
99
88
|
- gm_passes/test.rb
|
89
|
+
- gm_generators/bin/bin_generator.rb
|
90
|
+
- gm_generators/bin/templates/bin/bin.rb
|
91
|
+
- gm_generators/gem/gem_generator.rb
|
92
|
+
- gm_generators/gem/templates/README.textile
|
93
|
+
- gm_generators/gem/templates/gmfile.yml
|
94
|
+
- gm_generators/gem/templates/lib/module.rb
|
95
|
+
- gm_generators/mit_license/mit_license_generator.rb
|
96
|
+
- gm_generators/mit_license/templates/LICENSE.txt
|
97
|
+
- gm_generators/rails/rails_generator.rb
|
98
|
+
- gm_generators/rails/templates/rails/init.rb
|
99
|
+
- gm_generators/test/templates/test/test_case.rb
|
100
|
+
- gm_generators/test/templates/test/test_helper.rb
|
101
|
+
- gm_generators/test/test_generator.rb
|
100
102
|
has_rdoc: true
|
101
103
|
homepage: http://github.com/simonmenke/gm
|
102
104
|
post_install_message:
|