mvn2chain 1.0.1 → 1.0.2

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: e47dce4153ce5ebd1f84d901db21263c1e41d8b0
4
- data.tar.gz: 41a9d93d822702c1a56492df3889664b32a28983
3
+ metadata.gz: 517adb7e4558bb8d4a0db6c008b0ef7490cd7938
4
+ data.tar.gz: d05801008a89390d3c53c5d25a2f66288d3e7158
5
5
  SHA512:
6
- metadata.gz: 928cd5a85d8d1c8a32644a0c79a530db7972f09d93a344bdeb1e841769a08ecf3c81eeb66c54520877683f27219a9e04f0f9d4ce53db435407a79aebccda8141
7
- data.tar.gz: 97e168ef2db469eac5907f3dbf89859e381ebc344f5443fca5a656c105a0dcecdec8bc3c65513002ad4b942e27be1ece80d5d38ac665a3bf96c3ecf483e8a802
6
+ metadata.gz: 3d369c9d37db0d32b68149dbcbe500347ecbfec55ba3f2d2e9b0abc03884f7d0eeacbe8992e78e6eb8079b701021851e020909a31ab6497d360cef267d0f4118
7
+ data.tar.gz: 37a12473d378893ca15aee953d212e60011149d015252827277b85ecf99db19890ff04101e13bf45945b1c08e5e0f3949f28548a54a1d4b781158efdd903f8c5
data/README.md CHANGED
@@ -1,28 +1,44 @@
1
- # Mvn2chain
1
+ # mvn2chain
2
2
 
3
- TODO: Write a gem description
3
+ A command line tool that makes it easy to chain `mvn2` calls. Register your dependencies with the `mvn2chain dep` commands and run them with the `mvn2chain exec` command. See `mvn2chain help`, `mvn2chain help dep`, and `mvn2chain help exec` for more information. Some commands have aliases.
4
4
 
5
5
  ## Installation
6
6
 
7
- Add this line to your application's Gemfile:
7
+ Install it yourself as:
8
8
 
9
- gem 'mvn2chain'
9
+ $ gem install mvn2chain
10
10
 
11
- And then execute:
11
+ ## Usage
12
12
 
13
- $ bundle
13
+ ###Add your dependencies
14
+ 1. Change to the root directory of a maven project with a dependency you want to be able chain.
15
+ 2. Use the `mvn2chain dep add <id> <path>` command to add the dependency to the registry. The `<id>` parameter is the short identifier for the dependency. You use this for referencing the dependency in `mvn2chain exec` calls, as well as for removing a dependency from the registry. The `<path>` parameter is the path to the root directory of the maven project for the dependency.
16
+ 3. To see the dependencies you already have in the registry, use `mvn2chain dep list`.
17
+ 4. If you want to remove a dependency, use the `mvn2chain dep remove <id>` command, where `<id>` is the id you gave the dependency when you added it.
18
+ 5. There is no limit to how many levels of dependencies you can have, and no check (at least currently) for recursive dependencies (so be careful)
14
19
 
15
- Or install it yourself as:
20
+ ###Run a chained build
21
+ The `mvn2chain exec` command will allow you to build dependency projects and then the current project. It uses a special parameter syntax to allow you to specify `mvn2` parameters to the current project and any dependency projects (direct or indirect).
16
22
 
17
- $ gem install mvn2chain
23
+ ####Example
24
+ Let's say you have your project set up with dependencies `dep1` and `dep2`, and that `dep1` has the dependency `dep3`. If you want to build the project with `mvn2` parameter `-s`, dependency `dep1`with parameter `-e`, indirect dependency `dep3` with parameter `-0`, and skip dependency `dep2`, you would do the following:
18
25
 
19
- ## Usage
26
+ mvn2chain exec -s +dep1 -e +dep3 -0 ~dep2
27
+ Here's the explanation:
20
28
 
