module Occi::Cli::OcciOpts::Helper
Constants
- ALLOWED_CONTEXT_VARS
- ATTR_BOOL_EXP
- ATTR_FLOAT_EXP
- ATTR_INVALID_EXP
- ATTR_NUM_EXP
- CONTEXT_REGEXP
- MIXIN_REGEXP
Public Class Methods
parse_action(action)
click to toggle source
# File lib/occi/cli/occi_opts/occi_opts_helper.rb, line 58 def self.parse_action(action) raise "Unknown action format #{action.inspect}! Use SCHEME#TERM or TERM!" if action.blank? parts = action.split('#') if parts.size == 2 Occi::Core::Action.new("#{parts[0]}#", parts[1]) else Occi::Core::Action.new("action#", parts.last) end end
parse_attribute(attribute)
click to toggle source
# File lib/occi/cli/occi_opts/occi_opts_helper.rb, line 41 def self.parse_attribute(attribute) ary = ATTR_REGEXP.match(attribute).to_a.drop 1 raise ArgumentError, "Attribute must always contain ATTR=VALUE pairs!" unless ary.length == 2 # type-cast the value, if necessary ary[1] = parse_attribute_value(ary[1]) ary end
parse_attribute_value(value)
click to toggle source
# File lib/occi/cli/occi_opts/occi_opts_helper.rb, line 69 def self.parse_attribute_value(value) result = value ATTR_NUM_EXP =~ value result = Regexp.last_match(:number).to_i if Regexp.last_match(:number) ATTR_BOOL_EXP =~ value result = (Regexp.last_match(:bool) == 'true' ? true : false) if Regexp.last_match(:bool) ATTR_FLOAT_EXP =~ value result = Regexp.last_match(:float).to_f if Regexp.last_match(:float) raise ArgumentError, "Failed to cast attribute value #{result.inspect}!" if ATTR_INVALID_EXP =~ result.to_s result end
parse_context_variable(cvar)
click to toggle source
# File lib/occi/cli/occi_opts/occi_opts_helper.rb, line 17 def self.parse_context_variable(cvar) ary = CONTEXT_REGEXP.match(cvar).to_a.drop 1 raise ArgumentError, "Context variables must always contain ATTR=VALUE pairs!" unless ary.length == 2 symbol = ary[0].to_sym unless ALLOWED_CONTEXT_VARS.include?(symbol) raise ArgumentError, "Only #{ALLOWED_CONTEXT_VARS.join(', ')} context " "variables are supported! #{symbol.to_s.inspect}" end context_data = ary[1] if context_data.gsub!(/^file:\/\//,'') raise "File does not exist! #{context_data.inspect}" unless File.exist? context_data context_data = File.read(context_data) end if symbol == :user_data context_data = Base64.encode64(context_data).gsub("\n", '') end [symbol, context_data.strip] end
parse_mixin(mixin)
click to toggle source
# File lib/occi/cli/occi_opts/occi_opts_helper.rb, line 51 def self.parse_mixin(mixin) parts = MIXIN_REGEXP.match(mixin).to_a.drop(1) raise "Unknown mixin format #{mixin.inspect}! Use SCHEME#TERM or SHORT_SCHEME#TERM!" unless parts.length == 2 Occi::Core::Mixin.new("#{parts[0]}#", parts[1]) end