π© 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")
[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!
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.
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..]
π‘ Similar toeask compile
, but it will also remove old.elc
files before compiling.
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
Bump version for your project and/or Eask-file.
$ eask [GLOBAL-OPTIONS] bump [LEVELS..]
π‘ 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..]
π‘ 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 the 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.
$ 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.
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 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.
Alias: remove
$ eask [GLOBAL-OPTIONS] link delete [NAMES..]
List all links.
$ eask [GLOBAL-OPTIONS] link list
Delete various files produced during building.
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
Delete all .elc
files. This would respect to your Eask
file.
$ eask [GLOBAL-OPTIONS] clean elc
Delete dist subdirectory.
Alias: distribution
$ eask [GLOBAL-OPTIONS] clean dist
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
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 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.
Alias: lint relint
$ eask [GLOBAL-OPTIONS] lint regexps [FILES..]
Run regression/unit tests.
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.
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..]
π‘ 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
π‘ This command is the same as$ eask archives
!
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] 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.