Skip to content

JamesTFarrington/roswell

 
 

Repository files navigation

Roswell - Common Lisp environment setup Utility.

Build Status Circle CI Build status Quicklisp

Roswell started as a command line tool to install and manage Common Lisp implementations damn easily. It now has evolved into a fullstack environment for common lisp web development, testing, code sharing and app distribution which might push the CL community to a whole new level.

This software is still beta. Basic interfaces are fixed, we believe it works well on Unix-like platforms like Linux, Mac OS X and FreeBSD, but some parts are not implemented, not stable on other OSes yet.

Checkout issue lists if you have interest in what's lacking.

Installation, Dependency & Usage

See our github wiki. We provide prebuilt binaries for homebrew on OSX, AUR on Arch and also on Windows.

Features

Feature comparison is available!

  • Implementation Manager (similar to CIM)
  • Scripting environment (similar to cl-launch)
  • Building utility (similar to buildapp)
  • Novel : Easier setup for initializing a script
  • Novel : Better integration to the command-line interface (Bash completion, etc)
  • Novel : Infrastructure for bundling/installing the scripts to/from a quicklisp system
  • Novel : Better support for Windows environment (tested exhaustively)
  • Novel : Better integration to CI environment (e.g. Travis-CI, CircleCI, Coverall)

Usage

Roswell has git-like subcommands which resemble that of cl-launch, buildapp and CIM.

$ ros
Usage: ros [OPTIONS] [Command arguments...]
Usage: ros [OPTIONS] [[--] script-path arguments...]

Commands:
    install  Install archive and build it for roswell environment
    config   Get and set options
    setup    Initial setup
    version  Show the roswell version information
    help     Show Command help
    run      Run repl
    use      change default implementation
    init     create new ros script
    dump     Dump image for faster startup or Make Executable
    delete   Delete installed implementations
    list     List Information
    emacs    launch emacs with slime
    build

Options:
    -w CODE     --wrap CODE          shell wrapper CODE to run in roswell
    -m IMAGE    --image IMAGE        build from Lisp image IMAGE
    -L NAME     --lisp NAME          try use these LISP implementation
    -l FILE     --load FILE          load lisp FILE while building
    -S X        --source-registry X  override source registry of asdf systems
    -s SYSTEM   --system SYSTEM      load asdf SYSTEM while building
                --load-system SYSTEM same as above (buildapp compatibility)
    -p PACKAGE  --package PACKAGE    change current package to PACKAGE
    -sp SP      --system-package SP  combination of -s SP and -p SP
    -e FORM     --eval FORM          evaluate FORM while building
                --require MODULE     require MODULE while building
    -q          --quit               quit lisp here
    -r FUNC     --restart FUNC       restart from build by calling (FUNC)
    -E FUNC     --entry FUNC         restart from build by calling (FUNC argv)
    -i FORM     --init FORM          evaluate FORM after restart
    -ip FORM    --print FORM         evaluate and princ FORM after restart
    -iw FORM    --write FORM         evaluate and write FORM after restart
    -F FORM     --final FORM         evaluate FORM before dumping IMAGE
    -R          --rc                 try read /etc/rosrc, ~/.roswell/init.lisp
    +R          --no-rc              skip /etc/rosrc, ~/.roswell/init.lisp
    -Q          --quicklisp          use quicklisp (default)
    +Q          --no-quicklisp       do not use quicklisp
    -v          --verbose            be quite noisy while building
                --quiet              be quite quiet while building (default)
                --test               for test purpose

Managing/Installing Several Lisp Installations

$ ros install sbcl-bin      # default sbcl
$ ros install sbcl          # The newest released version of sbcl
$ ros install ccl-bin       # default prebuilt binary of ccl
$ ros install sbcl/1.2.0    # A specific version of sbcl
$ ros list installed sbcl   # Listing the installed implementations
$ ros run -- --version      # check which implementation is used
SBCL 1.2.15
$ ros use sbcl/1.2.3        # change the default implementation

The list of supported implementation is growing further!

Scripting with Roswell

$ ros init
Usage: ros init [template] name [options...]

$ ros init fact
Successfully generated: fact.ros

$ emacs fact.ros
## editing the fact.ros ...

$ cat fact.ros
#!/bin/sh
#|-*- mode:lisp -*-|#
#|
exec ros -Q -- $0 "$@"
|#

(defun fact (n)
  (if (zerop n)
      1
      (* n (fact (1- n)))))

(defun main (n &rest argv)
  (declare (ignore argv))
  (format t "~&Factorial ~D = ~D~%" n (fact (parse-integer n))))

$ ./fact.ros 10
Factorial 10 = 3628800

Chef recipe for roswell

@Rudolph-Miller is providing a Chef recipe for setting roswell up.

Roswell with CircleCI

@fukamachi use Roswell with CircleCI.

Why we named it 'roswell'?

From ‘made with secret alien technology’.

I felt making it easier to use Lisp for people is a kind of making opportunity for humanbeings to mingle with alien technology. I recall ‘roswell incident’ by the concept. I'm not sure what you feel.

See Also

  • keens/cim : similar project that is implemented in shellscript.I motivated to implement roswell by seeing this project.
  • cl-launch : influenced by the project of command line parameters design.

Author

SANO Masatoshi (snmsts@gmail.com)

Contributors

Special Thanks to

Project

License

Licensed under the MIT License.

About

intend to be a lisp installer and launcher for major environment that just work.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 50.7%
  • Common Lisp 45.4%
  • Shell 3.2%
  • HTML 0.7%