🚩 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>
💡 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>
💡 The template project is located in https://github.com/emacs-eask/template-elpa
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")
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!
Show information about the project or configuration.
$ eask [GLOBAL-OPTIONS] info
Display the state of the workspace.
$ eask [GLOBAL-OPTIONS] status
To install all dependencies.
Alias: install-dependencies
, prepare
$ eask [GLOBAL-OPTIONS] install-deps [--dev]
💡 Specify option [–dev] to install dependencies from the development scope.
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
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
Build the package artifact.
$ eask package [DESTINATION]
If [DESTINATION] is not specified, it will generate to the /dist
folder
by default.
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
Print 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..]
List available keywords that can be used in the header section.
$ eask [GLOBAL-OPTIONS] keywords
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.
Concatenate all Emacs Lisp files into one file.
$ eask [GLOBAL-OPTIONS] concate [FILES..]
Run the script.
$ eask [GLOBAL-OPTIONS] run [FILES..]
Alias: run-script
Commands allow you execute on top of Eask core.
Basically, this allow 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]
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.
$ eask [GLOBAL-OPTIONS] upgrade
List packages.
$ eask [GLOBAL-OPTIONS] list [--depth]
List out all outdated packages.
$ eask [GLOBAL-OPTIONS] outdated [--depth]
Download package archives.
$ eask [GLOBAL-OPTIONS] refresh
Generate files that are used for the development.
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.
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.
Generate recipe file.
$ eask [GLOBAL-OPTIONS] generate recipe [DESTINATION]
If [DESTINATION] is not specified, it will generate to the /recipes
folder
by default.
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.
Generate ignore file.
$ eask [GLOBAL-OPTIONS] generate ignore <name>
💡 This command uses the package gitignore-templates to generate ignore file.
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/
!
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/
!
Generate GitLab Runner workflow yaml file.
The default filename is .gitlab-ci.yml
.
$ eask [GLOBAL-OPTIONS] generate workflow gitlab [--file]
Generate 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>
Deletes the link for the given packages.
$ eask [GLOBAL-OPTIONS] link delete [names..]
List all links.
$ eask [GLOBAL-OPTIONS] link list
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
Delete all .elc
files. This would respect to your Eask
file.
$ eask [GLOBAL-OPTIONS] clean elc
Delete dist subdirectory.
$ eask [GLOBAL-OPTIONS] clean dist
Alias: distribution
Remove generated autoloads file.
$ eask [GLOBAL-OPTIONS] clean autoloads
Remove 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 workspace
clean elc
clean dist
clean autoloads
clean pkg-file
clean log-file
$ eask [GLOBAL-OPTIONS] clean all
Alias: everything
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 keywords checker (built-in).
$ eask [GLOBAL-OPTIONS] lint keywords
Run license check.
$ eask [GLOBAL-OPTIONS] lint license
Run check-declare (built-in).
$ eask [GLOBAL-OPTIONS] lint declare [FILES..]
Run relint.
$ eask [GLOBAL-OPTIONS] lint regexps [FILES..]
Alias: lint relint
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 [GLOBAL-OPTIONS] test ert [FILES..]
$ eask [GLOBAL-OPTIONS] test ert-runner
$ eask [GLOBAL-OPTIONS] test buttercup
Other helper commands.
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!
Show Eask installed location.
$ eask [GLOBAL-OPTIONS] locate
Commands to check your Eask-file.
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
.
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.