Esto es más que interesante. Es la lexe. Gracias gracias
Respecto del # una pregunta: ¿Funciona igual si ponemos dos seguidas en la primera línea, o sea ##? Lo digo porque de esta forma estaría solucionado. Bastaría con que la secuencia ## al principio de una línea fuera interpretada como //.
Si no, pues tampoco es ningún problema hacer la excepción de que # no se interprete como una directiva de preprocesador si está en la primera línea (no vacía) del script, sino como un comentario.
Respecto del path al ejecutable de PI, no veo mayor problema. Al fin y al cabo, eso pasa también con #!/bin/bash por ejemplo. No cuesta nada crear un enlace simbólico al ejecutable de PI en /bin o /usr/bin, por ejemplo, con lo cual asunto resuelto.
Por lo demás, no veo mayores problemas. La única modificación "importante" es que cuando PI encuentra un .scp o un .js en la línea de comandos lo que hace ahora es cargarlo en Script Editor. Habría que cambiar eso para que lo ejecutara directamente. Por otra parte, me parece bastante más lógico que sea así.
El tema de las imágenes es más complicado, pero tampoco mucho. Al invocar PI indirectamente de la forma que dices:
./script.scp *.jpg
o directamente, que es lo mismo:
./PixInsight script.scp *.jpg
va a ocurrir lo siguiente:
- PI se va a inicializar de la manera habitual, va a cargar los módulos y a desplegar toda la interfaz gráfica.
- PI va a cargar todas las imágenes *.jpg y las va a colocar en ventanas, de la forma habitual.
- Después va a ejecutar el script script.scp
Esto significa que no va a existir una relación directa entre las imágenes especificadas en línea de comandos y el script. El script tendría que hacer algo como:
var myImages = ImageWindow.wndows;
nada más empezar, para saber qué imágenes están abiertas, y procesarlas.
Entonces falta algo para que este tinglado funcione como se espera, ¿no? Porque cuando el script termine, PI seguirá abierto normalmente. Esto no es lo que se supone que tendría que pasar.
Podríamos añadir un método al PJSR (no sé muy bien dónde) para que un script pueda terminar la ejecución de PI. Por supuesto, esto no sirve:
Console.execute( "exit" );
porque requiere permisos para ejecutar comandos desde un script, lo cual es un problema de seguridad (por defecto está desactivado).
Hmmm, esto tiene muy buena pinta. ¿Cómo lo ves?