Skip to content

Commit 970ee8a

Browse files
committed
fix(init): Enhance guessed package name and entry point
1 parent 130345b commit 970ee8a

File tree

2 files changed

+49
-19
lines changed

2 files changed

+49
-19
lines changed

cmds/core/init.js

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,18 @@ async function create_eask_file(dir) {
115115

116116
// Starting writing Eask-file!
117117
let name, version, description, entry_point, emacs_version, website_url, keywords;
118-
await ask(`package name: (${basename}) `, (answer) => { name = answer || basename; });
118+
119+
let guessed_package_name = guess_package_name(basename);
120+
let guessed_entry_point = guess_entry_point(basename);
121+
122+
await ask(`package name: (${guessed_package_name}) `, (answer) => {
123+
name = answer || guessed_package_name;
124+
});
119125
await ask(`version: (1.0.0) `, (answer) => { version = answer || '1.0.0'; });
120126
await ask(`description: `, (answer) => { description = answer; });
121-
await ask(`entry point: (${guess_entry_point(basename)}) `, (answer) => { entry_point = answer || `${basename}.el`; });
127+
await ask(`entry point: (${guessed_entry_point}) `, (answer) => {
128+
entry_point = answer || guessed_entry_point;
129+
});
122130
await ask(`emacs version: (26.1) `, (answer) => { emacs_version = answer || '26.1'; });
123131
await ask(`website: `, (answer) => { website_url = answer; });
124132
await ask(`keywords: `, (answer) => { keywords = answer; });
@@ -189,14 +197,25 @@ function check_eask_filename(name) {
189197
}
190198

191199
/**
192-
* Return the guess entry point by its basname.
193-
* @param { String } basename - The directory name.
200+
* Return the guessed project name by its basename.
201+
* @param { String } basename - The working directory name.
202+
* @return Guessed project name.
203+
*/
204+
function guess_package_name(basename) {
205+
basename = basename.toLowerCase();
206+
basename = basename.replaceAll('emacs-', '');
207+
basename = basename.replaceAll('-emacs', '');
208+
basename = basename.replace(/[-.]el$/, '');
209+
return basename;
210+
}
211+
212+
/**
213+
* Return the guessed entry point by its basname.
214+
* @param { String } basename - The working directory name.
194215
* @return Guessed entry point filename.
195216
*/
196217
function guess_entry_point(basename) {
197-
if (basename.endsWith(".el")) {
198-
return basename;
199-
}
218+
basename = guess_package_name(basename);
200219
return basename + ".el";
201220
}
202221

lisp/_prepare.el

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -270,18 +270,29 @@ The function `directory-empty-p' only exists 28.1 or above; copied it."
270270
;; 27.2 or lower!
271271
(null (directory-files dir nil directory-files-no-dot-files-regexp t)))))
272272

273-
(defun eask-guess-package-name ()
274-
"Return the possible package name."
275-
(or (eask-package-name)
276-
(ignore-errors (file-name-nondirectory
277-
(file-name-sans-extension eask-package-file)))))
278-
279-
(defun eask-guess-entry-point (&optional project-name)
280-
"Return the guess entry point by its PROJECT-NAME."
281-
(let ((project-name (or project-name (eask-guess-package-name))))
282-
(if (string-suffix-p ".el" project-name)
283-
project-name
284-
(format "%s.el" project-name))))
273+
(defun eask--guess-package-name (basename)
274+
"Convert the BASENAME to a valid, commonly seen package name."
275+
(when-let ((name (downcase basename)))
276+
(setq name (eask-s-replace "emacs-" "" name)
277+
name (eask-s-replace "-emacs" "" name)
278+
name (replace-regexp-in-string "[.-]el$" "" name))
279+
name))
280+
281+
(defun eask-guess-package-name (&optional basename)
282+
"Return the possible package name.
283+
284+
Optional argument BASENAME accepts a string; it will convert the string to a
285+
valid, commonly seen package name."
286+
(or (eask--guess-package-name basename)
287+
(eask-package-name)
288+
(eask--guess-package-name
289+
(ignore-errors (file-name-nondirectory
290+
(file-name-sans-extension eask-package-file))))))
291+
292+
(defun eask-guess-entry-point (&optional basename)
293+
"Return the guess entry point by its BASENAME."
294+
(let ((name (eask-guess-package-name basename)))
295+
(format "%s.el" name)))
285296

286297
(defun eask-read-string (prompt &optional
287298
initial-input

0 commit comments

Comments
 (0)