21
- TODO: Write usage instructions here
29
+ 1. You start off with all arguments being passed to the `mvn2` call for the current project, which is the `-s` argument in this case
30
+ 2. Once you specify `+dep1`, you switch to specifying arguments for the `mvn2` call for `dep1`. This is because any argument starting with `+` will switch to specifying arguments for the dependency with the id taken from the rest of the characters in the argument with the `+`.
31
+ 3. Now that you've switched to specifying arguments for `dep1`, `-e` will be given to that.
32
+ 4. `dep3` isn't a dependency the current project knows about, but that doesn't matter because it chains by switching to the directory of the dependency and calling `mvn2chain exec` with the arguments given for the dependency *and* the extra arguments for other dependencies (plus excluded dependencies). In this case, that means it switches to the directory for `dep1` and calls `mvn2chain exec -e +dep3 -0 ~dep2` before switching back and running `mvn2 -s` in the current project
33
+ 5. When it calls `mvn2chain exec` for the dependency, it will chain again with any dependencies that dependency has in the exact same fashion. In this example, that means it switches to the directory of `dep1` dependency `dep3` and calls `mvn2chain exec -0 ~dep2`
34
+ 6. Since `dep3` doesn't have any dependencies of its own, it will just run `mvn2 -0` and unwind back `dep1`. If `dep1` had other dependencies, it would continue cycling through them and doing the same thing
35
+ 7. Once it has gone through all of the dependencies that are not excluded, `dep1` will run its `mvn2 -e` call and unwind back to the first project
36
+ 8. The first project has the dependency `dep2`, but the arguments you provided include `~dep2`. Any argument starting with `~` will cause the dependency with the id taken from the rest of the characters in the argument with the `~` to be skipped. You can exclude indirect dependencies in the same way because exclusions are always passed along to the chained builds. BTW, an argument starting with `~/` will probably not be counted as an exclusion since it will probably be transformed to the absolute path of your home directory by bash before being passed to `mvn2chain`.
37
+ 9. Now that all of its dependencies are build, the initial project will run `mvn2 -s` and finish the process.
22
38
 
23
39
  ## Contributing
24
40
 
25
- 1. Fork it ( https://github.com/[my-github-username]/mvn2chain/fork )
41
+ 1. Fork it ( https://github.com/henderea/mvn2chain/fork )
26
42
  2. Create your feature branch (`git checkout -b my-new-feature`)
27
43
  3. Commit your changes (`git commit -am 'Add some feature'`)
28
44
  4. Push to the branch (`git push origin my-new-feature`)
data/bin/mvn2chain CHANGED
@@ -21,8 +21,9 @@ module Mvn2Chain
21
21
  self.save if self.autosave
22
22
  end
23
23
 
24
- def deps
24
+ def deps(exclude = [])
25
25
  @deps ||= load
26
+ (exclude.nil? || exclude.empty?) ? @deps : @deps.select { |k,_| !exclude.include?(k) }
26
27
  end
27
28
 
28
29
  def load
@@ -174,7 +175,7 @@ module Mvn2Chain
174
175
  }
175
176
 
176
177
  register(:command, id: :exec, parent: nil, name: 'exec', aliases: %w(build), short_desc: 'exec [ARGS...]', desc: 'execute a mvn2 build.',
177
- long_desc: <<LONGDESC
178
+ long_desc: <<LONGDESC
178
179
  Execute a mvn2 build.
179
180
 
180
181
  Specify arguments for mvn2 as you would normally, and switch to specifying arguments for a dependency (direct or indirect) with a +dep, where 'dep' is the dependency id.
@@ -187,7 +188,11 @@ LONGDESC
187
188
  arg_hash, exclude = args_to_hash(*args)
188
189
  mine = arg_hash.delete(:me)
189
190
  dir = Dir.getwd
190
- unless DataStore.deps.empty?
191
+ if DataStore.deps(exclude).nil? || DataStore.deps(exclude).empty?
192
+ DataStore.deps.each { |v|
193
+ puts "Skipping '#{v[0]}'"
194
+ }
195
+ else
191
196
  puts "Starting in #{dir}"
192
197
  DataStore.deps.each { |v|
193
198
  if exclude.include?(v[0])
@@ -1,3 +1,3 @@
1
1
  module Mvn2chain
2
- VERSION = '1.0.1'
2
+ VERSION = '1.0.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mvn2chain
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Henderson