-*- org -*-

* --shell fr att ange shell source code pss --python
<2018-03-20 tis>
r anvndbart att enkelt kunna kra shell-script utan att behva
gra script exekverbara genom shebang som reffar interpretatorn.

----------------------------------------
run --shell my-pgm.sh arg1 arg2
----------------------------------------

En sdan konstruktion skulle inte vara porterbar,
och Exactly skulle behva bestmma hur en kllkodsfil troligtvis
krs av shellet.
Fr unix: "source FILE"
Fr Windows: ngot annat anpassat till CMD.EXE
* Enklare stt att testa stdout/stderr frn program
<2018-03-20 tis>
Nu krvs tv steg:
----------------------------------------
[before-assert]

file actual.txt = --stdout PROGRAM

[asert]

contents actual.txt equals <<EOF ... EOF
----------------------------------------

Vill ha:
----------------------------------------
[assert]

stdout --from PROGRAM
       equals <<EOF ... EOF
----------------------------------------
* Kra program med stdin angiven inline pss som shellets mjligheter
<2018-03-20 tis>
Dvs liknande shell:
----------------------------------------
prog arg1 arg2 <<EOF
stdin till prog
EOF
----------------------------------------

Tnker mig typ:
----------------------------------------
run PROGRAM
    <<EOF
stdin till program
EOF
----------------------------------------

Hr mste "<<EOF" skrivas p ny rad, eftersom
parsningen av PROGRAM r "rad-baserad":
  - fr shell: programmet r all text fram till radslut
  - fr pgm  : argumenten till programmet avslutas av radslut

Ev ny vxel "--stdin":
----------------------------------------
run PROGRAM
    --stdin <<EOF
stdin till program
EOF
----------------------------------------

----------------------------------------
run PROGRAM
    --stdin 'stdin till program'
----------------------------------------

* Appenda till befintlig fil
<2018-03-20 tis>

Kan vara bra d in/ut-data etc skapas frn flera delar:
----------------------------------------
file f.txt += CONTENTS
----------------------------------------

* lines-transformer fr symbol-substitution
<2018-03-20 tis>
Vill kunna anvnda symboler i strngar som ligger i separata filer.
T ex
expected-script.sql =
----------------------------------------
...
@[RELEASE]@
...
----------------------------------------

Vill infra en inbyggd lines-transformer "SUBSTITUTE_SYMBOL_REFERENCES"
som substituerar data-symboler.

Den skulle orsaka HARD_ERROR om odef symboler ptrffas och om
icke-data-symboler ptrffas.

Men vill ju ven ha validering d det r mjligt - fr filer som existerar
pre-sds.
Och det innebr att symbol-referenser tillkommer under valideringens gng.
T ex

----------------------------------------
def string MY_SYM = --file @[EXPECTED_OUTPUT_DIR]@/the-file.txt

stdout equals --file --transformed-by SUBSTITUTE_SYMBOL_REFERENCES
                     @[EXPECTED_OUTPUT_DIR]@/the-file.txt
----------------------------------------

I bda dessa fallen finns sym-reffen direkt efter parsning.
Men om valideringen av den referenses r giltig s intrder ett steg tv
d in dr filen lses in och referenser i den valideras.

En impplementation skulle frenklas av att evalueringen av symbol-vrden
flyttas till en "referens-behllare", s som jag klurat p fr att
gra mjligt att ha slumptal som strngvrden, och som ju d mste
evalueras en och endast en gng.

** Alt - alltid substituera sym-ref i externa filer
Ett alt r att alltid substituera sym-reffar i externa filer.
Men det skulle dra ner prestanda rejlt, samt ev gra det krngligare
(syntaxmssigt) att ha sym-ref-syntax i filer som inte ska substitueras.
Kan allts vara motiverat att krva att subst mste anges explicit,
ven om det r lite krngligare.
* Testa innehllet i fil mot befintlig fil som innehller symbol-referenser
 - Symbol-substitution i godtyckliga filer (fr jmfrelse)

** Lsning m lines-transformer

*** Gra det mjligt att transformera ven EXPECTED

contents ...
         equals --file --transformed-by T expected.txt

*** Ny lines-transformer fr variabelsubstitution

SUBSTITUTE_SYMBOL_REFERENCES

* Testa innehllet i fil mot symbol
 - Enklare def av stora strngar.

* DONE Gra mjligt att tilldela symbol vrde enl HERE-DOC
* Gra mjligt att lsa in innehllet i fil till symbol

def string S = (STRING|HERE-DOCUMENT|--file FILE)

Behvs steg:
 1. Validering av existens av filen
 2. Inlsning av filens innehll
 3. Validering av referenser i filen
