cobra_commander 0.9.0 → 0.9.1

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
  SHA256:
3
- metadata.gz: d77734cb3eeb9f21c539f66a92d15e8aa94030046db7cdad3be8f6ed191c00aa
4
- data.tar.gz: feacbdfbafb7baf191948e81014d9335b1cddf4a1ddd0f0a2aeac13af823efb3
3
+ metadata.gz: 8e12f66b669fc83fc691deb3f67183550c5341f6ce8fdf18d8f43ce5b5859589
4
+ data.tar.gz: 7a15cc9bbc0226df01609c96917c5e2d750376a2ef68769dc7153eb4a0224cd7
5
5
  SHA512:
6
- metadata.gz: dd926a0cc0bf9978b9b3dae6319e5b33853a2191f0d3b82645e696355a671769bf23894de45a58fb02fe5d0bb302c986d2ec8b3d71559c414248a82e2822c921
7
- data.tar.gz: 60c750c84313992647cf94463ecc31fda2e5e3502f21a6eaacf4d6dbf206eddb8cacbd28d8925547c2851034bb64e3775413467f0c00962397e42af7484ac986
6
+ metadata.gz: 1077abb8aac431dec03d9f2ab79e95d411fa451ef1f6381a984fda377e8f4ee96c9084de69b2062712f7b943b03a74316e47aacce73cfca20475d128027aeee7
7
+ data.tar.gz: 5cf5496ed9ff196ca395a4474be66ddafaebd1fd0073d2a5b7bb957d2cd90dfc3f6a36706782bac361029996798cd5520093a3275126240df867a90791ec20e7
@@ -31,7 +31,7 @@ jobs:
31
31
  - name: rubocop
32
32
  uses: reviewdog/action-rubocop@v1
33
33
  with:
34
- rubocop_version: 0.48.1
34
+ rubocop_version: 0.88.0
35
35
  filter_mode: nofilter
36
36
  fail_on_error: true
37
37
  rubocop_extensions: ""
@@ -1,50 +1,20 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.3
3
-
4
- Metrics/LineLength:
5
- Max: 120
2
+ TargetRubyVersion: 2.5
3
+ NewCops: enable
6
4
 
7
5
  Metrics/BlockLength:
8
6
  Exclude:
9
7
  - spec/**/*.rb
10
8
  - cobra_commander.gemspec
11
9
 
12
- Metrics/ClassLength:
13
- Exclude:
14
- - spec/**/*.rb
15
- - cobra_commander.gemspec
16
-
17
- Style/AccessModifierIndentation:
10
+ Layout/AccessModifierIndentation:
18
11
  EnforcedStyle: outdent
19
12
 
20
- Style/Documentation:
21
- Enabled: true
22
-
23
- Style/ExtraSpacing:
24
- Exclude:
25
- - cobra_commander.gemspec
26
-
27
- Style/SpaceAroundOperators:
28
- Exclude:
29
- - cobra_commander.gemspec
30
-
31
- Style/Lambda:
32
- EnforcedStyle: literal
33
-
34
- Style/PercentLiteralDelimiters:
35
- PreferredDelimiters:
36
- default: ()
37
- '%i': '[]'
38
- '%I': '[]'
39
- '%r': '{}'
40
- '%w': '[]'
41
- '%W': '[]'
42
-
43
- # Single quotes being faster is hardly measurable and only affects parse time.
44
- # Enforcing double quotes reduces the times where you need to change them when introducing an interpolation.
45
- # Use single quotes only if their semantics are needed.
46
13
  Style/StringLiterals:
47
14
  EnforcedStyle: double_quotes
48
15
 
49
- Style/TrailingCommaInLiteral:
50
- EnforcedStyleForMultiline: comma
16
+ Style/TrailingCommaInArrayLiteral:
17
+ EnforcedStyleForMultiline: consistent_comma
18
+
19
+ Style/TrailingCommaInHashLiteral:
20
+ EnforcedStyleForMultiline: consistent_comma
@@ -1,7 +1,6 @@
1
- # coding: utf-8
2
1
  # frozen_string_literal: true
