Emacs Eask
GitHub Discord Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle 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")

[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

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 Eldev project, you can convert Eldev-file to Eask-file:

$ eask init --from eldev /path/to/Eldev

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

$ eask init --from keg /path/to/Keg
πŸ’‘ 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.

Alias: pack

$ eask package [DESTINATION]

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

πŸ” eask compile

Byte-compile .el 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 recompile

Byte-recompile .el files.

$ eask recompile [FILES..]
πŸ’‘ Similar to eask compile, but it will also remove old .elc files before compiling.

πŸ” 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 bump

Bump version for your project and/or Eask-file.

$ eask [GLOBAL-OPTIONS] bump [LEVELS..]
πŸ’‘ Argument [LEVELS..] accepts major, minor and/or patch!

πŸ” 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 concat

Concatenate all Emacs Lisp files into one file.

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

πŸ” eask loc

Print LOC information.

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

🚩 Documentation

Commands used to build documentation site.

πŸ” eask docs

Build documentation.

$ eask [GLOBAL-OPTIONS] docs [NAMES..]

🚩 Execution

Commands allow you to execute on top of the Eask core.

Basically, this allows 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 repl

Start the Elisp REPL.

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

Alias: ielm

πŸ” eask run script

Run the script.

$ eask [GLOBAL-OPTIONS] run script [NAMES..]

πŸ” eask run command

Run the command.

Alias: cmd

$ eask [GLOBAL-OPTIONS] run command [NAMES..]

πŸ” 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 test ert

Create a new test project for the ert tests.

$ eask [GLOBAL-OPTIONS] generate test ert [NAMES..]

πŸ” eask generate test ert-runner

Create a new test project for the ert-runner.

$ eask [GLOBAL-OPTIONS] generate test ert-runner [NAMES..]

πŸ” eask generate test buttercup

Create a new Buttercup setup for the project.

$ eask [GLOBAL-OPTIONS] generate test buttercup

πŸ” eask generate test ecukes

Create a new Ecukes setup for the project.

$ eask [GLOBAL-OPTIONS] generate test ecukes

πŸ” 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.

Alias: remove

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

List all links.

$ eask [GLOBAL-OPTIONS] link list

🚩 Cleaning

Delete various files produced during building.

πŸ” eask clean workspace

Delete .eask from the current workspace.

Alias: .eask

$ 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

πŸ” 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.

Alias: distribution

$ eask [GLOBAL-OPTIONS] clean dist

πŸ” 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

Alias: everything

$ eask [GLOBAL-OPTIONS] clean all

🚩 Linting

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.

Alias: lint relint

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

🚩 Testing

Run regression/unit tests.

πŸ” 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

Run ert tests.

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

πŸ” eask test ert-runner

Run ert test using ert-runner.

$ eask [GLOBAL-OPTIONS] test ert-runner

πŸ” eask test buttercup

Run buttercup tests.

$ eask [GLOBAL-OPTIONS] test buttercup

πŸ” eask test ecukes

Run ecukes tests.

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

πŸ” eask test melpazoid

Run melpazoid tests.

$ eask [GLOBAL-OPTIONS] test melpazoid [DIRECTORIES..]
πŸ’‘ If [DIRECTORIES..] is not passed in; it will use the current workspace instead.

🚩 Formatting

Commands that formats your Emacs source files.

πŸ” eask format elisp-autofmt

Run elisp-autofmt formatter.

$ eask [GLOBAL-OPTIONS] format elisp-autofmt [FILES..]

πŸ” eask format elfmt

Run elfmt formatter.

$ eask [GLOBAL-OPTIONS] format elfmt [FILES..]

🚩 Control DSL

List of commands that control DSL.

πŸ” eask source add

Add an archive source.

$ eask [GLOBAL-OPTIONS] source add <NAME> [URL]

πŸ” eask source delete

Remove an archive source.

Alias: remove

$ eask [GLOBAL-OPTIONS] source delete <NAME>

πŸ” eask source list

List all source information.

$ eask [GLOBAL-OPTIONS] source list
πŸ’‘ This command is the same as $ eask archives!

🚩 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 analyze

Lint an Eask-file.

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

Example:

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

For more detail, run eask analyze --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.