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