3
2
 
4
- lib = File.expand_path("../lib", __FILE__)
3
+ lib = File.expand_path("lib", __dir__)
5
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
5
  require "cobra_commander/version"
7
6
 
@@ -13,7 +12,7 @@ Gem::Specification.new do |spec|
13
12
  "Garett Arrowood",
14
13
  "Carlos Palhares",
15
14
  ]
16
- spec.email = [
15
+ spec.email = [
17
16
  "blangfeld@powerhrg.com",
18
17
  "garett.arrowood@powerhrg.com",
19
18
  "carlos.palhares@powerhrg.com",
@@ -23,7 +22,7 @@ Gem::Specification.new do |spec|
23
22
  Tools for working with Component Based Rails Apps (see http://shageman.github.io/cbra.info/).
24
23
  Includes tools for graphing the components of an app and their relationships, as well as selectively
25
24
  testing components based on changes made.
26
- DESCRIPTION
25
+ DESCRIPTION
27
26
  spec.homepage = "http://tech.powerhrg.com/cobra_commander/"
28
27
  spec.license = "MIT"
29
28
 
@@ -35,16 +34,16 @@ DESCRIPTION
35
34
  spec.require_paths = ["lib"]
36
35
 
37
36
  spec.add_dependency "bundler", "~> 1.17"
38
- spec.add_dependency "thor", ["< 2.0", ">= 0.18.1"]
39
37
  spec.add_dependency "ruby-graphviz", "~> 1.2.3"
38
+ spec.add_dependency "thor", ["< 2.0", ">= 0.18.1"]
40
39
  spec.add_dependency "tty-command", "~> 0.9.0"
41
40
  spec.add_dependency "tty-spinner", "~> 0.9.3"
42
41
 
42
+ spec.add_development_dependency "aruba", "~> 0.14.2"
43
43
  spec.add_development_dependency "bundler", "~> 1.17"
44
- spec.add_development_dependency "rake", "~> 10.0"
45
- spec.add_development_dependency "rspec", "~> 3.5"
46
44
  spec.add_development_dependency "guard-rspec"
47
- spec.add_development_dependency "aruba", "~> 0.14.2"
48
- spec.add_development_dependency "rubocop", "0.48.1"
49
45
  spec.add_development_dependency "pry"
46
+ spec.add_development_dependency "rake", "~> 10.0"
47
+ spec.add_development_dependency "rspec", "~> 3.5"
48
+ spec.add_development_dependency "rubocop", "0.88.0"
50
49
  end
@@ -42,16 +42,16 @@ module CobraCommander
42
42
  Open3.capture3("git", "diff", "--name-only", @branch)
43
43
  end
44
44
 
45
- if result.exitstatus == 128
46
- raise InvalidSelectionError, "Specified --branch could not be found"
47
- end
45
+ raise InvalidSelectionError, "Specified --branch could not be found" if result.exitstatus == 128
48
46
 
49
47
  diff.split("\n").map { |f| File.join(@root_dir, f) }
50
48
  end
51
49
  end
52
50
 
53
51
  def assert_valid_result_choice
54
- raise InvalidSelectionError, "--results must be 'test', 'full', 'name' or 'json'" unless %w[test full name json].include?(@results) # rubocop:disable Metrics/LineLength
52
+ return if %w[test full name json].include?(@results)
53
+
54
+ raise InvalidSelectionError, "--results must be 'test', 'full', 'name' or 'json'"
55
55
  end
56
56
 
57
57
  def selected_result?(result)
@@ -39,7 +39,7 @@ module CobraCommander
39
39
  def exec(command_or_component, command = nil)
40
40
  CobraCommander::Executor.exec(
41
41
  components_filtered(command && command_or_component),
42
- command ? command : command_or_component
42
+ command || command_or_component
43
43
  )
44
44
  end
45
45
 
@@ -58,8 +58,8 @@ module CobraCommander
58
58
  options.output
59
59
  )
60
60
  puts "Graph generated at #{options.output}"
61
- rescue ArgumentError => error
62
- error error.message
61
+ rescue ArgumentError => e
62
+ error e.message
63
63
  end
64
64
 
65
65
  desc "changes [--results=RESULTS] [--branch=BRANCH]", "Prints list of changed files"
@@ -83,10 +83,12 @@ module CobraCommander
83
83
 
84
84
  def components_filtered(component_name)
85
85
  return umbrella.components unless component_name
86
+
86
87
  component = find_component(component_name)
87
88
 
88
89
  return component.deep_dependencies if options.dependencies
89
90
  return component.deep_dependents if options.dependents
91
+
90
92
  [component]
91
93
  end
92
94
  end
@@ -3,7 +3,7 @@
3
3
  module CobraCommander
4
4
  # Represents a component withing an Umbrella
5
5
  class Component
6
- attr_reader :name, :dependencies, :sources
6
+ attr_reader :name, :sources
7
7
 
8
8
  def initialize(umbrella, name)
9
9
  @umbrella = umbrella
@@ -1,23 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bundler"
4
+ require "bundler/lockfile_parser"
5
+ require "pathname"
6
+
3
7
  module CobraCommander
4
8
  module Dependencies
5
9
  # Calculates ruby bundler dependencies
6
10
  class Bundler
7
- def initialize(root)
8
- @definition = ::Bundler::Definition.build(
9
- Pathname.new(File.join(root, "Gemfile")).realpath,
10
- Pathname.new(File.join(root, "Gemfile.lock")).realpath,
11
- false
12
- )
13
- end
11
+ attr_reader :path
14
12
 
15
- def path
16
- @definition.lockfile
13
+ def initialize(root)
14
+ @root = root
15
+ @path = Pathname.new(File.join(root, "Gemfile.lock")).realpath
17
16
  end
18
17
 
19
18
  def dependencies
20
- @definition.dependencies.map(&:name)
19
+ lockfile.dependencies.values.map(&:name)
21
20
  end
22
21
 
23
22
  def components
@@ -28,9 +27,14 @@ module CobraCommander
28
27
 
29
28
  private
30
29
 
30
+ def lockfile
31
+ @lockfile ||= ::Bundler::LockfileParser.new(::Bundler.read_file(path))
32
+ end
33
+
31
34
  def components_source
32
- @components_source ||= @definition.send(:sources).path_sources.find do |source|
33
- source.path.to_s.eql?("components")
35
+ @components_source ||= begin
36
+ source = @lockfile.sources.find { |s| s.path.to_s.eql?("components") }
37
+ ::Bundler::Source::Path.new(source.options.merge("root_path" => @root))
34
38
  end
35
39
  end
36
40
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "json"
4
+ require "pathname"
4
5
 
5
6
  module CobraCommander
6
7
  module Dependencies
@@ -10,11 +11,11 @@ module CobraCommander
10
11
  attr_reader :path
11
12
 
12
13
  def initialize(path)
13
- @path = Pathname.new(File.join(path, "package.json")).realpath
14
+ @path = ::Pathname.new(File.join(path, "package.json")).realpath
14
15
  end
15
16
 
16
17
  def project_tag
17
- name.match(%r{^@[\w-]+\/}).to_s
18
+ name.match(%r{^@[\w-]+/}).to_s
18
19
  end
19
20
 
20
21
  def name
@@ -6,7 +6,7 @@ module CobraCommander
6
6
  # Yarn package repository to load and cache package.json files
7
7
  class PackageRepo
8
8
  def initialize
9
- @specs ||= {}
9
+ @specs = {}
10
10
  end
11
11
 
12
12
  def specs
@@ -14,8 +14,9 @@ module CobraCommander
14
14
  end
15
15
 
16
16
  def load_linked_specs(package)
17
- package.dependencies.values.each do |spec|
17
+ package.dependencies.each_value do |spec|
18
18
  next unless spec =~ /link:(.+)/
19
+
19
20
  load_spec(File.join(package.path, "..", Regexp.last_match(1)))
20
21
  end
21
22
  end
@@ -12,12 +12,22 @@ module CobraCommander
12
12
 
13
13
  def run(command, output: $stdout, **cmd_options)
14
14
  tty = TTY::Command.new(pty: true, printer: :quiet, output: output)
15
- Bundler.with_original_env do
15
+ isolate_bundle do
16
16
  @component.root_paths.all? do |path|
17
17
  tty.run!(command, chdir: path, **cmd_options).success?
18
18
  end
19
19
  end
20
20
  end
21
+
22
+ private
23
+
24
+ def isolate_bundle(&block)
25
+ if Bundler.respond_to?(:with_unbundled_env)
26
+ Bundler.with_unbundled_env(&block)
27
+ else
28
+ Bundler.with_clean_env(&block)
29
+ end
30
+ end
21
31
  end
22
32
  end
23
33
  end
@@ -36,9 +36,9 @@ module CobraCommander
36
36
 
37
37
  def spinner(title)
38
38
  pastel = Pastel.new
39
- [":spinner #{title}", format: :bouncing,
40
- success_mark: pastel.green("[DONE]"),
41
- error_mark: pastel.red("[ERROR]")]
39
+ [":spinner #{title}", { format: :bouncing,
40
+ success_mark: pastel.green("[DONE]"),
41
+ error_mark: pastel.red("[ERROR]"), },]
42
42
  end
43
43
  end
44
44
  end
@@ -18,7 +18,7 @@ module CobraCommander
18
18
 
19
19
  private_class_method def self.extract_format(output)
20
20
  format = output[-3..-1]
21
- return format if format == "png" || format == "dot"
21
+ return format if %w[png dot].include?(format)
22
22
 
23
23
  raise ArgumentError, "output format must be 'png' or 'dot'"
24
24
  end
@@ -21,6 +21,7 @@ module CobraCommander
21
21
 
22
22
  def resolve(component_root_path)
23
23
  return root if root.root_paths.include?(component_root_path)
24
+
24
25
  components.find do |component|
25
26
  component.root_paths.include?(component_root_path)
26
27
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CobraCommander
4
- VERSION = "0.9.0"
4
+ VERSION = "0.9.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cobra_commander
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Langfeld
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2020-08-26 00:00:00.000000000 Z
13
+ date: 2020-09-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -26,6 +26,20 @@ dependencies:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
28
  version: '1.17'
29
+ - !ruby/object:Gem::Dependency
30
+ name: ruby-graphviz
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: 1.2.3
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: 1.2.3
29
43
  - !ruby/object:Gem::Dependency
30
44
  name: thor
31
45
  requirement: !ruby/object:Gem::Requirement
@@ -46,20 +60,6 @@ dependencies:
46
60
  - - ">="
47
61
  - !ruby/object:Gem::Version
48
62
  version: 0.18.1
49
- - !ruby/object:Gem::Dependency
50
- name: ruby-graphviz
51
- requirement: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - "~>"
54
- - !ruby/object:Gem::Version
55
- version: 1.2.3
56
- type: :runtime
57
- prerelease: false
58
- version_requirements: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: 1.2.3
63
63
  - !ruby/object:Gem::Dependency
64
64
  name: tty-command
65
65
  requirement: !ruby/object:Gem::Requirement
@@ -89,49 +89,49 @@ dependencies:
89
89
  - !ruby/object:Gem::Version
90
90
  version: 0.9.3
91
91
  - !ruby/object:Gem::Dependency
92
- name: bundler
92
+ name: aruba
93
93
  requirement: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '1.17'
97
+ version: 0.14.2
98
98
  type: :development
99
99
  prerelease: false
100
100
  version_requirements: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: '1.17'
104
+ version: 0.14.2
105
105
  - !ruby/object:Gem::Dependency
106
- name: rake
106
+ name: bundler
107
107
  requirement: !ruby/object:Gem::Requirement
108
108
  requirements:
109
109
  - - "~>"
110
110
  - !ruby/object:Gem::Version
111
- version: '10.0'
111
+ version: '1.17'
112
112
  type: :development
113
113
  prerelease: false
114
114
  version_requirements: !ruby/object:Gem::Requirement
115
115
  requirements:
116
116
  - - "~>"
117
117
  - !ruby/object:Gem::Version
118
- version: '10.0'
118
+ version: '1.17'
119
119
  - !ruby/object:Gem::Dependency
120
- name: rspec
120
+ name: guard-rspec
121
121
  requirement: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - "~>"
123
+ - - ">="
124
124
  - !ruby/object:Gem::Version
125
- version: '3.5'
125
+ version: '0'
126
126
  type: :development
127
127
  prerelease: false
128
128
  version_requirements: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - "~>"
130
+ - - ">="
131
131
  - !ruby/object:Gem::Version
132
- version: '3.5'
132
+ version: '0'
133
133
  - !ruby/object:Gem::Dependency
134
- name: guard-rspec
134
+ name: pry
135
135
  requirement: !ruby/object:Gem::Requirement
136
136
  requirements:
137
137
  - - ">="
@@ -145,47 +145,47 @@ dependencies:
145
145
  - !ruby/object:Gem::Version
146
146
  version: '0'
147
147
  - !ruby/object:Gem::Dependency
148
- name: aruba
148
+ name: rake
149
149
  requirement: !ruby/object:Gem::Requirement
150
150
  requirements:
151
151
  - - "~>"
152
152
  - !ruby/object:Gem::Version
153
- version: 0.14.2
153
+ version: '10.0'
154
154
  type: :development
155
155
  prerelease: false
156
156
  version_requirements: !ruby/object:Gem::Requirement
157
157
  requirements:
158
158
  - - "~>"
159
159
  - !ruby/object:Gem::Version
160
- version: 0.14.2
160
+ version: '10.0'
161
161
  - !ruby/object:Gem::Dependency
162
- name: rubocop
162
+ name: rspec
163
163
  requirement: !ruby/object:Gem::Requirement
164
164
  requirements:
165
- - - '='
165
+ - - "~>"
166
166
  - !ruby/object:Gem::Version
167
- version: 0.48.1
167
+ version: '3.5'
168
168
  type: :development
169
169
  prerelease: false
170
170
  version_requirements: !ruby/object:Gem::Requirement
171
171
  requirements:
172
- - - '='
172
+ - - "~>"
173
173
  - !ruby/object:Gem::Version
174
- version: 0.48.1
174
+ version: '3.5'
175
175
  - !ruby/object:Gem::Dependency
176
- name: pry
176
+ name: rubocop
177
177
  requirement: !ruby/object:Gem::Requirement
178
178
  requirements:
179
- - - ">="
179
+ - - '='
180
180
  - !ruby/object:Gem::Version
181
- version: '0'
181
+ version: 0.88.0
182
182
  type: :development
183
183
  prerelease: false
184
184
  version_requirements: !ruby/object:Gem::Requirement
185
185
  requirements:
186
- - - ">="
186
+ - - '='
187
187
  - !ruby/object:Gem::Version
188
- version: '0'
188
+ version: 0.88.0
189
189
  description: |
190
190
  Tools for working with Component Based Rails Apps (see http://shageman.github.io/cbra.info/).
191
191
  Includes tools for graphing the components of an app and their relationships, as well as selectively