Add simple Python executable.
authorRicardo Wurmus <rekado@elephly.net>
Sat, 1 Jun 2019 21:06:30 +0000 (23:06 +0200)
committerRicardo Wurmus <rekado@elephly.net>
Sat, 1 Jun 2019 21:06:30 +0000 (23:06 +0200)
* modules/python.in: New file.
* modules/configure.ac: Configure it.
* .gitignore: Hide generated file.

.gitignore
modules/configure.ac
modules/python.in [new file with mode: 0755]

index 30bd0f0519141dcf01c343120f8438231fa3ca6d..67a44e8e81aec61506723afbd788c35fa8113e25 100644 (file)
@@ -9,4 +9,4 @@ modules/configure
 modules/env
 modules/libtool
 modules/m4/
-
+modules/python
index 52451232cc6dcef6c284d535b7400fe4560ea2ed..9d483d0dac61f075e3b2c05395b096ff3e297fcb 100644 (file)
@@ -13,6 +13,7 @@ GUILE_PKG([3.0 2.2 2.1 2.0])
 GUILE_PROGS
  
 AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([python], [chmod +x python])
 AC_CONFIG_FILES([env], [chmod +x env])
 AC_OUTPUT
 
diff --git a/modules/python.in b/modules/python.in
new file mode 100755 (executable)
index 0000000..1dad073
--- /dev/null
@@ -0,0 +1,29 @@
+#!@GUILE@ \
+--no-auto-compile -e main -s
+!#
+
+(use-modules (ice-9 match)
+             (language python spec)
+             (language python module python)
+             (system repl common)
+             (system repl repl))
+
+(define* (main #:optional (args (command-line)))
+  (match args
+    ((_ file)
+     (let ((compiled (string-append file ".go")))
+       (compile-file file
+                     #:from python
+                     #:output-file compiled)
+       (load-compiled compiled)))
+    ((_)
+     (repl-default-option-set! 'prompt ">>> ")
+     (set! (@@ (system repl common) repl-welcome)
+           (const (display "\
+Python on Guile, version @VERSION@
+(Hit Ctrl-D to exit.)
+")))
+     (start-repl python)
+     #t)
+    (_ (format (current-error-port)
+               "usage: ~a file.py~%" this))))