#!/usr/bin/env ruby require 'qcmd' require 'trollop' # require 'profile' VERSION_STRING = "qcmd #{ Qcmd::VERSION } (c) 2012 Figure 53, Baltimore, MD." opts = Trollop::options do version VERSION_STRING opt :verbose, 'Use verbose mode', :default => false opt :debug, "Show full debug output, don't make changes to workspaces", :default => false opt :machine, 'Automatically try to connect to the machine with the given name', :type => :string opt :workspace, 'Automatically try to connect to the workspace with the given name', :type => :string opt :workspace_passcode, 'Use the given workspace passcode', :type => :integer opt :command, 'Execute a single command and exit', :type => :string opt :version_check, 'Check if a new version of qcmd is available and quit', :default => false end Qcmd.log_level = :info if opts[:version_check] if Qcmd.available_version if Qcmd.installed_version.to_s != Qcmd.available_version.to_s puts "You have version #{ Qcmd.installed_version }, but #{ Qcmd.available_version.to_s } is available." puts "Run `sudo gem update qcmd` to get the most recent version." else puts "You have the current version of qcmd installed." puts VERSION_STRING end else puts "We were unable to reach #{ Qcmd.rubygems_uri } to check the available qcmd version." end exit else # version check on every command line open Qcmd.while_quiet do if !Qcmd::Configuration.config['skip_version_warning'] && Qcmd.available_version known_available_version = Qcmd::Configuration.config['available_version'] if Qcmd.installed_version.to_s != Qcmd.available_version.to_s && (!Qcmd::Configuration.config['version_warning'] || Qcmd.available_version != known_available_version) # use 'puts' to make sure the message is available puts "A new version of qcmd is available! You have #{ Qcmd.installed_version }, but #{ Qcmd.available_version.to_s } is the most recent." puts Qcmd::Configuration.update('available_version', Qcmd.available_version) Qcmd::Configuration.update('version_warning', true) end else Qcmd::Configuration.update('skip_version_warning', true) end end end if opts[:verbose] Qcmd.log_level = :debug end if opts[:debug] Qcmd.log_level = :debug Qcmd.debug_mode = true end # browse local network and check for qlab + qlab workspaces Qcmd::History.load Qcmd::Network.init if !opts[:machine_given] Qcmd.ascii_qlab Qcmd.print Qcmd.print Qcmd.centered_text(VERSION_STRING) Qcmd::Network.browse_and_display opts else if Qcmd::Network::IPV4_MATCHER =~ opts[:machine] Qcmd.debug "[bin/qcmd] given machine name matches IP address pattern" elsif opts[:machine] == 'localhost' opts[:machine] = '127.0.0.1' else Qcmd.debug "[bin/qcmd] browsing network #{ opts[:machine] }" Qcmd::Network.browse end end if opts[:command_given] && !(opts[:machine_given] && opts[:workspace_given]) Qcmd.print_wrapped("if you give a command, you must also give a machine name and a workspace name to connect to") elsif opts[:command_given] && opts[:machine_given] && opts[:workspace_given] opts[:command_mode] = true end # Profiler__::start_profile Qcmd::CLI.launch opts # Profiler__::stop_profile # Profiler__::print_profile($stderr)