cobra_commander 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
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