summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleix Conchillo FlaquƩ <aconchillo@gmail.com>2022-01-21 16:06:59 -0800
committerAleix Conchillo FlaquƩ <aconchillo@gmail.com>2022-01-21 16:06:59 -0800
commitcd8040b0d40a2c262a0491a498714f32663377b4 (patch)
tree34efda3e47e1c2aa6ecfe6823bef73c55f5dd9c4
parent9d856378f6e708849b1896fffe7817edf50d71cd (diff)
pass -e to evaluate guilescript as argument
For example: gas -e '(.playpause (Application "Spotify"))'
-rw-r--r--NEWS9
-rwxr-xr-xgas22
2 files changed, 21 insertions, 10 deletions
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..20bea1f
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,9 @@
+* Version 0.1.0 (??, 2022)
+
+ - Added trivial Spotify example.
+
+ - You can now evaluate code with `-e` argument.
+
+* Version 0.0.0 (Jan 21, 2022)
+
+ - Initial release.
diff --git a/gas b/gas
index bbeb914..ac5c2dc 100755
--- a/gas
+++ b/gas
@@ -34,26 +34,28 @@ exec guile -e "(@@ (gas) main)" -s "$0" "$@"
#:use-module (ice-9 textual-ports)
#:use-module (language guilescript compile))
-(define (compile-gas filename)
- (let ((js (compile-file filename))
- (port (mkstemp "/tmp/gas-XXXXXX")))
+(define (run-osascript js)
+ (let* ((port (mkstemp "/tmp/gas-XXXXXX"))
+ (tmpfile (port-filename port)))
(chmod port #o700)
(put-string
port
(string-append "#!/usr/bin/osascript -l JavaScript\n\n" js))
- port))
-
-(define (run-gas filename)
- (let* ((port (compile-gas filename))
- (tmpfile (port-filename port)))
(close-port port)
(system tmpfile)
(delete-file tmpfile)))
+(define (run-string str)
+ (run-osascript (compile (call-with-input-string str read-syntax))))
+
+(define (run-file filename)
+ (run-osascript (compile-file filename)))
+
(define main
(match-lambda
+ ((_ "-e" str) (run-string str))
+ ((_ filename) (run-file filename))
((_)
(display "Usage: gas filename.gs")
(newline)
- (exit 1))
- ((_ filename) (run-gas filename))))
+ (exit 1))))