cobra_commander 1.0.1 → 1.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 +4 -4
- data/cobra_commander.gemspec +15 -20
- data/docs/CHANGELOG.md +10 -0
- data/lib/cobra_commander/affected.rb +6 -41
- data/lib/cobra_commander/cli/filters.rb +1 -1
- data/lib/cobra_commander/cli/output/ascii_tree.rb +2 -2
- data/lib/cobra_commander/cli/output/change.rb +12 -52
- data/lib/cobra_commander/cli.rb +21 -30
- data/lib/cobra_commander/component.rb +29 -0
- data/lib/cobra_commander/executor/buffered_printer.rb +41 -0
- data/lib/cobra_commander/executor/command.rb +22 -45
- data/lib/cobra_commander/executor/isolated_pty.rb +20 -0
- data/lib/cobra_commander/executor/output_prompt.rb +59 -0
- data/lib/cobra_commander/executor/package_criteria.rb +0 -3
- data/lib/cobra_commander/executor/run_script.rb +25 -0
- data/lib/cobra_commander/executor/script.rb +16 -30
- data/lib/cobra_commander/executor/worker_pool.rb +104 -0
- data/lib/cobra_commander/executor.rb +33 -31
- data/lib/cobra_commander/git_changed.rb +2 -2
- data/lib/cobra_commander/package.rb +5 -1
- data/lib/cobra_commander/source.rb +13 -2
- data/lib/cobra_commander/version.rb +1 -1
- metadata +48 -89
- data/.gitignore +0 -16
- data/.rspec +0 -3
- data/.rubocop.yml +0 -8
- data/Gemfile +0 -12
- data/Guardfile +0 -14
- data/Rakefile +0 -10
- data/bin/console +0 -15
- data/bin/setup +0 -8
- data/doc/dependency_decisions.yml +0 -9
- data/lib/cobra_commander/executor/execution.rb +0 -52
- data/lib/cobra_commander/executor/interactive_printer.rb +0 -53
- data/lib/cobra_commander/executor/job.rb +0 -51
- data/lib/cobra_commander/executor/markdown_printer.rb +0 -21
- data/lib/cobra_commander/executor/spinners.rb +0 -40
- data/mkdocs.yml +0 -8
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module CobraCommander
|
|
4
|
+
module Executor
|
|
5
|
+
module RunScript
|
|
6
|
+
def run_script(tty, script, path, env: {})
|
|
7
|
+
result = tty.run!(env, script, chdir: path, err: :out)
|
|
8
|
+
|
|
9
|
+
return [:error, result.out] if result.failed?
|
|
10
|
+
|
|
11
|
+
[:success, result.out]
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def run_many(collection, &block)
|
|
15
|
+
collection.lazy.map(&block)
|
|
16
|
+
.reduce do |(_, prev_output), (result, output)|
|
|
17
|
+
new_output = [prev_output&.strip, output&.strip].join("\n")
|
|
18
|
+
return [:error, new_output] if result == :error
|
|
19
|
+
|
|
20
|
+
[:success, new_output]
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -1,44 +1,30 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative "./job"
|
|
4
|
-
|
|
5
3
|
module CobraCommander
|
|
6
4
|
module Executor
|
|
7
|
-
# This is a script job. It can
|
|
5
|
+
# This is a script job. It can target any CobraCommander::Component.
|
|
8
6
|
#
|
|
9
|
-
#
|
|
10
|
-
# individual paths for each given component.
|
|
7
|
+
# Script runs the given script once for each Component#root_paths
|
|
11
8
|
#
|
|
12
|
-
# @see Script.for
|
|
13
9
|
class Script
|
|
14
|
-
include ::CobraCommander::Executor::
|
|
15
|
-
|
|
16
|
-
# Returns a set of scripts to be executed on the given commends.
|
|
17
|
-
#
|
|
18
|
-
# If a component has two packages in the same path, only one script for that component will be
|
|
19
|
-
# returned.
|
|
20
|
-
#
|
|
21
|
-
# @param components [Enumerable<CobraCommander::Component>] the target components
|
|
22
|
-
# @param script [String] shell script to run from the directories of the component's packages
|
|
23
|
-
# @return [Array<CobraCommander::Executor::Script>]
|
|
24
|
-
def self.for(components, script)
|
|
25
|
-
components.flat_map(&:packages).uniq(&:path).map do |package|
|
|
26
|
-
new(package, script)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
10
|
+
include ::CobraCommander::Executor::RunScript
|
|
29
11
|
|
|
30
|
-
def initialize(
|
|
31
|
-
@package = package
|
|
12
|
+
def initialize(script)
|
|
32
13
|
@script = script
|
|
33
14
|
end
|
|
34
15
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
#
|
|
40
|
-
|
|
41
|
-
|
|
16
|
+
# Runs the script in the given component
|
|
17
|
+
#
|
|
18
|
+
# It runs the script once for each Component#root_paths. If a component has two packages in the
|
|
19
|
+
# same path, it will run the script only once.
|
|
20
|
+
#
|
|
21
|
+
# @param tty [CobraComander::Executor::IsolatedPTY] tty to execute shell scripts
|
|
22
|
+
# @param component [CobraComander::Component] target component
|
|
23
|
+
# @return [Array<Symbol, String>]
|
|
24
|
+
def call(tty, component)
|
|
25
|
+
component.around_command do |env|
|
|
26
|
+
run_many(component.root_paths) { run_script(tty, @script, _1, env: env) }
|
|
27
|
+
end
|
|
42
28
|
end
|
|
43
29
|
end
|
|
44
30
|
end
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module CobraCommander
|
|
4
|
+
module Executor
|
|
5
|
+
# @private
|
|
6
|
+
#
|
|
7
|
+
# This WorkerPooll will queue up jobs, and execute them using
|
|
8
|
+
# Worker's, each with a thread running our work loop using the
|
|
9
|
+
# given runner.
|
|
10
|
+
#
|
|
11
|
+
# - A *job* is defined by a group of arguments to be passed to the runner.
|
|
12
|
+
# - A *runner* is an object that respond to #call(tty, *args), where TTY is
|
|
13
|
+
# an instance of TTY::Command, and *args are the arguments queued in the
|
|
14
|
+
# worker pool.
|
|
15
|
+
# - The *runner* call method must return an array of [status, output]
|
|
16
|
+
# - A worker manages a thread running the job wirh runner.call and updates
|
|
17
|
+
# the job result and output.
|
|
18
|
+
#
|
|
19
|
+
class WorkerPool
|
|
20
|
+
Job = Struct.new(:name, :args) do
|
|
21
|
+
attr_reader :output, :status
|
|
22
|
+
|
|
23
|
+
def resolve!(status, output)
|
|
24
|
+
@status = status
|
|
25
|
+
@output = output
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def resolved?
|
|
29
|
+
!@status.nil?
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
class Worker
|
|
34
|
+
attr_reader :id
|
|
35
|
+
|
|
36
|
+
def initialize(id, pool)
|
|
37
|
+
@id = id
|
|
38
|
+
@pool = pool
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def kill
|
|
42
|
+
@thread&.kill
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def spawn
|
|
46
|
+
@thread = Thread.new do
|
|
47
|
+
loop { break if @pool.run_next == :exit }
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def wait
|
|
52
|
+
@thread.join
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
attr_reader :jobs
|
|
57
|
+
|
|
58
|
+
def initialize(runner:, workers:, printer:, jobs:, &name_f)
|
|
59
|
+
@tty = ::CobraCommander::Executor::IsolatedPTY.new(printer: printer)
|
|
60
|
+
@runner = runner
|
|
61
|
+
@workers = Array.new(workers) { |id| Worker.new(id, self) }
|
|
62
|
+
@jobs = []
|
|
63
|
+
@queue = Queue.new
|
|
64
|
+
|
|
65
|
+
push_all(jobs, &name_f || :describe)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def error?
|
|
69
|
+
jobs.map(&:status).any?(:error)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def push_all(jobs, &name_f)
|
|
73
|
+
jobs.each { push(name_f&.call(_1), *Array(_1)) }
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def push(name, *args)
|
|
77
|
+
Job.new(name, args).tap do |job|
|
|
78
|
+
@jobs.push(job)
|
|
79
|
+
@queue.push(job)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def start
|
|
84
|
+
@stop = false
|
|
85
|
+
@workers.each(&:spawn)
|
|
86
|
+
@queue.close
|
|
87
|
+
begin
|
|
88
|
+
@workers.each(&:wait)
|
|
89
|
+
rescue Interrupt
|
|
90
|
+
@workers.each(&:kill) if @stop
|
|
91
|
+
@stop = true
|
|
92
|
+
retry
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def run_next
|
|
97
|
+
return :exit if @stop
|
|
98
|
+
return :exit unless (job = @queue.pop)
|
|
99
|
+
|
|
100
|
+
job.resolve!(*@runner.call(@tty, *job.args))
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
@@ -1,45 +1,47 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
require_relative "executor/command"
|
|
7
|
-
require_relative "executor/spinners"
|
|
8
|
-
require_relative "executor/interactive_printer"
|
|
9
|
-
require_relative "executor/markdown_printer"
|
|
3
|
+
require "pastel"
|
|
4
|
+
require "tty-command"
|
|
5
|
+
require "tty-prompt"
|
|
10
6
|
|
|
11
7
|
module CobraCommander
|
|
12
8
|
# Execute a command on all given packages
|
|
13
9
|
module Executor
|
|
10
|
+
autoload :BufferedPrinter, "cobra_commander/executor/buffered_printer"
|
|
11
|
+
autoload :Command, "cobra_commander/executor/command"
|
|
12
|
+
autoload :OutputPrompt, "cobra_commander/executor/output_prompt"
|
|
13
|
+
autoload :IsolatedPTY, "cobra_commander/executor/isolated_pty"
|
|
14
|
+
autoload :PackageCriteria, "cobra_commander/executor/package_criteria"
|
|
15
|
+
autoload :Printers, "cobra_commander/executor/printers"
|
|
16
|
+
autoload :RunScript, "cobra_commander/executor/run_script"
|
|
17
|
+
autoload :Script, "cobra_commander/executor/script"
|
|
18
|
+
autoload :WorkerPool, "cobra_commander/executor/worker_pool"
|
|
19
|
+
|
|
14
20
|
module_function
|
|
15
21
|
|
|
16
|
-
# Executes the given jobs in an CobraCommander::Executor::
|
|
17
|
-
#
|
|
18
|
-
# This facade also allows to execute the jobs with a spinner (@see CobraCommander::Executor::Spinners) to display
|
|
19
|
-
# the execution status of each job.
|
|
22
|
+
# Executes the given jobs in an CobraCommander::Executor::WorkerPool.
|
|
20
23
|
#
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
24
|
+
# When only one job is queued, it choses the :quiet printer, to print the
|
|
25
|
+
# output as it happens.
|
|
26
|
+
# When more than one job is queued in interactive mode, it uses the :progress
|
|
27
|
+
# printer, which will display a green dot or a red F depending on the result
|
|
28
|
+
# of each script execution.
|
|
29
|
+
# If not in interactive mode, it will print the output in a buffered way to
|
|
30
|
+
# make it easier to read each output.
|
|
25
31
|
#
|
|
26
32
|
# @param jobs [Enumerable<CobraCommander::Executor::Job>] the jobs to run
|
|
27
|
-
# @param
|
|
28
|
-
# @
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
execution.wait
|
|
40
|
-
InteractivePrinter.run(execution, output) if output_mode == :interactive
|
|
41
|
-
MarkdownPrinter.run(execution, output) if output_mode == :markdown
|
|
42
|
-
end
|
|
33
|
+
# @param interactive [Boolean] prefer interactive output
|
|
34
|
+
# @see CobraCommander::Executor::WorkerPool for more options
|
|
35
|
+
def execute_and_handle_exit(jobs:, interactive: false, **, &name_f)
|
|
36
|
+
printer = if jobs.size == 1 then :quiet
|
|
37
|
+
elsif interactive then :progress
|
|
38
|
+
else
|
|
39
|
+
::CobraCommander::Executor::BufferedPrinter
|
|
40
|
+
end
|
|
41
|
+
pool = WorkerPool.new(jobs: jobs, printer: printer, **, &name_f).tap(&:start)
|
|
42
|
+
return CobraCommander::Executor::OutputPrompt.run(pool) if interactive && jobs.size > 1
|
|
43
|
+
|
|
44
|
+
exit(1) if pool.error?
|
|
43
45
|
end
|
|
44
46
|
end
|
|
45
47
|
end
|
|
@@ -9,7 +9,7 @@ module CobraCommander
|
|
|
9
9
|
|
|
10
10
|
attr_reader :source, :path, :name, :dependencies
|
|
11
11
|
|
|
12
|
-
def_delegators :source, :key
|
|
12
|
+
def_delegators :source, :key, :around_command
|
|
13
13
|
|
|
14
14
|
def initialize(source, path:, dependencies:, name:)
|
|
15
15
|
@source = source
|
|
@@ -17,5 +17,9 @@ module CobraCommander
|
|
|
17
17
|
@name = name
|
|
18
18
|
@dependencies = dependencies
|
|
19
19
|
end
|
|
20
|
+
|
|
21
|
+
def describe
|
|
22
|
+
"#{name} (#{key})"
|
|
23
|
+
end
|
|
20
24
|
end
|
|
21
25
|
end
|
|
@@ -22,8 +22,19 @@ module CobraCommander
|
|
|
22
22
|
to_a
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
# Wraps the execution of commands on this source's packages, letting the
|
|
26
|
+
# source enhance the surrounding process (e.g. Bundler isolation) and
|
|
27
|
+
# contribute environment variables to the command. The base implementation
|
|
28
|
+
# yields an empty env; plugins override it (see CobraCommander::Ruby::Bundle).
|
|
29
|
+
#
|
|
30
|
+
# @yieldparam env [Hash{String => String}] env vars to pass to the command
|
|
31
|
+
# @return the value returned by the block
|
|
32
|
+
def around_command
|
|
33
|
+
yield({})
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def each(&)
|
|
37
|
+
packages.each(&)
|
|
27
38
|
rescue Errno::ENOENT => e
|
|
28
39
|
raise Error, e.message
|
|
29
40
|
end
|
metadata
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cobra_commander
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ben Langfeld
|
|
8
8
|
- Garett Arrowood
|
|
9
9
|
- Carlos Palhares
|
|
10
|
-
autorequire:
|
|
11
10
|
bindir: exe
|
|
12
11
|
cert_chain: []
|
|
13
|
-
date:
|
|
12
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
14
13
|
dependencies:
|
|
15
14
|
- !ruby/object:Gem::Dependency
|
|
16
15
|
name: bundler
|
|
@@ -18,28 +17,14 @@ dependencies:
|
|
|
18
17
|
requirements:
|
|
19
18
|
- - ">="
|
|
20
19
|
- !ruby/object:Gem::Version
|
|
21
|
-
version:
|
|
20
|
+
version: 2.4.17
|
|
22
21
|
type: :runtime
|
|
23
22
|
prerelease: false
|
|
24
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
24
|
requirements:
|
|
26
25
|
- - ">="
|
|
27
26
|
- !ruby/object:Gem::Version
|
|
28
|
-
version:
|
|
29
|
-
- !ruby/object:Gem::Dependency
|
|
30
|
-
name: concurrent-ruby
|
|
31
|
-
requirement: !ruby/object:Gem::Requirement
|
|
32
|
-
requirements:
|
|
33
|
-
- - "~>"
|
|
34
|
-
- !ruby/object:Gem::Version
|
|
35
|
-
version: '1.1'
|
|
36
|
-
type: :runtime
|
|
37
|
-
prerelease: false
|
|
38
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
39
|
-
requirements:
|
|
40
|
-
- - "~>"
|
|
41
|
-
- !ruby/object:Gem::Version
|
|
42
|
-
version: '1.1'
|
|
27
|
+
version: 2.4.17
|
|
43
28
|
- !ruby/object:Gem::Dependency
|
|
44
29
|
name: thor
|
|
45
30
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -88,146 +73,132 @@ dependencies:
|
|
|
88
73
|
- - "~>"
|
|
89
74
|
- !ruby/object:Gem::Version
|
|
90
75
|
version: 0.23.1
|
|
91
|
-
- !ruby/object:Gem::Dependency
|
|
92
|
-
name: tty-spinner
|
|
93
|
-
requirement: !ruby/object:Gem::Requirement
|
|
94
|
-
requirements:
|
|
95
|
-
- - "~>"
|
|
96
|
-
- !ruby/object:Gem::Version
|
|
97
|
-
version: 0.9.3
|
|
98
|
-
type: :runtime
|
|
99
|
-
prerelease: false
|
|
100
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
101
|
-
requirements:
|
|
102
|
-
- - "~>"
|
|
103
|
-
- !ruby/object:Gem::Version
|
|
104
|
-
version: 0.9.3
|
|
105
76
|
- !ruby/object:Gem::Dependency
|
|
106
77
|
name: aruba
|
|
107
78
|
requirement: !ruby/object:Gem::Requirement
|
|
108
79
|
requirements:
|
|
109
|
-
- -
|
|
80
|
+
- - '='
|
|
110
81
|
- !ruby/object:Gem::Version
|
|
111
|
-
version: 0.14.
|
|
82
|
+
version: 0.14.14
|
|
112
83
|
type: :development
|
|
113
84
|
prerelease: false
|
|
114
85
|
version_requirements: !ruby/object:Gem::Requirement
|
|
115
86
|
requirements:
|
|
116
|
-
- -
|
|
87
|
+
- - '='
|
|
117
88
|
- !ruby/object:Gem::Version
|
|
118
|
-
version: 0.14.
|
|
89
|
+
version: 0.14.14
|
|
119
90
|
- !ruby/object:Gem::Dependency
|
|
120
|
-
name:
|
|
91
|
+
name: guard-rspec
|
|
121
92
|
requirement: !ruby/object:Gem::Requirement
|
|
122
93
|
requirements:
|
|
123
|
-
- -
|
|
94
|
+
- - '='
|
|
124
95
|
- !ruby/object:Gem::Version
|
|
125
|
-
version:
|
|
96
|
+
version: 4.7.3
|
|
126
97
|
type: :development
|
|
127
98
|
prerelease: false
|
|
128
99
|
version_requirements: !ruby/object:Gem::Requirement
|
|
129
100
|
requirements:
|
|
130
|
-
- -
|
|
101
|
+
- - '='
|
|
131
102
|
- !ruby/object:Gem::Version
|
|
132
|
-
version:
|
|
103
|
+
version: 4.7.3
|
|
133
104
|
- !ruby/object:Gem::Dependency
|
|
134
|
-
name:
|
|
105
|
+
name: license_finder
|
|
135
106
|
requirement: !ruby/object:Gem::Requirement
|
|
136
107
|
requirements:
|
|
137
|
-
- -
|
|
108
|
+
- - '='
|
|
138
109
|
- !ruby/object:Gem::Version
|
|
139
|
-
version: '
|
|
110
|
+
version: '7.1'
|
|
140
111
|
type: :development
|
|
141
112
|
prerelease: false
|
|
142
113
|
version_requirements: !ruby/object:Gem::Requirement
|
|
143
114
|
requirements:
|
|
144
|
-
- -
|
|
115
|
+
- - '='
|
|
145
116
|
- !ruby/object:Gem::Version
|
|
146
|
-
version: '
|
|
117
|
+
version: '7.1'
|
|
147
118
|
- !ruby/object:Gem::Dependency
|
|
148
|
-
name:
|
|
119
|
+
name: ostruct
|
|
149
120
|
requirement: !ruby/object:Gem::Requirement
|
|
150
121
|
requirements:
|
|
151
|
-
- -
|
|
122
|
+
- - '='
|
|
152
123
|
- !ruby/object:Gem::Version
|
|
153
|
-
version:
|
|
124
|
+
version: 0.6.3
|
|
154
125
|
type: :development
|
|
155
126
|
prerelease: false
|
|
156
127
|
version_requirements: !ruby/object:Gem::Requirement
|
|
157
128
|
requirements:
|
|
158
|
-
- -
|
|
129
|
+
- - '='
|
|
159
130
|
- !ruby/object:Gem::Version
|
|
160
|
-
version:
|
|
131
|
+
version: 0.6.3
|
|
161
132
|
- !ruby/object:Gem::Dependency
|
|
162
133
|
name: pry
|
|
163
134
|
requirement: !ruby/object:Gem::Requirement
|
|
164
135
|
requirements:
|
|
165
|
-
- -
|
|
136
|
+
- - '='
|
|
166
137
|
- !ruby/object:Gem::Version
|
|
167
|
-
version:
|
|
138
|
+
version: 0.14.2
|
|
168
139
|
type: :development
|
|
169
140
|
prerelease: false
|
|
170
141
|
version_requirements: !ruby/object:Gem::Requirement
|
|
171
142
|
requirements:
|
|
172
|
-
- -
|
|
143
|
+
- - '='
|
|
173
144
|
- !ruby/object:Gem::Version
|
|
174
|
-
version:
|
|
145
|
+
version: 0.14.2
|
|
175
146
|
- !ruby/object:Gem::Dependency
|
|
176
147
|
name: rake
|
|
177
148
|
requirement: !ruby/object:Gem::Requirement
|
|
178
149
|
requirements:
|
|
179
|
-
- -
|
|
150
|
+
- - '='
|
|
180
151
|
- !ruby/object:Gem::Version
|
|
181
|
-
version:
|
|
152
|
+
version: 13.0.6
|
|
182
153
|
type: :development
|
|
183
154
|
prerelease: false
|
|
184
155
|
version_requirements: !ruby/object:Gem::Requirement
|
|
185
156
|
requirements:
|
|
186
|
-
- -
|
|
157
|
+
- - '='
|
|
187
158
|
- !ruby/object:Gem::Version
|
|
188
|
-
version:
|
|
159
|
+
version: 13.0.6
|
|
189
160
|
- !ruby/object:Gem::Dependency
|
|
190
161
|
name: rspec
|
|
191
162
|
requirement: !ruby/object:Gem::Requirement
|
|
192
163
|
requirements:
|
|
193
|
-
- -
|
|
164
|
+
- - '='
|
|
194
165
|
- !ruby/object:Gem::Version
|
|
195
|
-
version:
|
|
166
|
+
version: 3.13.0
|
|
196
167
|
type: :development
|
|
197
168
|
prerelease: false
|
|
198
169
|
version_requirements: !ruby/object:Gem::Requirement
|
|
199
170
|
requirements:
|
|
200
|
-
- -
|
|
171
|
+
- - '='
|
|
201
172
|
- !ruby/object:Gem::Version
|
|
202
|
-
version:
|
|
173
|
+
version: 3.13.0
|
|
203
174
|
- !ruby/object:Gem::Dependency
|
|
204
175
|
name: rubocop
|
|
205
176
|
requirement: !ruby/object:Gem::Requirement
|
|
206
177
|
requirements:
|
|
207
178
|
- - '='
|
|
208
179
|
- !ruby/object:Gem::Version
|
|
209
|
-
version: 1.
|
|
180
|
+
version: 1.82.1
|
|
210
181
|
type: :development
|
|
211
182
|
prerelease: false
|
|
212
183
|
version_requirements: !ruby/object:Gem::Requirement
|
|
213
184
|
requirements:
|
|
214
185
|
- - '='
|
|
215
186
|
- !ruby/object:Gem::Version
|
|
216
|
-
version: 1.
|
|
187
|
+
version: 1.82.1
|
|
217
188
|
- !ruby/object:Gem::Dependency
|
|
218
189
|
name: rubocop-powerhome
|
|
219
190
|
requirement: !ruby/object:Gem::Requirement
|
|
220
191
|
requirements:
|
|
221
|
-
- -
|
|
192
|
+
- - '='
|
|
222
193
|
- !ruby/object:Gem::Version
|
|
223
|
-
version: 0.
|
|
194
|
+
version: 0.6.1
|
|
224
195
|
type: :development
|
|
225
196
|
prerelease: false
|
|
226
197
|
version_requirements: !ruby/object:Gem::Requirement
|
|
227
198
|
requirements:
|
|
228
|
-
- -
|
|
199
|
+
- - '='
|
|
229
200
|
- !ruby/object:Gem::Version
|
|
230
|
-
version: 0.
|
|
201
|
+
version: 0.6.1
|
|
231
202
|
description: |
|
|
232
203
|
Tools for working with Component Based Rails Apps (see https://cbra.info).
|
|
233
204
|
Includes tools for graphing the components of an app and their relationships, as well as selectively
|
|
@@ -241,16 +212,7 @@ executables:
|
|
|
241
212
|
extensions: []
|
|
242
213
|
extra_rdoc_files: []
|
|
243
214
|
files:
|
|
244
|
-
- ".gitignore"
|
|
245
|
-
- ".rspec"
|
|
246
|
-
- ".rubocop.yml"
|
|
247
|
-
- Gemfile
|
|
248
|
-
- Guardfile
|
|
249
|
-
- Rakefile
|
|
250
|
-
- bin/console
|
|
251
|
-
- bin/setup
|
|
252
215
|
- cobra_commander.gemspec
|
|
253
|
-
- doc/dependency_decisions.yml
|
|
254
216
|
- docs/CHANGELOG.md
|
|
255
217
|
- docs/README.md
|
|
256
218
|
- exe/cobra
|
|
@@ -263,21 +225,20 @@ files:
|
|
|
263
225
|
- lib/cobra_commander/cli/output/dot_graph.rb
|
|
264
226
|
- lib/cobra_commander/component.rb
|
|
265
227
|
- lib/cobra_commander/executor.rb
|
|
228
|
+
- lib/cobra_commander/executor/buffered_printer.rb
|
|
266
229
|
- lib/cobra_commander/executor/command.rb
|
|
267
|
-
- lib/cobra_commander/executor/
|
|
268
|
-
- lib/cobra_commander/executor/
|
|
269
|
-
- lib/cobra_commander/executor/job.rb
|
|
270
|
-
- lib/cobra_commander/executor/markdown_printer.rb
|
|
230
|
+
- lib/cobra_commander/executor/isolated_pty.rb
|
|
231
|
+
- lib/cobra_commander/executor/output_prompt.rb
|
|
271
232
|
- lib/cobra_commander/executor/package_criteria.rb
|
|
233
|
+
- lib/cobra_commander/executor/run_script.rb
|
|
272
234
|
- lib/cobra_commander/executor/script.rb
|
|
273
|
-
- lib/cobra_commander/executor/
|
|
235
|
+
- lib/cobra_commander/executor/worker_pool.rb
|
|
274
236
|
- lib/cobra_commander/git_changed.rb
|
|
275
237
|
- lib/cobra_commander/package.rb
|
|
276
238
|
- lib/cobra_commander/registry.rb
|
|
277
239
|
- lib/cobra_commander/source.rb
|
|
278
240
|
- lib/cobra_commander/umbrella.rb
|
|
279
241
|
- lib/cobra_commander/version.rb
|
|
280
|
-
- mkdocs.yml
|
|
281
242
|
homepage: http://tech.powerhrg.com/cobra_commander/
|
|
282
243
|
licenses:
|
|
283
244
|
- MIT
|
|
@@ -286,7 +247,6 @@ metadata:
|
|
|
286
247
|
homepage_uri: http://tech.powerhrg.com/cobra_commander/
|
|
287
248
|
source_code_uri: https://github.com/powerhome/cobra_commander
|
|
288
249
|
changelog_uri: https://github.com/powerhome/cobra_commander/blob/main/cobra_commander/docs/CHANGELOG.md
|
|
289
|
-
post_install_message:
|
|
290
250
|
rdoc_options: []
|
|
291
251
|
require_paths:
|
|
292
252
|
- lib
|
|
@@ -294,15 +254,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
294
254
|
requirements:
|
|
295
255
|
- - ">="
|
|
296
256
|
- !ruby/object:Gem::Version
|
|
297
|
-
version:
|
|
257
|
+
version: 3.2.0
|
|
298
258
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
299
259
|
requirements:
|
|
300
260
|
- - ">="
|
|
301
261
|
- !ruby/object:Gem::Version
|
|
302
262
|
version: '0'
|
|
303
263
|
requirements: []
|
|
304
|
-
rubygems_version: 3.
|
|
305
|
-
signing_key:
|
|
264
|
+
rubygems_version: 3.6.9
|
|
306
265
|
specification_version: 4
|
|
307
266
|
summary: Tools for working with Component Based Rails Apps
|
|
308
267
|
test_files: []
|
data/.gitignore
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/.bundle/
|
|
2
|
-
/.DS_store
|
|
3
|
-
/.yardoc
|
|
4
|
-
/Gemfile.lock
|
|
5
|
-
/_yardoc/
|
|
6
|
-
/coverage/
|
|
7
|
-
/graph.*
|
|
8
|
-
/pkg/
|
|
9
|
-
/spec/examples.txt
|
|
10
|
-
/spec/reports/
|
|
11
|
-
/spec/fixtures/app/node_modules/
|
|
12
|
-
/spec/fixtures/app/node_manifest/node_modules/
|
|
13
|
-
/spec/fixtures/app/components/*/node_modules/
|
|
14
|
-
/tmp/
|
|
15
|
-
|
|
16
|
-
.bundle
|
data/.rspec
DELETED
data/.rubocop.yml
DELETED
data/Gemfile
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
source "https://rubygems.org"
|
|
4
|
-
|
|
5
|
-
gemspec
|
|
6
|
-
|
|
7
|
-
bundler_version = ENV.fetch("BUNDLER_VERSION", "2")
|
|
8
|
-
gem "bundler", "~> #{bundler_version}"
|
|
9
|
-
|
|
10
|
-
group :cobra do
|
|
11
|
-
gem "cobra_commander-stub", path: "./spec/support/", require: "stub_source"
|
|
12
|
-
end
|