# File lib/rudy/config/objects.rb, line 92
 92:     def postprocess
 93:       return false if @@processed
 94:       @@processed = true  # Make sure this runs only once
 95: 
 96:       # Parses:
 97:       # commands do
 98:       #   allow :kill 
 99:       #   allow :custom_script, '/full/path/2/custom_script'
100:       #   allow :git_clone, '/usr/bin/git', 'clone'
101:       # end
102:       # 
103:       # * Tells Routines to force_array on the command name.
104:       # This is important b/c of the way we parse commands 
105:       self.allow.each do |cmd|
106:         cmd, *args = *cmd
107:         
108:         ## Currently disabled
109:         ##raise AlreadyDefined.new(:commands, cmd) if @@allowed.member?(cmd)
110:         ##@@allowed << cmd
111:         
112:         # We can allow existing commands to be overridden but we
113:         # print a message to STDERR so the user knows what's up.
114:         if Rye::Cmd.can?(cmd)
115:           Rudy::Huxtable.ld "Redefining #{cmd}" if Rudy::Huxtable.global.verbose > 2
116:         end
117:         
118:         if args.last.is_a?(Proc)
119:           block = args.pop
120:           Rye::Cmd.add_command(cmd, nil, *args, &block)
121:         else
122:           # If no path was specified, we can assume cmd is in the remote path so
123:           # when we add the method to Rye::Cmd, we'll it the path is "cmd".
124:           path = args.shift || cmd.to_s
125:           
126:           raise PathNotString.new(:commands, cmd) if path && !path.is_a?(String)
127:           
128:           Rye::Cmd.add_command cmd, path, *args
129:           
130:         end
131:         
132:         
133:         ## We cannot allow new commands to be defined that conflict use known
134:         ## routines keywords. This is based on keywords in the current config.
135:         ## NOTE: We can't check for this right now b/c the routines config
136:         ## won't necessarily have been parsed yet. TODO: Figure it out!
137:         ##if Caesars.known_symbol_by_glass?(:routines, cmd)
138:         ##  raise ReservedKeyword.new(:commands, cmd)
139:         ##end
140:         
141:       end
142:   
143:       ## NOTE: We now process command blocks as Procs rather than individual commands.
144:       ## There's currently no need to ForceRefresh here
145:       ##raise Caesars::Config::ForceRefresh.new(:routines)
146:     end