crystal-shell
For those who want to use Crystal as shell-script language. This utility install a binary called crystal_shell
which automatically compile your script in a cache directory and call it back the next time you call it.
Crystal Shell
- During installation, will add
crystal_shell
binary into/usr/local/bin
- Create shell script adding shebang
#!/usr/bin/env crystal_shell
andchmod +x
any file you want. - Write your crystal script. Call your script through terminal.
- It's slow the first call, but it automatically compile in background with
--release
flags - Wow, blazing after few seconds as it's compiled (-:
Installation
\curl -sSL https://raw.githubusercontent.com/anykeyh/crystal-shell/master/install.sh | bash -s stable
Maintenance
Compiled binary version are stored in ~/.cache/crystal_shell
directory
- You can delete the files there by calling
crystal_shell --prune
- You may want to
break my heartremove the binary by callingcrystal_shell --uninstall
Example
Assuming you wrote test.sh
:
#!/bin/env crystal_shell
puts "I'm slow at first, but sooooo fast later one :D"
Then:
$ chmod +x test.sh
Finally:
$ time ./test.sh
I'm slow at first, but sooooo fast later one ;)
real 0m1.132s
user 0m1.875s
sys 0m0.424s
$ ... (wait few seconds, ok buddy?)
$ time ./test.sh
I'm slow at first, but sooooo fast later one ;)
real 0m0.034s
user 0m0.010s
sys 0m0.018s
Caveats
-
Need curl to install automatically. But curl is everywhere, except maybe on busybox?
-
Crystal-shell use MD5 hash of file you try to execute. Therefore, f your script require library, it may not catch the change in the file required.
-
This tool is mainly focused on simple scripts which should run fast.
-
I use it for managing my bash session (e.g. showing git branch, checking language of the current directory, displaying current version of the language compiler I'm using etc etc...) as performance matters when you stack up all this features ;-)
Licence
Release under DBAD Licence.
crystal-shell
- 7
- 0
- 0
- 0
- 0
- almost 6 years ago
- January 19, 2019
Thu, 21 Nov 2024 10:53:21 GMT