class CommandLineArguments

Attributes

directory_concrete_builders[R]
output_directory[R]
source[R]
uri_resource[R]

Public Instance Methods

run() click to toggle source
# File lib/command_line/command_line_arguments.rb, line 10
def run
    program :name, 'Create PowerDevs topology'
    program :version, '0.0.1'
    program :description, 'Tool for retrieving topologies from a specific target and serialize it into a specific output format'
    program :help, 'Author', 'Andrés Laurito && Matias Bonaventura'

    my_command_line_argument = self 

    my_command = command :source do |c|
      c.syntax = 'Topologygenerator source [OPTIONS]'
      c.summary = 'Specify the name of the source from where to retrieve the topology, the output directory, 
      the URI used to get the topology and the directory of where the builders are located.'
      c.description = 'Specify the data source from where the topology should be retrieved
      An example of use: Topologygenerator source -n ONOS -o output -u http://127.0.0.1:8181/onos/v1/ -d builders_examples/ruby_builders
      By default, the option is set in CUSTOM.
      By default, the output will be written in a file called my_topology'
      c.example 'Set ONOS as source', 'Topologygenerator source -n ONOS'
      c.example 'Set CUSTOM as source', 'Topologygenerator source -n CUSTOM'
      c.example 'Set CUSTOM as source and called the output file my_file', 'Topologygenerator source -n MOCK -o my_file.txt'
      c.option '-n', '--name NAME', String, 'Specify the source name'
      c.option '-o', '--outDir NAME', String, 'Specify the output directory path'
      c.option '-u', '--uri NAME', String, 'Specify the uri for the source'
      c.option '-d', '--dirBuilders NAME', String, 'Specify the directory where the builders are located'
      c.action do |args, options|
        options.default :file => 'my_topology'
        options.default :outDir => 'output'
        options.default :dirBuilders => 'builders_examples/pdm_builders/PhaseI'
            new_source = options.name
        raise ArgumentError, "The source '#{new_source}' is not one of the expected. Please type source --help to more information." unless ['ONOS','OPENDAYLIGHT','CUSTOM'].include? new_source

        if new_source == 'ONOS'
            new_uri_resource = options.uri 
            new_uri_resource = ask 'http source for ONOS?:(example http://127.0.0.1:8181/onos/v1/)' unless new_uri_resource
            raise ArgumentError, "You must specify a valid http source when the option ONOS is selected. #{new_uri_resource} is not a valid one" unless new_uri_resource =~ /\A#{URI::regexp(['http', 'https'])}\z/
        elsif new_source == 'OPENDAYLIGHT'
          new_uri_resource = options.uri 
            new_uri_resource = ask 'http source for OPENDAYLIGHT?:(example http://localhost:8080/restconf/operational/network-topology:network-topology/topology/flow:1/)' unless new_uri_resource
            raise ArgumentError, "You must specify a valid http source when the option OPENDAYLIGHT is selected. #{new_uri_resource} is not a valid one" unless new_uri_resource =~ /\A#{URI::regexp(['http', 'https'])}\z/
        elsif new_source == 'CUSTOM'
            new_uri_resource = options.uri
            new_uri_resource = ask 'uri source for CUSTOM?:(example network_topologies_examples/tree_topology.rb)' unless new_uri_resource
            raise ArgumentError, "You must specify a valid uri source when the option CUSTOM is selected. #{new_uri_resource} is not a valid one" unless File.exists? new_uri_resource
        end

        @source = new_source
        @uri_resource = new_uri_resource
        @output_directory = options.outDir
        @directory_concrete_builders = options.dirBuilders
      end
    end

    run!
end