{"id":24960803,"url":"https://github.com/emacs-eask/easky","last_synced_at":"2025-04-10T21:13:57.631Z","repository":{"id":103337002,"uuid":"581822813","full_name":"emacs-eask/easky","owner":"emacs-eask","description":"Control Eask CLI in Emacs","archived":false,"fork":false,"pushed_at":"2025-04-04T00:19:50.000Z","size":423,"stargazers_count":10,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-10T21:13:52.295Z","etag":null,"topics":["eask","easky","emacs"],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emacs-eask.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"emacs-eask","patreon":"jcs090218","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":"https://www.paypal.me/jcs090218"}},"created_at":"2022-12-24T13:21:57.000Z","updated_at":"2025-04-04T00:19:53.000Z","dependencies_parsed_at":"2023-12-11T11:27:25.988Z","dependency_job_id":"ec64f849-9eda-4920-80b3-b7cd1545fa61","html_url":"https://github.com/emacs-eask/easky","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-eask%2Feasky","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-eask%2Feasky/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-eask%2Feasky/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emacs-eask%2Feasky/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emacs-eask","download_url":"https://codeload.github.com/emacs-eask/easky/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248298312,"owners_count":21080320,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eask","easky","emacs"],"created_at":"2025-02-03T08:31:26.613Z","updated_at":"2025-04-10T21:13:57.623Z","avatar_url":"https://github.com/emacs-eask.png","language":"Emacs Lisp","funding_links":["https://github.com/sponsors/emacs-eask","https://patreon.com/jcs090218","https://www.paypal.me/jcs090218","https://www.patreon.com/jcs090218"],"categories":[],"sub_categories":[],"readme":"[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![JCS-ELPA](https://raw.githubusercontent.com/jcs-emacs/badges/master/elpa/v/easky.svg)](https://jcs-emacs.github.io/jcs-elpa/#/easky)\n[![MELPA](https://melpa.org/packages/easky-badge.svg)](https://melpa.org/#/easky)\n[![MELPA Stable](https://stable.melpa.org/packages/easky-badge.svg)](https://stable.melpa.org/#/easky)\n\u003ca href=\"#\"\u003e\u003cimg align=\"right\" src=\"https://raw.githubusercontent.com/emacs-eask/cli/master/docs/static/logo.png\" width=\"20%\"\u003e\u003c/a\u003e\n\n# easky\n\u003e Control Eask CLI in Emacs\n\n[![CI](https://github.com/emacs-eask/easky/actions/workflows/test.yml/badge.svg)](https://github.com/emacs-eask/easky/actions/workflows/test.yml)\n\n`Easky` is the interface to control [Eask CLI][],\nit's a package manager and sandbox tools to test and manage your elisp packages.\n\n\u003c!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc --\u003e\n**Table of Contents**\n\n- [🏆 Features](#-features)\n- [💾 Installation](#-installation)\n  - [🔍 Step 1. Install Eask CLI](#-step-1-install-eask-cli)\n  - [🔍 Step 2. Install `Easky` (this package)](#-step-2-install-easky-this-package)\n    - [package.el](#packageel)\n    - [use-package](#use-package)\n    - [Manual installation](#manual-installation)\n- [🔰 Quick start](#-quick-start)\n- [📇 Support Commands](#-support-commands)\n  - [🔈 Create](#-create)\n  - [🏭 Generate](#-generate)\n  - [📚 Documentation](#-documentation)\n  - [💻 Execution](#-execution)\n  - [🧹 Cleaning](#-cleaning)\n  - [📝 Linting](#-linting)\n  - [🔗 Linking](#-linking)\n  - [🔍 Testing](#-testing)\n  - [🔗 Control DSL](#-control-dsl)\n- [📈 Checker](#-checker)\n- [🔧 Customization](#-customization)\n  - [🧪 Variables](#-variables)\n- [🔌 Plugins](#-plugins)\n  - [📦 `package` module](#-package-module)\n- [🌟 Other packages you may be interested](#-other-packages-you-may-be-interested)\n- [🛠️ Contribute](#-contribute)\n  - [🔬 Development](#-development)\n- [⚜️ License](#-license)\n\n\u003c!-- markdown-toc end --\u003e\n\n## 🏆 Features\n\nEasky is out of the box and comes along with many features.\n\n| Eask-file Management    | List installed packages                     |\n|-------------------------|---------------------------------------------|\n| ![info](./etc/info.png) | ![list-installed](./etc/list-installed.png) |\n\n| Linting with `checkdoc`         | Testing with `buttercup`          |\n|---------------------------------|-----------------------------------|\n| ![checkdoc](./etc/checkdoc.png) | ![buttercup](./etc/buttercup.png) |\n\n## 💾 Installation\n\n### 🔍 Step 1. Install Eask CLI\n\nDownload binaries from their [release page](https://github.com/emacs-eask/cli/releases)\n, and extract the file somewhere on your machine. Then add the path `/path/to/eask/`\nto environment `PATH`, so you can access it anywhere.\n\nFor more installation options, see https://emacs-eask.github.io/Getting-Started/Install-Eask/.\n\n\u003e ⚠ Warning\n\u003e\n\u003e Make sure the executable `eask` has the permission to execute! Use `chmod`\n\u003e command if needed!\n\n### 🔍 Step 2. Install `Easky` (this package)\n\n#### package.el\n\nThis package is available from [JCS-ELPA](https://jcs-emacs.github.io/jcs-elpa/).\nInstall from these repositories then you should be good to go!\n\nNormally, you don't need to add `(require 'easky)` to your configuration since\nmost `easky` commands are autoload and can be called without loading the module!\n\n#### use-package\n\nIf you use [use-package](https://www.emacswiki.org/emacs/UsePackage), add the\nfollowing to your `init.el` file:\n\n```elisp\n(use-package easky :ensure t)\n```\n\nor with `straight.el`:\n\n```elisp\n(use-package easky\n  :straight (easky :type git :host github :repo \"emacs-eask/easky\"))\n```\n\n#### Manual installation\n\nCopy all `.el` files in this repository to `~/.emacs.d/lisp` and add the\nfollowing:\n\n```elisp\n(add-to-list 'load-path \"~/.emacs.d/lisp/\")\n(require 'easky)\n```\n\n## 🔰 Quick start\n\nThe easiest to use this package, do:\n\n```\nM-x easky\n```\n\nThat's it! Then you should be able to select the command you like to use through\n`completing-read`.\n\nSome conditions may make Eask CLI unusable:\n\n1. `eask` is missing from your `PATH`, see also `eask-api-executable`\n2. You don't have an Eask-file in your project or current directory\n3. Invalid Eask-file (syntax error, invalid rules, etc)\n\n## 📇 Support Commands\n\nAll-in-one commands, these are commands we recommend you start with!\n\n| Commands         | Description                                    |\n|------------------|------------------------------------------------|\n| `easky`          | Start Eask by selecting the through completion |\n| `easky-create`   | Master command for `create` commands           |\n| `easky-generate` | Master command for `generate` commands         |\n| `easky-clean`    | Master command for `clean` commands            |\n| `easky-link`     | Master command for `link` commands             |\n| `easky-lint`     | Master command for `lint` commands             |\n| `easky-test`     | Master command for `test` commands             |\n| `easky-source`   | Master command for `source` commands           |\n\nThe following are the functions provided by `easky`, you can `M-x` with these\ncommands:\n\n| Commands             | Description                                                     |\n|----------------------|-----------------------------------------------------------------|\n| `easky-init`         | Create Eask-file and initialize it                              |\n| `easky-info`         | Print Eask-file information                                     |\n| `easky-locate`       | Print Eask installed location                                   |\n| `easky-compile`      | Byte-compile elc files.                                         |\n| `easky-recompile`    | Byte-recompile elc files.                                       |\n| `easky-search`       | Search available packages with query.                           |\n| `easky-files`        | List all package files.                                         |\n| `easky-archives`     | List in used archives                                           |\n| `easky-keywords`     | List available keywords that can be used in the header section. |\n| `easky-run`          | Execute Eask's script (with completion)                         |\n| `easky-package`      | Package (build) your package                                    |\n| `easky-install`      | Install packages, see also `easky-package-install`.             |\n| `easky-uninstall`    | Untnstall packages, see also `easky-package-delete`.            |\n| `easky-reinstall`    | Reinstall packages, see also `easky-package-reinstall`.         |\n| `easky-upgrade`      | Upgrade packages., see also `easky-package-update`.             |\n| `easky-install-deps` | Install all package dependencies                                |\n| `easky-install-file` | Install packages through files.                                 |\n| `easky-install-vc`   | Install packages through version controls.                      |\n| `easky-recipe`       | Recommend me a recipe format.                                   |\n| `easky-help`         | Print Eask help manual                                          |\n| `easky-version`      | Print Eask version                                              |\n| `easky-upgrade-eask` | Upgrade Eask CLI                                                |\n| `easky-stop`         | Terminate the current process                                   |\n| `easky-bump`         | Bump version for your package or Eask-file.                     |\n| `easky-cat`          | View filename(s).                                               |\n| `easky-concat`       | Concatenate all source files.                                   |\n| `easky-loc`          | Print LOC information.                                          |\n| `easky-path`         | Print the PATH (`exec-path`) from Eask sandbox.                 |\n| `easky-load-path`    | Print the `load-path' from Eask sandbox.                        |\n\n### 🔈 Create\n\n| Commands               | Description                         |\n|------------------------|-------------------------------------|\n| `easky-create-package` | Create a new elisp package          |\n| `easky-create-elpa`    | Create a new ELPA using github-elpa |\n\n### 🏭 Generate\n\n| Commands                            | Description                                     |\n|-------------------------------------|-------------------------------------------------|\n| `easky-generate-autoloads`          | Generate `-autoloads.el` file, and print it out |\n| `easky-generate-pkg-file`           | Generate `-pkg.el`, and printed it out          |\n| `easky-generate-license`            | Generate LICENSE file                           |\n| `easky-generate-ignore`             | Generate ignore file.                           |\n| `easky-generate-test`               | Master command for `generate test`              |\n| `easky-generate-test-ert`           | Setup test files for [ert][] tests.             |\n| `easky-generate-test-ert-runner`    | Setup test files for [ert-runner][].            |\n| `easky-generate-test-buttercup`     | Setup test files for [buttercup][].             |\n| `easky-generate-test-ecukes`        | Setup test files for [ecukes][].                |\n| `easky-generate-workflow`           | Master command for `generate workflow`          |\n| `easky-generate-workflow-circle-ci` | Generate [CircleCI][] test file                 |\n| `easky-generate-workflow-github`    | Generate [GitHub Actions][] test file           |\n| `easky-generate-workflow-gitlab`    | Generate [GitLab Runner][] test file            |\n| `easky-generate-workflow-travis-ci` | Generate [Travis CI][] test file                |\n\n### 📚 Documentation\n\nCommands used to build documentation site.\n\n| Commands     | Description          |\n|--------------|----------------------|\n| `easky-docs` | Build documentation. |\n\n### 💻 Execution\n\nSometimes you would want to execute some command directly!\n\n| Commands       | Description               |\n|----------------|---------------------------|\n| `easky-eask`   | Run the Eask CLI directly |\n| `easky-exec`   | Run `eask exec`           |\n| `easky-emacs`  | Run `eask emacs`          |\n| `easky-eval`   | Run `eask eval`           |\n| `easky-load`   | Run `eask load`           |\n| `easky-docker` | Run `eask docker`         |\n\n### 🧹 Cleaning\n\nCommands to keep your project clean:\n\n| Commands                | Description                                          |\n|-------------------------|------------------------------------------------------|\n| `easky-clean-workspace` | Clean up `.eask` directory                           |\n| `easky-clean-elc`       | Remove byte compiled files generated by eask compile |\n| `easky-clean-dist`      | Delete dist subdirectory                             |\n| `easky-clean-autoloads` | Remove generated autoloads file                      |\n| `easky-clean-pkg-file`  | Remove generated pkg-file                            |\n| `easky-clean-log-file`  | Remove all generated log files                       |\n| `easky-clean-all`       | Do all cleaning tasks                                |\n\n### 📝 Linting\n\nCommands to help you lint your packages:\n\n| Commands                   | Description         |\n|----------------------------|---------------------|\n| `easky-lint-checkdoc`      | Run checkdoc        |\n| `easky-lint-check-declare` | Run check-declare   |\n| `easky-lint-elint`         | Run elint           |\n| `easky-lint-elsa`          | Run elsa            |\n| `easky-lint-indent`        | Run indent-linet    |\n| `easky-lint-keywords`      | Run keywords linter |\n| `easky-lint-license`       | Run license linter  |\n| `easky-lint-regexps`       | Run relint          |\n\n\u003e 💡 These extenral tools are automatically installed in your sandbox!\n\n### 🔗 Linking\n\nCommands to link local packages:\n\n| Commands            | Description                  |\n|---------------------|------------------------------|\n| `easky-link-add`    | Link a local package         |\n| `easky-link-delete` | Delete local linked packages |\n| `easky-link-list`   | List all project links       |\n\n### 🔍 Testing\n\nCommands to help you test your packages:\n\n| Commands                | Description                             |\n|-------------------------|-----------------------------------------|\n| `easky-test-ert`        | Run [ert][] tests                       |\n| `easky-test-ert-runner` | Run [ert][] test through [ert-runner][] |\n| `easky-test-buttercup`  | Run [buttercup][] tests                 |\n| `easky-test-ecukes`     | Run [ecukes][] tests                    |\n| `easky-test-melpazoid`  | Run [melpazoid][] tests                 |\n\n\u003e 💡 These external tools are automatically installed in your sandbox!\n\n### 🔗 Control DSL\n\nCommands to control DSL:\n\n| Commands              | Description              |\n|-----------------------|--------------------------|\n| `easky-source-add`    | Add an archive source    |\n| `easky-source-delete` | Delete an archive source |\n| `easky-source-list`   | List all sources         |\n\n## 📈 Checker\n\nCommands to check your Eask-file.\n\n| Commands        | Description            |\n|-----------------|------------------------|\n| `easky-analyze` | Run Eask-file checker. |\n\n## 🔧 Customization\n\n### 🧪 Variables\n\nList of variables that interact with `easky`'s behaviours.\n\n- `easky-strip-header` -  output header while displaying. (Default: `t`)\n- `easky-display-function` - Function to display Easky's result. (Default: `#'lv-message`)\n- `easky-focus-p` - Select window after command execution. (Default: `nil`)\n- `easky-move-point-for-output` - Controls whether interpreter output moves point to the end of the output. (Default: `nil`)\n- `easky-timeout-seconds` - Timeout seconds for running too long process. (Default: `30`)\n- `easky-show-tip` - Weather to show tip on waiting the output buffer (Default: `t`)\n\n## 🔌 Plugins\n\n`easky` comes with a couple of useful additions that can be used along with it.\n\n### 📦 `package` module\n\npackage module extends `package.el` so you can manage your package dependencies\n(from sandbox) through `package.el`.\n\n| Commads                          | Description                                                  |\n|----------------------------------|--------------------------------------------------------------|\n| `easky-package-refresh-contents` | Extends `package-refresh-contents`, see also `easky-refresh` |\n| `easky-list-packages`            | Extends `list-packages`                                      |\n| `easky-list-installed-packages`  | List installed packages                                      |\n| `easky-package-install`          | Extends `package-install`, see also `easky-install`          |\n| `easky-package-delete`           | Extends `package-delete`, see also `easky-uninstall`         |\n| `easky-package-reinstall`        | Extends `package-reinstall`, see also `easky-reinstall`      |\n| `easky-package-recompile`        | Extends `package-recompile`                                  |\n| `easky-package-recompile-all`    | Extends `package-recompile-all`                              |\n| `easky-describe-package`         | Extends `describe-package`                                   |\n| `easky-package-update`           | Extends `package-update`                                     |\n| `easky-package-update-all`       | Extends `package-update-all`                                 |\n\n## 🌟 Other packages you may be interested\n\n- [company-eask](https://github.com/emacs-eask/company-eask) - Company backend for Eask-file\n- [eldoc-eask](https://github.com/emacs-eask/eldoc-eask) - Eldoc support for Eask-file\n- [flycheck-eask](https://github.com/flycheck/flycheck-eask) - Eask support in Flycheck\n- [flymake-eask](https://github.com/flymake/flymake-eask) - Eask support in Flymake\n\n## 🛠️ Contribute\n\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)\n[![Elisp styleguide](https://img.shields.io/badge/elisp-style%20guide-purple)](https://github.com/bbatsov/emacs-lisp-style-guide)\n[![Donate on paypal](https://img.shields.io/badge/paypal-donate-1?logo=paypal\u0026color=blue)](https://www.paypal.me/jcs090218)\n[![Become a patron](https://img.shields.io/badge/patreon-become%20a%20patron-orange.svg?logo=patreon)](https://www.patreon.com/jcs090218)\n\nIf you would like to contribute to this project, you may either\nclone and make pull requests to this repository. Or you can\nclone the project and establish your own branch of this tool.\nAny methods are welcome!\n\n### 🔬 Development\n\nTo run the test locally, you will need the following tools:\n\n- [Eask](https://emacs-eask.github.io/)\n- [Make](https://www.gnu.org/software/make/) (optional)\n\nInstall all dependencies and development dependencies:\n\n```sh\neask install-deps --dev\n```\n\nTo test the package's installation:\n\n```sh\neask package\neask install\n```\n\nTo test compilation:\n\n```sh\neask compile\n```\n\n**🪧 The following steps are optional, but we recommend you follow these lint results!**\n\nThe built-in `checkdoc` linter:\n\n```sh\neask lint checkdoc\n```\n\nThe standard `package` linter:\n\n```sh\neask lint package\n```\n\n*📝 P.S. For more information, find the Eask manual at https://emacs-eask.github.io/.*\n\n## ⚜️ License\n\nThis program is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\nSee [`LICENSE`](./LICENSE.txt) for details.\n\n\n\u003c!-- Links --\u003e\n\n[Eask CLI]: https://github.com/emacs-eask/cli\n\n[CircleCI]: https://circleci.com/\n[GitHub Actions]: https://github.com/features/actions\n[GitLab Runner]: https://docs.gitlab.com/runner/\n[Travis CI]: https://www.travis-ci.com/\n\n[ert]: https://www.gnu.org/software/emacs/manual/html_node/ert/\n[ert-runner]: https://github.com/rejeep/ert-runner.el\n[buttercup]: https://github.com/jorgenschaefer/emacs-buttercup\n[ecukes]: https://github.com/ecukes/ecukes\n[melpazoid]: https://github.com/riscy/melpazoid\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femacs-eask%2Feasky","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femacs-eask%2Feasky","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femacs-eask%2Feasky/lists"}