code: def get_program(name, config, ptype="cmd", default=None):
      
      # support taking in the data dictionary
      config = config.get("config", config)
      try:
          pconfig = config.get("resources", {})[name]
          # If have leftover old
      except KeyError:
          pconfig = {}
      old_config = config.get("program", {}).get(name, None)
      if old_config:
          for key in ["dir", "cmd"]:
              if not key in pconfig:
                  pconfig[key] = old_config
      if ptype == "cmd":
          return _get_program_cmd(name, pconfig, config, default)
      elif ptype == "dir":
          return _get_program_dir(name, pconfig)
      else:
          raise ValueError("Don't understand program type: %s" % ptype)
docs: Retrieve program information from the configuration.
  
      This handles back compatible location specification in input
      YAML. The preferred location for program information is in
      `resources` but the older `program` tag is also supported.