lapidarius 3.1.2 → 3.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: 3d36f162e9683314260cb0ef8726db7907baa9de
4
- data.tar.gz: 350fc7920a94be4f8744a10e36eaa8d4c375e6bc
3
+ metadata.gz: 236dff5c4632cb817064529fe17871c0c7dfb677
4
+ data.tar.gz: 9e97e388558dcd1d89c6d64bbd7c43019290d15f
5
5
  SHA512:
6
- metadata.gz: b5f19b7399ad3f7545b7f598354ca7805ed6031917e28c6797900e07373350ca1c4b4ee876a9c5bce8a396cd2bb141566d7dfd3254f855f606d5d506aa9af326
7
- data.tar.gz: 50ba453163c082a7570eda70e8cd3a9cabb54484b475f0f63311a4c222684c311509b97ea1abb22cf955f46ebd48c2ecfb279a3b75e9b2d5be4161676c97e2ea
6
+ metadata.gz: 3de53054c5989401d803782a84ed7a6cc5edec327fadc1ba79a9fa6fcfcf533ed2b431f52bc072da257ad669b826a07d6e05b0ad1b22d468b65ff5a790be545c
7
+ data.tar.gz: 97e45c387dd9f0b5c3d31c325ba8d98bbdf08b9c40e9839e2d517f1722340f674eeb45ec4e1bfff4fc9666bb90d760a920c9df41b6d85c9b5f83fca8d8154b29
data/README.md CHANGED
@@ -27,9 +27,10 @@ No remote fetching is performed.
27
27
 
28
28
  ## Usage
29
29
  This library invokes the `Gem::Commands::DependencyCommand` class recursively to collect all the levels of dependency.
30
- Identical dependencies are counted just once:
30
+ Both runtime and development dependencies are counted (identical dependencies are counted once).
31
+ Just the runtime dependencies tree is printed to screen:
31
32
 
32
- ```
33
+ ```shell
33
34
  $ lapidarius --gem=sinatra
34
35
  sinatra (2.0.0)
35
36
  ├── mustermann (~> 1.0)
@@ -38,5 +39,5 @@ sinatra (2.0.0)
38
39
  │ └── rack (>= 0)
39
40
  └── tilt (~> 2.0)
40
41
 
41
- 4 runtime dependencies
42
+ 4 runtime, 4 development
42
43
  ```
@@ -5,34 +5,44 @@ module Lapidarius
5
5
  class Cutter
6
6
  DEVELOPMENT = "development"
7
7
 
8
- class GemNotCreatedError < StandardError; end
9
-
10
8
  def initialize(name, cmd_klass = Command)
11
9
  @name = name
12
10
  @cmd = cmd_klass.new
11
+ @dev_deps = []
13
12
  end
14
13
 
15
- def call(name = @name, gem = nil)
14
+ def call
15
+ recurse.tap do |gem|
16
+ gem.dev_count = dev_count if gem
17
+ end
18
+ end
19
+
20
+ private def recurse(name = @name, gem = nil)
16
21
  tokens = tokenize(name)
17
22
  token = tokens.shift
18
23
  gem ||= Gem.factory(token)
19
- fail GemNotCreatedError, "unable to create a gem from #{token}" unless gem
20
24
  tokens.each do |t|
21
- dep = Gem.factory(t)
22
- next unless dep
25
+ next unless dep = Gem.factory(t)
23
26
  gem << dep
24
- call(dep.name, dep)
27
+ recurse(dep.name, dep)
25
28
  end
26
29
  gem
27
30
  end
28
31
 
32
+ def dev_count
33
+ @dev_deps.map { |e| e.split(" ").first }.uniq.count
34
+ end
35
+
29
36
  private def tokenize(name)
30
37
  src = @cmd.call(name)
31
- data = src.split(/\n\n/).map!(&:strip)
32
- data.first.split("\n").tap do |tokens|
33
- tokens.map!(&:strip)
34
- tokens.reject! { |token| token.match(/#{DEVELOPMENT}/) }
35
- end
38
+ data = normalize(src)
39
+ dev, tokens = data.partition { |token| token.match(/#{DEVELOPMENT}/) }
40
+ @dev_deps.concat(dev)
41
+ tokens
42
+ end
43
+
44
+ private def normalize(src)
45
+ src.split(/\n\n/).map!(&:strip).first.split("\n").map(&:strip)
36
46
  end
37
47
  end
38
48
  end
@@ -23,6 +23,7 @@ module Lapidarius
23
23
  end
24
24
 
25
25
  attr_reader :name, :version, :deps
26
+ attr_accessor :dev_count
26
27
 
27
28
  def initialize(name:, version:, deps: [])
28
29
  @name = name
@@ -16,7 +16,7 @@ module Lapidarius
16
16
  out << @gem
17
17
  recurse
18
18
  out << ""
19
- out << "#{@gem.count} runtime dependencies"
19
+ out << "#{@gem.count} runtime, #{@gem.dev_count} development"
20
20
  end
21
21
  end
22
22
 
@@ -1,3 +1,3 @@
1
1
  module Lapidarius
2
- VERSION = "3.1.2"
2
+ VERSION = "3.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lapidarius
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.2
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - costajob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-21 00:00:00.000000000 Z
11
+ date: 2017-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler