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

🚩 Commands and options


The general syntax of the eask program is:

$ eask [GLOBAL-OPTIONS] [COMMAND] [COMMAND-OPTIONS] [COMMAND-ARGUMENTS]

🚩 Creating

🔍 eask create package

Create a new elisp project with the default Eask-file and CI/CD support.

$ eask [GLOBAL-OPTIONS] create package <name>
💡 The template project is located in https://github.com/emacs-eask/template-elisp

🔍 eask create elpa

Create a new ELPA using github-elpa.

$ eask [GLOBAL-OPTIONS] create elpa <name>
💡 The template project is located in https://github.com/emacs-eask/template-elpa

🚩 Core

Often use commands that are uncategorized.

🔍 eask init

Initialize the current directory to start using Eask.

$ eask [GLOBAL-OPTIONS] init

Eask will generate the file like this:

(package "PACKAGE-NAME"
         "VERSION"
         "YOUR PACKAGE SUMMARY")

(website-url "https://example.com/project-url/")
(keywords "KEYWORD1" "KEYWORD2")

(package-file "PACKAGE-FILE")

(script "test" "echo \"Error: no test specified\" && exit 1")

(source "gnu")

(depends-on "emacs" "26.1")

If you already have a Cask project, you can convert Cask-file to Eask-file:

$ eask init --from cask /path/to/Cask

If you already have a Keg project, you can convert Keg-file to Eask-file:

$ eask init --from keg /path/to/Keg

[RECOMMENDED] If you already have an elisp project, you can convert the .el file to Eask-file:

$ eask init --from source /path/to/source.el
💡 See section Examples for more Eask-file examples!

🔍 eask info

Show information about the project or configuration.

$ eask [GLOBAL-OPTIONS] info

🔍 eask status

Display the state of the workspace.

$ eask [GLOBAL-OPTIONS] status

🔍 eask install-deps

To install all dependencies.

Alias: install-dependencies, prepare

$ eask [GLOBAL-OPTIONS] install-deps [--dev]
💡 Specify option [–dev] to install dependencies from the development scope.

🔍 eask install

To install packages.

$ eask [GLOBAL-OPTIONS] install [PACKAGES..]

Install packages by specifying arguments:

$ eask install auto-complete helm magit

Or else, it will install the package from the current development:

$ eask install

🔍 eask uninstall

To uninstall/delete packages.

$ eask [GLOBAL-OPTIONS] uninstall [PACKAGES..]

Uninstall packages by specifying arguments:

$ eask uninstall dash f s

Or else, it will uninstall the package from the current development:

$ eask uninstall

🔍 eask package

Build the package artifact.

$ eask package [DESTINATION]

If [DESTINATION] is not specified, it will generate to the /dist folder by default.

🔍 eask compile

Byte-compile files.

$ eask compile [FILES..]

Compile files by specifying arguments:

$ eask compile file-1.el file-2.el

Or compile files that are already specified in your Eask-file.

$ eask compile

🔍 eask package-directory

Print path to package directory, where all dependencies are installed.

$ eask [GLOBAL-OPTIONS] package-directory

🔍 eask path

Print the PATH environment variable of this project.

Alias: exec-path

$ eask [GLOBAL-OPTIONS] path [PATTERNS..]

Optionally, you can pass in [PATTERNS..] to perform the search.

🔍 eask load-path

Print the load path containing the dependencies of the current project.

$ eask [GLOBAL-OPTIONS] load-path [PATTERNS..]

Optionally, you can pass in [PATTERNS..] to perform the search.

🔍 eask files

Print the list of all package files.

$ eask [GLOBAL-OPTIONS] files [PATTERNS..]

If [PATTERNS..] are defined, it will display files that match that pattern.

🔍 eask recipe

Suggest a recipe format.

$ eask [GLOBAL-OPTIONS] recipe [FILES..]

🔍 eask keywords

List available keywords that can be used in the header section.

$ eask [GLOBAL-OPTIONS] keywords

🔍 eask cat

View filename(s).

The positional argument [PATTERNS..] is an array of wildcard patterns.

$ eask [GLOBAL-OPTIONS] cat [PATTERNS..]
💡 This command uses the package e2ansi to accomplish the syntax highlighting.

🔍 eask concate

Concatenate all Emacs Lisp files into one file.

$ eask [GLOBAL-OPTIONS] concate [FILES..]

🔍 eask run

Run the script.

$ eask [GLOBAL-OPTIONS] run [FILES..]

Alias: run-script

🚩 Execution

Commands allow you execute on top of Eask core.

Basically, this allow you to do anything you want!

🔍 eask load

Load Emacs Lisp files in order.

$ eask [GLOBAL-OPTIONS] load [FILES..]

🔍 eask exec

Execute the system command with the given arguments.

$ eask [GLOBAL-OPTIONS] exec [COMMAND] [ARGUMENTS ...]

🔍 eask emacs

Execute emacs with the appropriate environment.

