aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-10 12:52:08 -0500
committerCraig Jennings <c@cjennings.net>2026-05-10 12:52:08 -0500
commitd0128942724795511e19f5478b60e34e194cdcad (patch)
tree03929397c57558928bc4c379f6ee81979f0c5c7a
parent982e484f001e7619ba117f43e3f626d305952b12 (diff)
downloadorg-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--.gitignore2
-rw-r--r--Cask14
-rw-r--r--Eask33
-rw-r--r--Makefile40
-rw-r--r--org-drill.el2
-rw-r--r--tests/run-coverage-file.el2
6 files changed, 56 insertions, 37 deletions
diff --git a/.gitignore b/.gitignore
index c137921..98d6e37 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-/.cask
+/.eask
org-drill.html
/*.elc
/elpa
diff --git a/Cask b/Cask
deleted file mode 100644
index 7192f02..0000000
--- a/Cask
+++ /dev/null
@@ -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")
-
diff --git a/Eask b/Eask
new file mode 100644
index 0000000..215a816
--- /dev/null
+++ b/Eask
@@ -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"))
diff --git a/Makefile b/Makefile
index ef7ea60..2dec454 100644
--- a/Makefile
+++ b/Makefile
@@ -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))