Emacs Eask
GitHub Discord Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage
Edit page

πŸšͺ Introduction

Eask was built to use as a package development tool in your Elisp packages. But now, Eask supports various types of Emacs Lisp tasks. It can be used in three major ways:

  1. Dev tool for Elisp packages
  2. Dependency management for your configuration
  3. Run elisp programs for all other purposes

So what are the major differences between Eask and other build tools like Cask, makem.sh, and Eldev, other than the things above?

Good question! Eask is more than a build tool now, it can be used for various purposes! But here are Eask aims to be:

  • Consistent enough to sandbox across all systems
  • General enough to have Emacsers frequently used commands (byte-compile, checkdoc, etc)
  • Robust enough to provide useful results even in the presence of user errors
  • Dependency-free so that the tool can be run on any platform

P.S. See Why Eask? for more detailed information.

❓ Why Eask?

Eask has the same philosophy as Cask, see their site Why Cask? to understand why you should use Eask (or Cask).

Many tools like Cask, makem.sh, or Eldev don’t “really” support Windows. Cask has dropped support for Legacy Windows, makem.sh runs on bash, Eldev does support Windows, but the author doesn’t use it on Windows (not having full tests, see their CI workflows). Eask aims to adapt all platforms, including Linux, macOS, and Windows. It focuses on the cross-platform capability and the consistency between each OS. If Eask works on your machine, then it will work on any platform.

Here are our suggestions; if you plan to work on an OS-specific package (never going to other platforms), go for other tools. On the other hand, Eask aims to provide the best consistency between each OS. Alternatively, if you want to learn a tool that works everywhere, Eask is one of the best choices.

βš–οΈ Comparisons

The table was compiled by reading these projects’ documentation and source code, but the author is not an expert on these tools. Corrections are welcome.

πŸ” Project Wise

The table shows what technology has been chosen by their author and how the project is being constructed. Furthermore, what technical decisions have they made? Drop support? Project’s layout? Etc.

EaskCaskEldevmakem.sh
bin folderbinary, bash, batbash, batbash, bat, ps1bash
Cross-Platformβœ…βŒ, no Windows supportβœ…βŒ, no Windows support
Emacs version26.1+24.5+24.4+26.1+
Size9,000+ lines3,000+ lines8,000+ lines1,200+ lines
Executableβœ…βŒβŒβŒ
Pure Elisp❌, JavaScriptβœ…βœ…βœ…
CLI Parseryargscommanderbuilt-inbuilt-in
πŸ’‘ makem.sh has a good comparisons document as well, visit their site

πŸ” Feature Wise

This is the feature comparison between each tool. Every tool has its advantages; choose the right tool that works for you!

If the features are not listed below, either it is forgotten or simply considered too essential, so every tool has it; hence we don’t add them to the list.

EaskCaskEldevmakem.sh
Elisp configurationβœ…, DSL is optional❌, DSL onlyβœ…, pure elisp❌
Handle archives failureβœ…, see archives❌❌❌
create project, etcβœ…βŒβŒβŒ
link local dependenciesβœ…βœ…βœ…βŒ
exec programβœ…βœ…βŒβŒ
eval expressionsβœ…βœ…βœ…βŒ
emacs executionβœ…βœ…βŒβŒ
Support dockerβœ…βŒβœ…βŒ
Built-in lintersβœ…βŒβœ…βŒ
Built-in testsβœ…βŒβœ…βŒ
Run scriptβœ…βŒβŒβŒ
Self-defined commandsβœ…βŒβœ…βŒ
Subcommandβœ…βŒβŒβŒ

πŸ“° News

  • 0.9.x - Improve UX in general
  • 0.8.x - Add link command
  • 0.7.x - Fix default-directory isn’t honored by -g option
  • 0.6.x - You can now use eask create to create an Elisp project
  • 0.5.x - Handle error for failed archive
  • 0.4.x - Add color logger
  • 0.3.x - Add verbosity level and timestamps
  • 0.2.x - Done basic error handling with exit code at the end of executions
  • 0.1.39 - Use spawn instead exec; now messages will be printed immediately
  • 0.1.x - Project bare-bones are pretty much complete!

πŸ“ Todo list

πŸ” Core commands

  • [FEAT] Add publish command; to publish the package to the eask archive?

πŸ” Eask-file commands

  • N/A

πŸ“‚ Underlying Projects

The design of Eask was greatly influenced by the following projects:

  • Cask - Project management tool for Emacs
  • makem.sh - Makefile-like script for building and testing Emacs Lisp packages
  • epm - Emacs Package Manager
  • Eldev - Elisp Development Tool