mercenary 0.1.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3f441ca546550e0899b4f6aa2135994f482d5d29
4
- data.tar.gz: d5d7fd3ecd26cf8065b78fd51575c0fe197b9557
3
+ metadata.gz: 87eebf74783259bf4e3c5cbc9e3afede61659dd4
4
+ data.tar.gz: ca77110aa931e23251435f575b14af771781932a
5
5
  SHA512:
6
- metadata.gz: bd7eaa27cbe85b82a1997eb6b73b429707c5a63c38e1f09b144eed56f04e819e35759e2b3a7d65bb4c977d87998e7d174544f023c2aa4a0e4f32362f5b9dcf9f
7
- data.tar.gz: dbf6c19a22daf82dffd6ca7007d9fea7e32e18fe170da8c972779db8e2e76826956028d90febc845b75c79f11377817da42683d3db3291d4faf22440c47b27ff
6
+ metadata.gz: 3b8bf7ccc50c989fdd2a06bc088d8219254ba7eeb49d8dd42ccba83ceaf12b28f6ef74b5ca3a7cdf568a673da320242019fb0970821aafc95a37014dec2e06a6
7
+ data.tar.gz: 0f2f3400b7ee7ac5350084294689567132ce5f536b6c9114a403479cda32cffa0fb1ab9267528a3146dbb06ec99af0dad952d4abcef37047920b87bb86a48c02
data/.travis.yml CHANGED
@@ -3,7 +3,7 @@ rvm:
3
3
  - 1.8.7
4
4
  - 1.9.3
5
5
  - 2.0.0
6
- script: "bundle exec rspec"
6
+ script: "./script/cibuild"
7
7
  notification:
8
8
  recipients:
9
9
  - mercenary@jekyllrb.com
