attach_snapon = { label = "Attach Snapon" shortcut = "as" requires_profile = true parameters = { snapon = { shortcut = "s" required = true } snapon_label = { shortcut = "sl" required = true } } expression = ` echo("Attaching snapon: " . snapon); node snapons = 'snapons'; #echo("snapons: " . node_as_string(snapons)); node snapon_node = snapons{snapon}; #echo("snapon_node: " . snapon_node); #echo("snapon_node: " . node_as_string(snapon_node)); #echo("snapon_label: " . snapon_label); if (snapon_label ne "(unspecified)") then @snapon_node{"label"} = snapon_label; # Look for the database filter parameters; and look for v.varname if they exist; and set initial_value of each parameter to the value of v.varname node attach_operations = snapon_node{"attach_operations"}; node attach_operation; foreach attach_operation attach_operations ( # echo("attach_operation: " . attach_operation); if (@attach_operation{"type"} eq "add_database_filters") then ( node filters = attach_operation{"filters"}; node filter; # Add all specified database filters foreach filter filters ( #echo("filter: " . filter); node conditions = filter{"conditions"}; node condition; foreach condition conditions ( #echo("condition: " . node_as_string(condition)); if (condition?{"parameter"} and @condition{"parameter"}) then ( string parameter_name = node_name(condition); #echo("parameter condition: " . node_as_string(condition)); if (?'v' and 'v'?{parameter_name}) then ( # echo("parameter_name " . parameter_name . " found in v: value=" . @'v'{parameter_name}); @condition{"initial_value"} = @'v'{parameter_name}; ); # if parameter_name ) # if parameter ); # foreach condition ); # foreach filter ); # if type = add_database_filters #echo(3); ); # foreach attach_operation #echo(2); #echo("NOW snapon_node: " . node_as_string(snapon_node)); node profiles = 'profiles'; node profile = profiles{internal.profile_name}; include "lib.snapon"; include "lib.profile_setup.util"; #echo("sp: " . node_as_string('sp')); node parameters = snapon_node{"parameters"}; node parameter; foreach parameter parameters ( # echo("parameter: " . node_as_string(parameter)); if (!?("sp." . node_name(parameter))) then ( error("Snapon " . snapon . " requires a parameter " . node_name(parameter) . ", specified on the command line with 'sp." . node_name(parameter) . " '"); ); string parameter_value = @("sp." . node_name(parameter)); # 2012-02-14 - GMF - If an sp.xyz option is specified as an empty string on the command line, it arrives here as two literal quotes. Change it to empty string. if (parameter_value eq '""') then parameter_value = ''; @parameter{"final_node_name"} = parameter_value; @parameter{"parameter_value"} = parameter_value; ); #echo("parameters: " . node_as_string(parameters)); attach_snapon(profile, snapon_node, snapon_label); ` } # attach_snapon