Class: TBM::ConfigParser
- Inherits:
-
Object
- Object
- TBM::ConfigParser
- Defined in:
- lib/TBM/config_parser.rb
Constant Summary collapse
- CONFIG_FILE =
The configuration file before expansion
'~/.tbm'- EXPANDED_CONFIG_FILE =
The configuration file used for parsing config.
File.( CONFIG_FILE )
- GATEWAY_PATTERN =
Pattern for Gateway Server with Optional Username
/^([^@]+)(@([^@]+))?$/- HOSTPORT_PATTERN =
Pattern for a tunnel with a remote host followed by a port (example.com:3333)
/^([a-zA-Z0-9\.\-]+):(\d{1,5})$/- PORTHOSTPORT_PATTERN =
Pattern for a tunnel with a remote host and local and remote ports (1234:example.com:4321)
/^(\d{1,5}):([a-zA-Z0-9\.\-]+):(\d{1,5})$/- PORTPORT_PATTERN =
Pattern for a tunnel with a local port and a gateway port (1234:4321)
/^(\d{1,5}):(\d{1,5})$/- PORT_PATTERN =
Pattern for a tunnel with a single port to be used client/server to forward to the gateway (1234)
/^\d{1,5}$/- TARGET_NAME_PATTERN =
Pattern for a target with aliases defined in the target name
/^ ([A-Za-z0-9\.\-\[\]\#]+) # name (\s*\(\s* # optional parenthesized aliases ([A-Za-z0-9\.\-\[\]\#]+\s* # first alias (,\s*[A-Za-z0-9\.\-\[\]\#]+\s*)*) # repeating alias pattern with commas \))?\s*$/x
Class Method Summary collapse
-
.parse ⇒ Config
Parses the tunnel boring machine configuration to get a list of targets which can be invoked to bore tunnels.
Class Method Details
.parse ⇒ Config
Parses the tunnel boring machine configuration to get a list of targets which can be invoked to bore tunnels.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/TBM/config_parser.rb', line 41 def self.parse config = Config.new if File.file? EXPANDED_CONFIG_FILE config_data = YAML.load_file( EXPANDED_CONFIG_FILE ) case config_data when Hash parse_gateways( config_data, config ) if config_data.is_a? Hash else config.errors << "Cannot parse TBM configuration of type: #{config_data.class}" end else config.errors << "No configuration file found. Specify your tunnels in YAML form in: #{CONFIG_FILE}" end return config rescue Psych::SyntaxError => pse config.errors << "TBM config is invalid YAML: #{pse}" return config end |