$ eask [GLOBAL-OPTIONS] emacs [ARGUMENTS ...]

🔍 eask eval

Evaluate FORM as a lisp form.

$ eask [GLOBAL-OPTIONS] eval [FORM]

🔍 eask docker

Launch specified Emacs version in a Docker container.

$ eask [GLOBAL-OPTIONS] docker <VERSION> [ARGUMENTS ...]

For example:

$ eask docker 26.1 info

This is the same as jumping right into Emacs 26.1 (in docker) and executing eask info.

🚩 Management

Commands that help you manage your package’s dependencies.

🔍 eask archives

List out all package archives.

$ eask [GLOBAL-OPTIONS] archives

Search packages from archives.

$ eask [GLOBAL-OPTIONS] search [QUEIRES..]

🔍 eask upgrade

Upgrade all packages.

$ eask [GLOBAL-OPTIONS] upgrade

🔍 eask list

List packages.

$ eask [GLOBAL-OPTIONS] list [--depth]

🔍 eask outdated

List out all outdated packages.

$ eask [GLOBAL-OPTIONS] outdated [--depth]

🔍 eask refresh

Download package archives.

$ eask [GLOBAL-OPTIONS] refresh

🚩 Generating

Generate files that are used for the development.

🔍 eask generate autoloads

Generate autoload file.

Write a package autoloads to project-autoloads.el in the project root.

$ eask [GLOBAL-OPTIONS] generate autoloads

project is the project name, as declared in Eask-file. See Multi-file Packages (elisp) for details.

🔍 eask generate pkg-file

Generate pkg file.

Write a package descriptor file to project-pkg.el in the project root.

Alias: pkg, pkg-el

$ eask [GLOBAL-OPTIONS] generate pkg-file

project is the project name, as declared in Eask-file. See Multi-file Packages (elisp) for details.

🔍 eask generate recipe

Generate recipe file.

$ eask [GLOBAL-OPTIONS] generate recipe [DESTINATION]

If [DESTINATION] is not specified, it will generate to the /recipes folder by default.

🔍 eask generate license

Generate LICENSE file.

$ eask [GLOBAL-OPTIONS] generate license <name>

name is the type of the license, see https://api.github.com/licenses for all the choices.

💡 This command uses the package license-templates to generate ignore file.

🔍 eask generate ignore

Generate ignore file.

$ eask [GLOBAL-OPTIONS] generate ignore <name>
💡 This command uses the package gitignore-templates to generate ignore file.

🔍 eask generate workflow circle-ci

Generate CircleCI workflow yaml file.

The default filename is config.yml.

$ eask [GLOBAL-OPTIONS] generate workflow circle-ci [--file]

This will generate the yaml file under .circleci/!

🔍 eask generate workflow github

Generate GitHub Actions workflow yaml file.

The default filename is test.yml.

$ eask [GLOBAL-OPTIONS] generate workflow github [--file]

This will generate the yaml file under .github/workflow/!

🔍 eask generate workflow gitlab

Generate GitLab Runner workflow yaml file.

The default filename is .gitlab-ci.yml.

$ eask [GLOBAL-OPTIONS] generate workflow gitlab [--file]

🔍 eask generate workflow travis-ci

Generate Travis CI workflow yaml file.

The default filename is .travis.yml.

$ eask [GLOBAL-OPTIONS] generate workflow travis-ci [--file]

🚩 Linking

Link between this package and a dependency on the local filesystem. A linked dependency avoids the need to download a dependency from a remote archive. The package linked to must either have a Eask-file or a -pkg.el-file.

Links the given source directory into the package directory of this project, under the given package name.

$ eask [GLOBAL-OPTIONS] link add <name> <path>

Deletes the link for the given packages.

$ eask [GLOBAL-OPTIONS] link delete [names..]

List all links.

$ eask [GLOBAL-OPTIONS] link list

🚩 Cleaning

🔍 eask clean workspace

Delete .eask from the current workspace.

$ eask [GLOBAL-OPTIONS] clean workspace

⛔️ Don’t specify the option --config, -c, or else it will delete your entire ~/.emacs.d.

$ eask clean workspace -g

Alias: .eask

🔍 eask clean elc

Delete all .elc files. This would respect to your Eask file.

$ eask [GLOBAL-OPTIONS] clean elc

🔍 eask clean dist

Delete dist subdirectory.

$ eask [GLOBAL-OPTIONS] clean dist

Alias: distribution

🔍 eask clean autoloads

Remove generated autoloads file.

$ eask [GLOBAL-OPTIONS] clean autoloads

🔍 eask clean pkg-file

Remove generated pkg-file.

$ eask [GLOBAL-OPTIONS] clean pkg-file

🔍 eask clean log-file

Remove all generated log files.

$ eask [GLOBAL-OPTIONS] clean log-file

🔍 eask clean all

This command is the combination of all other clean commands.

  • clean workspace
  • clean elc
  • clean dist
  • clean autoloads
  • clean pkg-file
  • clean log-file