data/History.markdown ADDED
@@ -0,0 +1,51 @@
1
+ ## HEAD
2
+
3
+ ### Major Enhancements
4
+
5
+ ### Minor Enhancements
6
+
7
+ ### Bug Fixes
8
+
9
+ ### Development Fixes
10
+
11
+ ## 0.2.0 / 2013-11-30
12
+
13
+ ### Major Enhancements
14
+
15
+ * Add `Command#default_command` to specify a default command if none is given
16
+ by the user at runtime (#7)
17
+
18
+ ### Minor Enhancements
19
+
20
+ * Add `Command#execute` to execute the actions of a command (#6)
21
+
22
+ ### Development Fixes
23
+
24
+ * Add standard GitHub bootstrap and cibuild scripts to `script/` (#2)
25
+
26
+ ## 0.1.0 / 2013-11-08
27
+
28
+ ### Major Enhancements
29
+
30
+ * It works!
31
+
32
+ ### Minor Enhancements
33
+
34
+ * Add a logger to `Command`
35
+ * Add `--version` switch to all programs
36
+
37
+ ### Bug Fixes
38
+
39
+ * Fix `Command#syntax` and `Command#description`'s handing of setting vs getting
40
+ * Fix load path problem in `lib/mercenary.rb`
41
+
42
+ ### Development Fixes
43
+
44
+ * Add TomDoc to everything
45
+ * Add a couple starter specs
46
+ * Add TravisCI badge
47
+ * Add Travis configuration
48
+
49
+ ## 0.0.1 / 2013-11-06
50
+
51
+ * Birthday!
data/README.md CHANGED
@@ -34,6 +34,19 @@ Mercenary.program(:jekyll) do |p|
34
34
  end
35
35
  end
36
36
 
37
+ p.command(:build) do |c|
38
+ c.syntax "jekyll build [options]"
39
+ c.description "Builds your Jekyll site"
40
+
41
+ c.option 'safe', '--safe', 'Run in safe mode'
42
+ c.option 'source', '--source DIR', 'From where to collect the source files'
43
+ c.option 'destination', '--dest DIR', 'To where the compiled files should be written'
44
+
45
+ c.action do |_, options|
46
+ Jekyll::Commands::Build.process(options)
47
+ end
48
+ end
49
+
37
50
  p.command(:import) do |c|
38
51
  c.syntax "jekyll import <platform> [options]"
39
52
  c.description "Import your old blog to Jekyll"
@@ -51,6 +64,8 @@ Mercenary.program(:jekyll) do |p|
51
64
  Jekyll::Commands::Import.process(args.first, options)
52
65
  end
53
66
  end
67
+
68
+ p.default_command(:build)
54
69
  end
55
70
  ```
56
71
 
@@ -45,6 +45,25 @@ module Mercenary
45
45
  @description
46
46
  end
47
47
 
48
+ # Public: Sets the default command
49
+ #
50
+ # command_name - the command name to be executed in the event no args are
51
+ # present
52
+ #
53
+ # Returns the default command if there is one, `nil` otherwise
54
+ def default_command(command_name = nil)
55
+ if command_name
56
+ if commands.has_key?(command_name)
57
+ @default_command = commands[command_name] if command_name
58
+ @default_command
59
+ else
60
+ raise ArgumentError.new("'#{command_name}' couldn't be found in this command's list of commands.")
61
+ end
62
+ else
63
+ @default_command
64
+ end
65
+ end
66
+
48
67
  # Public: Adds an option switch
49
68
  #
50
69
  # sym - the variable key which is used to identify the value of the switch
@@ -141,6 +160,20 @@ module Mercenary
141
160
  end
142
161
  end
143
162
 
163
+ # Public: Execute all actions given the inputted args and options
164
+ #
165
+ # argv - (optional) command-line args (sans opts)
166
+ # config - (optional) the Hash configuration of string key to value
167
+ #
168
+ # Returns nothing
169
+ def execute(argv = [], config = {})
170
+ if actions.empty? && !default_command.nil?
171
+ default_command.execute
172
+ else
173
+ actions.each { |a| a.call(argv, config) }
174
+ end
175
+ end
176
+
144
177
  # Public: Check if this command has a subcommand
145
178
  #
146
179
  # sub_command - the name of the subcommand
@@ -46,7 +46,7 @@ module Mercenary
46
46
 
47
47
  logger.debug("Parsed config: #{@config.inspect}")
48
48
 
49
- cmd.actions.each { |a| a.call(argv, @config) }
49
+ cmd.execute(argv, @config)
50
50
  end
51
51
  end
52
52
  end
@@ -1,3 +1,3 @@
1
1
  module Mercenary
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/script/bootstrap ADDED
@@ -0,0 +1,7 @@
1
+ #! /bin/sh
2
+
3
+ set -e
4
+
5
+ echo "Time to get set up."
6
+ bundle install
7
+ echo "Boom."
data/script/cibuild ADDED
@@ -0,0 +1,3 @@
1
+ #! /bin/sh
2
+
3
+ bundle exec rspec
data/spec/command_spec.rb CHANGED
@@ -4,13 +4,18 @@ describe(Mercenary::Command) do
4
4
 
5
5
  context "a basic command" do
6
6
  let(:command) { Mercenary::Command.new(:my_name) }
7
+ let(:parent) { Mercenary::Command.new(:my_parent) }
8
+ let(:with_sub) do
9
+ c = Mercenary::Command.new(:i_have_subcommand)
10
+ add_sub.call(c)
11
+ c
12
+ end
7
13
  let(:command_with_parent) do
8
14
  Mercenary::Command.new(
9
15
  :i_have_parent,
10
16
  parent
11
17
  )
12
18
  end
13
- let(:parent) { Mercenary::Command.new(:my_parent) }
14
19
  let(:add_sub) do
15
20
  Proc.new do |c|
16
21
  c.command(:sub_command) { |p| }
@@ -50,6 +55,15 @@ describe(Mercenary::Command) do
50
55
  expect(command.options).to eq([opt])
51
56
  expect(command.map).to include({opt.first => name})
52
57
  end
58
+
59
+ it "raises an ArgumentError if I specify a default_command that isn't there" do
60
+ c = command # some weird NameError with the block below?
61
+ expect { c.default_command(:nope) }.to raise_error(ArgumentError)
62
+ end
63
+
64
+ it "sets the default_command" do
65
+ expect(with_sub.default_command(:sub_command).name).to eq(:sub_command)
66
+ end
53
67
  end
54
68
 
55
69
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mercenary
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Preston-Werner
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-08 00:00:00.000000000 Z
12
+ date: 2013-12-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -65,6 +65,7 @@ files:
65
65
  - .rspec
66
66
  - .travis.yml
67
67
  - Gemfile
68
+ - History.markdown
68
69
  - LICENSE.txt
69
70
  - README.md
70
71
  - Rakefile
@@ -73,6 +74,8 @@ files:
73
74
  - lib/mercenary/program.rb
74
75
  - lib/mercenary/version.rb
75
76
  - mercenary.gemspec
77
+ - script/bootstrap
78
+ - script/cibuild
76
79
  - spec/command_spec.rb
77
80
  - spec/program_spec.rb
78
81
  - spec/spec_helper.rb
@@ -96,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
99
  version: '0'
97
100
  requirements: []
98
101
  rubyforge_project:
99
- rubygems_version: 2.0.3
102
+ rubygems_version: 2.0.14
100
103
  signing_key:
101
104
  specification_version: 4
102
105
  summary: Lightweight and flexible library for writing command-line apps in Ruby.