Config/Install/Deploy/Run:
   target host
   remote_cmd_prefix - ssh user@bla sudo foo?????
   remote_cp_prefix - cp statt scp oder so

   debug -> env für alles += __debug


Storage/Metaobject/Tree? == Path?
   base_dir?
   nimmt objekte

   Sammelt Objekte

   Ist prepared hier?

Object
   "Infos" / Datenhalde

   Base_Dir-Abhängigkeit? - wo

   out_dir - wo speichern

   nur eigenes verzeichnis interessant?
      -> nicht für shell code / aka gencode!
      -> __global abhängigkeit

   object.gencode()?

   hast du type-explorer?
      ja?
         führe JEDEN remote aus
         speichere ausgabe in object
      nein:
         fertig
   hast du gencode-{local,remote}?
      ja?
         führe local oder remote aus
         speichere ausgabe in s/^gen//
      nein:
         fertig
      
   hast du code-{local,remote}?
      ja?
         führe local oder remote aus
      nein:
         fertig

   ich habe ...
      object_id
      type
         type.singleton() == False -> require object_id
      parameter gegeben
      requirements / order

   type_explorer := methode zum ausführen?

   cdist.object.Object(type, id)

   methoden:
      gen_code
      code
      run_manifest
         manifest == ort

Type
   singleton: ja / nein
   install: ja / nein
   type_explorer := liste

   optional_parameter
   required_parameter

   TypeExplorer 
      verwandt oder == explorer
      Verwandschaft klären!

   sehr abhängig von base_dir!</behauptung :)>
      - welche gibt es?
      - was für optionen haben sie

   cdist.type.Type("/path/to/type")
      Tree/Path vieh, das liste von $_ speichert
      Einfach iterieren



Explorer
   execute(env)
      env == __explorer -> nur im explorer

z.B. BaseExplorer oder andersherum GlobalExplorer

Manifest

Exec
   wrapper um auszuführen, 
   error handling,
   output redirection (variable, file, beides, socat :-)


--------------------------------------------------------------------------------

- base_dir (conf/, type, ...)
- manifest (initiale)
   $methode_mit_inhalt_von_manifest?
      run_manifest(code)
         ob sinnvoll?
      geht auch mit stdin oder datei

      stdin -> muss in tmp-datei, für sh -e?
- 
--------------------------------------------------------------------------------

save output of shell in buffer instead of displaying?
   -> freedom to decide whether to display or not!