$ eask [GLOBAL-OPTIONS] clean all

Alias: everything

🚩 Linter

Commands that lint your Emacs package.

🔍 eask lint package

Run package-lint.

$ eask [GLOBAL-OPTIONS] lint package [FILES..]

🔍 eask lint checkdoc

Run checkdoc (built-in).

$ eask [GLOBAL-OPTIONS] lint checkdoc [FILES..]

🔍 eask lint elint

Run elint (built-in).

$ eask [GLOBAL-OPTIONS] lint elint [FILES..]

🔍 eask lint elisp-lint

Run elisp-lint.

$ eask [GLOBAL-OPTIONS] lint elisp-lint [FILES..]

This does respect the .dir-locals.el file! 🎉

🔍 eask lint elsa

Run elsa.

$ eask [GLOBAL-OPTIONS] lint lint elsa [FILES..]

🔍 eask lint indent

Run indent-lint.

$ eask [GLOBAL-OPTIONS] lint indent [FILES..]

🔍 eask lint keywords

Run keywords checker (built-in).

$ eask [GLOBAL-OPTIONS] lint keywords

🔍 eask lint license

Run license check.

$ eask [GLOBAL-OPTIONS] lint license

🔍 eask lint declare

Run check-declare (built-in).

$ eask [GLOBAL-OPTIONS] lint declare [FILES..]

🔍 eask lint regexps

Run relint.

$ eask [GLOBAL-OPTIONS] lint regexps [FILES..]

Alias: lint relint

🚩 Testing

🔍 eask test activate

Activate package; use to test the package activation

$ eask [GLOBAL-OPTIONS] activate [FILES..]

💡 You can pass in [FILES..] so you can test your package activation fully!

[FILES..] will be loaded after the package is activated.

🔍 eask test ert

$ eask [GLOBAL-OPTIONS] test ert [FILES..]

🔍 eask test ert-runner

$ eask [GLOBAL-OPTIONS] test ert-runner

🔍 eask test buttercup

$ eask [GLOBAL-OPTIONS] test buttercup

🚩 Utilities

Other helper commands.

🔍 eask upgrade-eask

Upgrade Eask to the latest version.

Alias: upgrade-self

$ eask [GLOBAL-OPTIONS] upgrade-eask
💡 This will only work if you install it from the source!

🔍 eask locate

Show Eask installed location.

$ eask [GLOBAL-OPTIONS] locate

🚩 Checker

Commands to check your Eask-file.

🔍 eask check-eask

Lint an Eask-file.

$ eask [GLOBAL-OPTIONS] check-eask [FILES..]

Example:

# lint all Eask-files in the current directory and subdirectories
eask check-eask
# lint specific files
eask check-eask Eask Eask.27
# lint all Eask-files in specified directory and subdirectories
eask check-eask src/
# print result as JSON
eask check-eask --json

For more detail, run eask check-eask --help.

🚩 Global Options

The following options are available on all Eask commands:

🔍 –global, -g

This will use ~/.eask/ instead of the package development environment.

This is used for other tasks. e.g., cat, etc.

$ eask -g [COMMAND]

🔍 –config, -c

This will use ~/.emacs.d/ instead of the package development environment.

This is used for doing stuff for your Emacs configuration. e.g., package management, etc.

$ eask -c [COMMAND]

🔍 –all, -a

Enable the all flag.

$ eask -a [COMMAND]

🔍 –quick, -q

Start cleanly without loading the configuration files.

$ eask -q [COMMAND]

🔍 –force, -f

Force command’s execution.

Force to uninstall the package dash even it’s a dependency from another packages.

$ eask -f [COMMAND]

🔍 –debug

Enable debug information.

This is equivalent to:

(setq debug-on-error t)

🔍 –strict

Trigger error instead of warnings.

For instance, in eask compile:

(setq byte-compile-error-on-warn t)

🔍 –allow-error

Continue the execution without killing the Emacs.

🔍 –insecure

Connect archives with HTTP instead of HTTPS.

🔍 –timestamps

Enable/Disable timestamps.

🔍 –log-level

Enable/Disable log header.

🔍 –log-file, –lf

Weather to generate log files.

🔍 –no-color

Disable color output.

🔍 –elapsed-time, –et

Show elapsed time between each operation.

🔍 –verbose, -v <integer>

Set verbosity from 0 to 5.

$ eask --verbose 4 [COMMAND]

🔍 –version

Show version number.

🔍 –help

Show help.

🚩 Proxy Options

🔍 –proxy <proxy>

Set Emacs proxy for HTTP and HTTPS:

$ eask --proxy "localhost:8888" [COMMAND]

🔍 –http-proxy <proxy>

Set Emacs proxy for HTTP only.

🔍 –https-proxy <proxy>

Set Emacs proxy for HTTPS only.

🔍 –no-proxy <pattern>

Do not use a proxy for any URL matching pattern.

<pattern>is an Emacs regular expression.