Awesome
NOTE: project discontinued
Cuttle is a standalone application that aims to be the simplest way to use ClojureScript. It provides a user-friendly interface, allowing you to build projects by clicking a button, and to see meaningful warnings and errors at a glance. In a way, it provides the "builder" parts of an IDE without making you leave your favorite editor.
<a href="https://raw.githubusercontent.com/oakmac/cuttle/master/readme-img/screenshots/2015-01-27-init.png"><img src="readme-img/screenshots/2015-01-27-init.png" width="350px"></a> <a href="https://raw.githubusercontent.com/oakmac/cuttle/master/readme-img/screenshots/2015-01-27-errors.png"><img src="readme-img/screenshots/2015-01-27-errors.png" width="350px"></a>
Under the hood, Cuttle is not hiding a lot of magic from you. It uses standard ClojureScript workflow tools to perform its operations. It uses Leiningen with the lein-cljsbuild plugin listed in your project.clj, and the mies template for creating new projects. Thus, it should produce the same expected behavior as these standard tools.
Cuttle is itself a ClojureScript application :) (running on a Node/Chromium framework called Atom Shell). We hope this tool encourages you to explore building ClojureScript apps for the browser, Node, and other JS-targetted platforms.
Installation
Download Cuttle v1.1:
<img src="readme-img/windows.png" height="16px"> Windows Installer<br/> <img src="readme-img/apple.png" height="16px"> Mac DMG<br/> <img src="readme-img/linux.png" height="16px"> Linux zip
(Please make sure to install a JRE >= 7)
Homebrew Cask
$ brew install caskroom/cask/brew-cask
$ brew cask install cuttle
Homebrew-cask provides a friendly homebrew-style CLI workflow for the administration of Mac applications distributed as binaries.
It's implemented as a homebrew
external command called cask
.
User Guide
- When first opening Cuttle, you will be prompted to add an existing project or to create a new one.
- Add Existing Project: If you are adding an existing project, you must
navigate the presented dialog to the project's
project.clj
file so that we can find your configured builds.- (We currently do not support cljsbuild configurations outside of the
default
:dev
profile).
- (We currently do not support cljsbuild configurations outside of the
default
- Add New Project: If you are creating a new project, you will be prompted
for a name and location for its folder.
- (The standard
lein new mies
template will be used to create the project.)
- (The standard
- Build Table: Once you have loaded a project, you will be presented with a table of build configurations available for that project. Current status of the build, along with warnings and errors will be displayed here.
- Build Button: At the top-right of the build table, you should see a build button. You can first select the dropdown arrow to specifically set which builds to compile and whether or not to automatically recompile when files change. Click the button proper to start building.
- Multiple Projects: You can add multiple projects to this workspace. The projects are treated with isolated compiler instances and can be built in parallel.
- Project Buttons: The project buttons at the top-left of the build table are also helpful for opening the project folder, re-fetching the build configs, and removing the project from the workspace.
- Notifications: The settings link at the top-right of the page currently
holds options for toggling compiler notifications
- (via Mac native Notifications, Linux
notify-send
, or Growl For Windows).
- (via Mac native Notifications, Linux
- Shutting Down: When closing the application, all compiler instances that happen to still be running are shutdown. Your configurations are saved and reloaded when re-opening the application.
Future
We welcome your ideas, bug reports, and pull requests!
With the ClojureScript tooling community rapidly growing, we hope to keep improving the user experience to integrate new workflows, while also keeping its behavior simple and predictable. Some ideas we are thinking about:
- Integration with Figwheel
- a basic REPL for experimenting
- a full project-connected REPL
- an interface for reading/modifying project.clj
- a test-runner for cljs.test
Development Setup
To setup a environment for building Cuttle:
-
One-time setup. Run from the project directory:
# linux/mac scripts/setup.sh # windows scripts/setup.bat
-
Compile LESS and ClojureScript:
grunt fresh-build
-
Launch to try it out:
grunt launch
-
Assemble a release for your OS:
grunt release
About the Name/Logo
Cuttle is named after the Cuttlefish because Shaun likes cephalopods. The logo is modeled after its uniquely shaped eye.
The first three letters of Cuttle might stand for "ClojureScript User Tool", but the last three letters don't stand for anything because Cuttle is not an acronym.
Cuttle should be capitalized like a proper noun when used in a sentence.
License
All code licensed under the terms of the MIT License.