diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-10 12:52:08 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-10 12:52:08 -0500 |
| commit | d0128942724795511e19f5478b60e34e194cdcad (patch) | |
| tree | 03929397c57558928bc4c379f6ee81979f0c5c7a | |
| parent | 982e484f001e7619ba117f43e3f626d305952b12 (diff) | |
| download | org-drill-d0128942724795511e19f5478b60e34e194cdcad.tar.gz org-drill-d0128942724795511e19f5478b60e34e194cdcad.zip | |
build: migrate from Cask to Eask
Cask's upstream has slowed. Eask is the actively maintained successor.
Eask's `package-file` directive doesn't auto-install the deps from the .el header's Package-Requires, so the Eask file mirrors emacs/seq/org/persist explicitly. `eask install-deps` also doesn't pull transitive deps, so dash, m-buffer, and shut-up needed their own `depends-on` lines for undercover and elisp-lint to activate.
The Makefile swaps are mechanical: $(CASK) → $(EASK), `cask install` → `eask install-deps --dev`, `cask build` → `eask compile`.
The URL in org-drill.el's header pointed at the abandoned upstream's GitLab issues page. Eask cross-validates that against website-url, so I updated it to the GitHub mirror — where users file issues now.
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | Cask | 14 | ||||
| -rw-r--r-- | Eask | 33 | ||||
| -rw-r--r-- | Makefile | 40 | ||||
| -rw-r--r-- | org-drill.el | 2 | ||||
| -rw-r--r-- | tests/run-coverage-file.el | 2 |
6 files changed, 56 insertions, 37 deletions
@@ -1,4 +1,4 @@ -/.cask +/.eask org-drill.html /*.elc /elpa @@ -1,14 +0,0 @@ -(source gnu) -(source nongnu) -(source melpa) -(source org) - -(package-file "org-drill.el") - -(development - (depends-on "assess") - (depends-on "undercover") - (depends-on "package-lint") - (depends-on "elisp-lint")) -(depends-on "org" "9.6") - @@ -0,0 +1,33 @@ +;; -*- mode: eask; lexical-binding: t -*- + +(package "org-drill" + "2.7.0" + "Self-testing using spaced repetition") + +(website-url "https://github.com/cjennings/org-drill") +(keywords "games" "outlines" "multimedia") + +(package-file "org-drill.el") + +(source "gnu") +(source "nongnu") +(source "melpa") +(source "org") + +(depends-on "emacs" "25.3") +(depends-on "seq" "2.14") +(depends-on "org" "9.6") +(depends-on "persist" "0.3") + +(development + (depends-on "assess") + (depends-on "undercover") + (depends-on "package-lint") + (depends-on "elisp-lint") + ;; Transitive deps that Eask doesn't auto-install: + ;; dash ← undercover, elisp-lint + ;; m-buffer ← assess + ;; shut-up ← undercover + (depends-on "dash") + (depends-on "m-buffer") + (depends-on "shut-up")) @@ -9,13 +9,13 @@ # make robot - Run basic robot tests # make robot-all - Run all robot tests # make docker-test - Run tests in Docker (multiple Emacs versions) -# make setup - Install dependencies via Cask +# make setup - Install dependencies via Eask # make clean - Remove generated files # Emacs binary to use (override with: make EMACS=emacs29 test) EMACS ?= emacs -# Check for Cask in PATH or common installation location -CASK ?= $(shell command -v cask 2>/dev/null || echo "$(HOME)/.cask/bin/cask") +# Check for Eask in PATH or common installation location +EASK ?= $(shell command -v eask 2>/dev/null || echo "$(HOME)/.local/bin/eask") # Include local overrides if present -include makefile-local @@ -84,8 +84,8 @@ help: @echo " make lint - Run checkdoc + package-lint + elisp-lint" @echo "" @echo "Advanced Targets:" - @echo " make setup - Install dependencies via Cask" - @echo " make build - Build package via Cask" + @echo " make setup - Install dependencies via Eask" + @echo " make build - Byte-compile package via Eask" @echo " make docker-test - Run tests in Docker (multiple Emacs versions)" @echo " make clean - Remove generated files" @echo " make clean-elc - Remove compiled .elc files" @@ -108,19 +108,19 @@ all: robot test-unit # Install dependencies setup: - @if ! command -v $(CASK) >/dev/null 2>&1; then \ - echo "[✗] Cask not found. Please install Cask first:"; \ - echo " https://github.com/cask/cask"; \ - echo " Or: curl -fsSL https://raw.githubusercontent.com/cask/cask/master/go | python"; \ + @if ! command -v $(EASK) >/dev/null 2>&1; then \ + echo "[✗] Eask not found. Please install Eask first:"; \ + echo " https://emacs-eask.github.io/"; \ + echo " Or: npm install -g @emacs-eask/cli"; \ exit 1; \ fi - @echo "[i] Installing dependencies via Cask..." - @$(EMACS_ENV) $(CASK) install + @echo "[i] Installing dependencies via Eask..." + @$(EMACS_ENV) $(EASK) install-deps --dev @echo "[✓] Dependencies installed" -# Build package +# Byte-compile package build: - $(EMACS_ENV) $(CASK) build + $(EMACS_ENV) $(EASK) compile # Run all tests test: robot test-unit @@ -134,7 +134,7 @@ test-unit: setup @failed=0; \ for test in $(UNIT_TESTS); do \ echo " Testing $$test..."; \ - $(EMACS_ENV) $(CASK) emacs --batch -q \ + $(EMACS_ENV) $(EASK) emacs --batch -q \ -l ert \ -l assess \ -l org-drill.el \ @@ -157,7 +157,7 @@ test-integration: setup failed=0; \ for test in $(INTEGRATION_TESTS); do \ echo " Testing $$test..."; \ - $(EMACS_ENV) $(CASK) emacs --batch -q \ + $(EMACS_ENV) $(EASK) emacs --batch -q \ -l ert \ -l assess \ -l org-drill.el \ @@ -181,7 +181,7 @@ ifndef FILE @exit 1 endif @echo "[i] Running tests in $(FILE)..." - @$(EMACS_ENV) $(CASK) emacs --batch -q \ + @$(EMACS_ENV) $(EASK) emacs --batch -q \ -l ert \ -l assess \ -l org-drill.el \ @@ -200,7 +200,7 @@ ifndef TEST @exit 1 endif @echo "[i] Running tests matching pattern: $(TEST)..." - @$(EMACS_ENV) $(CASK) emacs --batch -q \ + @$(EMACS_ENV) $(EASK) emacs --batch -q \ -l ert \ -l assess \ -l org-drill.el \ @@ -224,7 +224,7 @@ coverage: coverage-clean setup $(COVERAGE_DIR) @failed=0; \ for test in $(UNIT_TESTS); do \ echo " Coverage: $$test..."; \ - $(EMACS_ENV) $(CASK) emacs --batch -q \ + $(EMACS_ENV) $(EASK) emacs --batch -q \ -l ert \ -l assess \ -l $(TEST_DIR)/run-coverage-file.el \ @@ -258,7 +258,7 @@ $(COVERAGE_DIR): # behavior. Tighten when the warning backlog is cleared. compile: setup @echo "[i] Byte-compiling $(SOURCE_FILE)..." - @$(EMACS_ENV) $(CASK) emacs --batch -q \ + @$(EMACS_ENV) $(EASK) emacs --batch -q \ --eval "(progn \ (setq byte-compile-error-on-warn nil) \ (batch-byte-compile))" $(SOURCE_FILE) @@ -284,7 +284,7 @@ validate-parens: # in todo.org is done. lint: setup @echo "[i] Running checkdoc + package-lint + elisp-lint on $(SOURCE_FILE)..." - @$(EMACS_ENV) $(CASK) emacs --batch -q \ + @$(EMACS_ENV) $(EASK) emacs --batch -q \ --eval "(progn \ (require 'checkdoc) \ (require 'package-lint nil t) \ diff --git a/org-drill.el b/org-drill.el index 5f0da21..d52fbe9 100644 --- a/org-drill.el +++ b/org-drill.el @@ -8,7 +8,7 @@ ;; Package-Requires: ((emacs "25.3") (seq "2.14") (org "9.6") (persist "0.3")) ;; Keywords: games, outlines, multimedia -;; URL: https://gitlab.com/phillord/org-drill/issues +;; URL: https://github.com/cjennings/org-drill ;; ;; This file is not part of GNU Emacs. ;; diff --git a/tests/run-coverage-file.el b/tests/run-coverage-file.el index e328a3f..e0fa89f 100644 --- a/tests/run-coverage-file.el +++ b/tests/run-coverage-file.el @@ -14,7 +14,7 @@ (unless (require 'undercover nil t) (message "") (message "ERROR: undercover not installed.") - (message "Add `undercover' to Cask as a development dep, then run `make setup'.") + (message "Add `undercover' to Eask as a development dep, then run `make setup'.") (message "") (kill-emacs 1)) |
