π© Commands and options
The general syntax of the eask program is:
eask [GLOBAL-OPTIONS] [COMMAND] [COMMAND-OPTIONS] [COMMAND-ARGUMENTS]
Create a new elisp project with the default Eask-file and CI/CD support.
eask [GLOBAL-OPTIONS] create package <name>
Noteπ‘ The template project is located in https://github.com/emacs-eask/template-elisp
Create a new ELPA using github-elpa.
eask [GLOBAL-OPTIONS] create elpa <name>
Noteπ‘ The template project is located in https://github.com/emacs-eask/template-elpa
Create a new project with el-project.
eask [GLOBAL-OPTIONS] create el-project
Often use commands that are uncategorized.
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
Noteπ‘ See section Examples for more Eask-file examples!
Show information about the project or configuration.
eask [GLOBAL-OPTIONS] info
Show the workspace status.
eask [GLOBAL-OPTIONS] status
To install packages from archives or install from the workspace.
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
To install all dependencies.
Alias: install-dependencies, prepare
eask [GLOBAL-OPTIONS] install-deps [--dev]
Noteπ‘ Specify option [–dev] to install dependencies from the development scope.
Install packages from files, .tar files, or directories.
eask [GLOBAL-OPTIONS] install-file [FILES..]
Fetch and install packages directly via version control.
eask [GLOBAL-OPTIONS] install-vc [SPECS..]
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 workspace:
eask uninstall
To reinstall packages from archives.
eask [GLOBAL-OPTIONS] reinstall [PACKAGES..]
Build the package artifact.
Alias: pack
eask package [DESTINATION]
If [DESTINATION] is not specified, it will generate to the /dist folder
by default.
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
Byte-recompile .el files.
eask recompile [FILES..]
Noteπ‘ Similar toeask compile, but it will also remove old.elcfiles before compiling.
Print the path to package directory, where all dependencies are installed.
eask [GLOBAL-OPTIONS] package-directory
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.
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.
Print the list of all package files.
eask [GLOBAL-OPTIONS] files [PATTERNS..]
If [PATTERNS..] are defined, it will display files that match that pattern.
Suggest a recipe format.
eask [GLOBAL-OPTIONS] recipe [FILES..]
Display the available keywords for use in the header section.
eask [GLOBAL-OPTIONS] keywords
Bump version for your project and/or Eask-file.
eask [GLOBAL-OPTIONS] bump [LEVELS..]
Noteπ‘ Argument [LEVELS..] accepts major, minor and/or patch!
View filename(s).
The positional argument [PATTERNS..] is an array of wildcard patterns.
eask [GLOBAL-OPTIONS] cat [PATTERNS..]
Noteπ‘ This command uses the package e2ansi to accomplish the syntax highlighting.
Concatenate all Emacs Lisp files into one file.
eask [GLOBAL-OPTIONS] concat [FILES..]
Print LOC information.
eask [GLOBAL-OPTIONS] loc [FILES..]
Commands used to build documentation site.
Build documentation.
eask [GLOBAL-OPTIONS] docs [NAMES..]
Commands allow you to execute on top of the Eask core.
Basically, this allows you to do anything you want!
Load Emacs Lisp files in order.
eask [GLOBAL-OPTIONS] load [FILES..]
Execute the system command with the given arguments.
eask [GLOBAL-OPTIONS] exec [COMMAND] [ARGUMENTS ...]
Execute emacs with the appropriate environment.
eask [GLOBAL-OPTIONS] emacs [ARGUMENTS ...]
Evaluate FORM as a lisp form.
eask [GLOBAL-OPTIONS] eval [FORM]
Start an Elisp REPL.
eask [GLOBAL-OPTIONS] repl [FILES..]
Alias: ielm
Run the script.
eask [GLOBAL-OPTIONS] run script [NAMES..]
Run the command.
Alias: cmd
eask [GLOBAL-OPTIONS] run command [NAMES..]
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.
Commands that help you manage your package’s dependencies.
List out all package archives.
eask [GLOBAL-OPTIONS] archives
Search packages from archives.
eask [GLOBAL-OPTIONS] search [QUEIRES..]
Upgrade all packages from archives.
eask [GLOBAL-OPTIONS] upgrade
List all installed packages in dependency tree form.
eask [GLOBAL-OPTIONS] list [--depth]
List out all outdated packages.
eask [GLOBAL-OPTIONS] outdated [--depth]
Download descriptions of all configured package archives.
eask [GLOBAL-OPTIONS] refresh
Generate files that are used for the development.
Generate the 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.
Generate the 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.
Generate the recipe file.
eask [GLOBAL-OPTIONS] generate recipe [DESTINATION]
If [DESTINATION] is not specified, it will generate to the /recipes folder
by default.
Generate a 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.
Noteπ‘ This command uses the package license-templates to generate ignore file.
Generate an ignore file.
eask [GLOBAL-OPTIONS] generate ignore <name>
Noteπ‘ This command uses the package gitignore-templates to generate ignore file.
Create a new test project for the ert tests.
eask [GLOBAL-OPTIONS] generate test ert [NAMES..]
Create a new test project for the ert-runner.
eask [GLOBAL-OPTIONS] generate test ert-runner [NAMES..]
Create a new Buttercup setup for the project.
eask [GLOBAL-OPTIONS] generate test buttercup
Create a new Ecukes setup for the project.
eask [GLOBAL-OPTIONS] generate test ecukes
Generate the 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/!
Generate the 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/!
Generate the GitLab Runner workflow yaml file.
The default filename is .gitlab-ci.yml.
eask [GLOBAL-OPTIONS] generate workflow gitlab [--file]
Generate the Travis CI workflow yaml file.
The default filename is .travis.yml.
eask [GLOBAL-OPTIONS] generate workflow travis-ci [--file]
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>
Delete locally linked packages.
Alias: remove
eask [GLOBAL-OPTIONS] link delete [NAMES..]
List all links.
eask [GLOBAL-OPTIONS] link list
Delete various files produced during building.
Delete the .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
Delete all .elc files. This would respect to your Eask file.
eask [GLOBAL-OPTIONS] clean elc
Delete the dist directory where the build output is stored.
Alias: distribution
eask [GLOBAL-OPTIONS] clean dist
Remove the generated autoloads file.
eask [GLOBAL-OPTIONS] clean autoloads
Remove the generated pkg-file.
eask [GLOBAL-OPTIONS] clean pkg-file
Remove all generated log files.
eask [GLOBAL-OPTIONS] clean log-file
This command is the combination of all other clean commands.
clean workspaceclean elcclean distclean autoloadsclean pkg-fileclean log-file
Alias: everything
eask [GLOBAL-OPTIONS] clean all
Commands that lint your Emacs package.
Run package-lint.
eask [GLOBAL-OPTIONS] lint package [FILES..]
Run checkdoc (built-in).
eask [GLOBAL-OPTIONS] lint checkdoc [FILES..]
Run elint (built-in).
eask [GLOBAL-OPTIONS] lint elint [FILES..]
Run elisp-lint.
eask [GLOBAL-OPTIONS] lint elisp-lint [FILES..]
This does respect the .dir-locals.el file! π
Run elsa.
eask [GLOBAL-OPTIONS] lint lint elsa [FILES..]
Run indent-lint.
eask [GLOBAL-OPTIONS] lint indent [FILES..]
Run check-declare (built-in).
eask [GLOBAL-OPTIONS] lint declare [FILES..]
Run relint.
Alias: lint relint
eask [GLOBAL-OPTIONS] lint regexps [FILES..]
Run keywords checker (built-in).
eask [GLOBAL-OPTIONS] lint keywords
Run license check.
eask [GLOBAL-OPTIONS] lint license
Run org-lint on Org files.
eask [GLOBAL-OPTIONS] lint org [FILES..]
Run regression/unit tests.
Activate package; use to test the package activation
eask [GLOBAL-OPTIONS] activate [FILES..]
Noteπ‘ You can pass in [FILES..] so you can test your package activation fully!
[FILES..] will be loaded after the package is activated.
Run ert tests.
eask [GLOBAL-OPTIONS] test ert [FILES..]
Run ert test using ert-runner.
eask [GLOBAL-OPTIONS] test ert-runner
Run buttercup tests.
eask [GLOBAL-OPTIONS] test buttercup
Run ecukes tests.
eask [GLOBAL-OPTIONS] test ecukes [FILES..]
Run melpazoid tests.
eask [GLOBAL-OPTIONS] test melpazoid [DIRECTORIES..]
Noteπ‘ If [DIRECTORIES..] is not passed in; it will use the current workspace instead.
Commands that formats your Emacs source files.
Run elisp-autofmt formatter.
eask [GLOBAL-OPTIONS] format elisp-autofmt [FILES..]
Run elfmt formatter.
eask [GLOBAL-OPTIONS] format elfmt [FILES..]
List of commands that control DSL.
Add an archive source.
eask [GLOBAL-OPTIONS] source add <NAME> [URL]
Remove an archive source.
Alias: remove
eask [GLOBAL-OPTIONS] source delete <NAME>
List all source information.
eask [GLOBAL-OPTIONS] source list
Noteπ‘ This command is the same aseask archives!
Other helper commands.
Upgrade Eask to the latest version.
Alias: upgrade-self
eask [GLOBAL-OPTIONS] upgrade-eask
Noteπ‘ This will only work if you install it from the source!
Show the location where Eask is installed.
eask [GLOBAL-OPTIONS] locate
Commands to check your Eask-file.
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.
The following options are available on all Eask commands:
This will use ~/.eask/ instead of the package development environment.
This is used for other tasks. e.g., cat, etc.
eask -g [COMMAND]
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]
Enable the all flag.
eask -a [COMMAND]
Start cleanly without loading the configuration files.
eask -q [COMMAND]
Force command’s execution.
Force to uninstall the package dash even it’s a dependency from another packages.
eask -f [COMMAND]
Enable debug information.
This is equivalent to:
(setq debug-on-error t)
Trigger error instead of warnings.
For instance, in eask compile:
(setq byte-compile-error-on-warn t)
Continue the execution without killing the Emacs.
Connect archives with HTTP instead of HTTPS.
Enable/Disable timestamps.
Enable/Disable log header.
Weather to generate log files.
Disable color output.
Show elapsed time between each operation.
Set verbosity from 0 to 5.
eask --verbose 4 [COMMAND]
Show version number.
Show help.
Set Emacs proxy for HTTP and HTTPS:
eask --proxy "localhost:8888" [COMMAND]
Set Emacs proxy for HTTP only.
Set Emacs proxy for HTTPS only.
Do not use a proxy for any URL matching pattern.
<pattern>is an Emacs regular expression.
