Caesars
Modify the SSH command available in routines. The default set of commands is defined by Rye::Cmd (Rudy executes all SSH commands via Rye).
NOTE: We allow people to define their own keywords. It is important that new keywords do not conflict with existing Rudy keywords. Strange things may happen!
# File lib/rudy/config/objects.rb, line 77 def init # We can't process the Rye::Cmd commands here because the # DSL hasn't been parsed yet so Rudy::Config.postprocess # called the following postprocess method after parsing. end
Process the directives specified in the commands config. NOTE: This affects the processing of the routines config which only works if commands is parsed first. This works naturally if each config has its own file b/c Rudy loads files via a glob (globs are alphabetized and “commands” comes before “routines”).
That’s obviously not good enough but for now commands configuration MUST be put before routines.
# File lib/rudy/config/objects.rb, line 92 def postprocess return false if @@processed @@processed = true # Make sure this runs only once # Parses: # commands do # allow :kill # allow :custom_script, '/full/path/2/custom_script' # allow :git_clone, '/usr/bin/git', 'clone' # end # # * Tells Routines to force_array on the command name. # This is important b/c of the way we parse commands self.allow.each do |cmd| cmd, *args = *cmd ## Currently disabled ##raise AlreadyDefined.new(:commands, cmd) if @@allowed.member?(cmd) ##@@allowed << cmd # We can allow existing commands to be overridden but we # print a message to STDERR so the user knows what's up. if Rye::Cmd.can?(cmd) Rudy::Huxtable.ld "Redefining #{cmd}" if Rudy::Huxtable.global.verbose > 2 end if args.last.is_a?(Proc) block = args.pop Rye::Cmd.add_command(cmd, nil, *args, &block) else # If no path was specified, we can assume cmd is in the remote path so # when we add the method to Rye::Cmd, we'll it the path is "cmd". path = args.shift || cmd.to_s raise PathNotString.new(:commands, cmd) if path && !path.is_a?(String) Rye::Cmd.add_command cmd, path, *args end ## We cannot allow new commands to be defined that conflict use known ## routines keywords. This is based on keywords in the current config. ## NOTE: We can't check for this right now b/c the routines config ## won't necessarily have been parsed yet. TODO: Figure it out! ##if Caesars.known_symbol_by_glass?(:routines, cmd) ## raise ReservedKeyword.new(:commands, cmd) ##end end ## NOTE: We now process command blocks as Procs rather than individual commands. ## There's currently no need to ForceRefresh here ##raise Caesars::Config::ForceRefresh.new(:routines) end
Generated with the Darkfish Rdoc Generator 2.