lib/teapot/command/visualize.rb in teapot-3.0.0 vs lib/teapot/command/visualize.rb in teapot-3.1.0
- old
+ new
@@ -16,50 +16,48 @@
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-require 'samovar'
+require_relative 'selection'
require 'graphviz'
module Teapot
module Command
- class Visualize < Samovar::Command
+ class Visualize < Selection
self.description = "Generate a picture of the dependency graph."
options do
option '-o/--output-path <path>', "The output path for the visualization.", default: "dependency.svg"
option '-d/--dependency-name <name>', "Show the partial chain for the given named dependency."
end
- many :targets, "Visualize these targets, or use them to help the dependency resolution process."
-
def dependency_names
@targets || []
end
def dependency_name
@options[:dependency_name]
end
- def invoke(parent)
- context = parent.context
- selection = context.select(dependency_names)
+ def process(selection)
+ context = selection.context
chain = selection.chain
if dependency_name
provider = selection.dependencies[dependency_name]
- # TODO The visualisation generated isn't quite right. It's introspecting too much from the packages and not reflecting #ordered and #provisions.
chain = chain.partial(provider)
end
visualization = ::Build::Dependency::Visualization.new
graph = visualization.generate(chain)
if output_path = @options[:output_path]
- Graphviz::output(graph, :path => output_path)
+ Graphviz.output(graph, path: output_path, format: :svg)
+ else
+ $stdout.puts graph.to_dot
end
return graph
end
end