Skip to content

Commit eb03a2b

Browse files
committed
Add command outdated
1 parent 3b035a1 commit eb03a2b

7 files changed

Lines changed: 93 additions & 14 deletions

File tree

cmds/outdated.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* Copyright (C) 2022 Jen-Chieh Shen
3+
*
4+
* This program is free software; you can redistribute it and/or modify
5+
* it under the terms of the GNU General Public License as published by
6+
* the Free Software Foundation; either version 3, or (at your option)
7+
* any later version.
8+
*
9+
* This program is distributed in the hope that it will be useful,
10+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
* GNU General Public License for more details.
13+
*
14+
* You should have received a copy of the GNU General Public License
15+
* along with GNU Emacs; see the file COPYING. If not, write to the
16+
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17+
* Boston, MA 02110-1301, USA.
18+
*/
19+
20+
"use strict";
21+
22+
const util = require("../src/util");
23+
24+
exports.command = "outdated";
25+
exports.desc = "show all outdated dependencies";
26+
exports.builder = {
27+
global: {
28+
description: 'list all outdated dependencies default to `~/.emacs.d/`',
29+
alias: 'g',
30+
requiresArg: false,
31+
type: 'boolean',
32+
},
33+
};
34+
35+
exports.handler = async ({ global, depth }) => {
36+
await util.e_call('outdated' , util.def_flag(global, '-g'));
37+
};

lisp/_prepare.el

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515
package-archives nil ; Leave it to custom use
1616
package-archive-priorities nil))
1717

18+
(defmacro eask-mute (&rest body)
19+
"Execute BODY without message."
20+
(declare (indent 0) (debug t))
21+
`(let ((inhibit-message t) message-log-max) ,@body))
22+
1823
;;
1924
;;; Package
2025

@@ -87,7 +92,7 @@ the `eask-start' execution.")
8792
(let* ((script-el (concat script ".el"))
8893
(lisp-dir (file-name-directory eask--script))
8994
(script-file (expand-file-name script-el lisp-dir)))
90-
(if (file-exists-p script-file) (load-file script-file)
95+
(if (file-exists-p script-file) (eask-mute (load-file script-file))
9196
(error "Scripting missing %s..." script-file))))
9297

9398
;;
@@ -262,6 +267,11 @@ Eask file in the workspace."
262267

263268
(eask-load "./extern/package-build")
264269

270+
(defun eask-guess-package-name ()
271+
"Return the possible package name."
272+
(or (eask-package-get :name)
273+
(file-name-nondirectory (file-name-sans-extension eask-package-file))))
274+
265275
(defun eask-package-files ()
266276
"Return package files in workspace."
267277
(if-let ((files (mapcar (lambda (elm) (expand-file-name (car elm) default-directory))

lisp/autoloads.el

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,6 @@
1414
(file-name-directory (nth 1 (member "-scriptload" command-line-args)))))
1515

1616
(eask-start
17-
(package-generate-autoloads
18-
(or (eask-package-get :name)
19-
(file-name-nondirectory (file-name-sans-extension eask-package-file)))
20-
default-directory))
17+
(package-generate-autoloads (eask-guess-package-name) default-directory))
2118

2219
;;; autoloads.el ends here

lisp/list-all.el

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,8 @@
2323

2424
(eask-start
2525
(eask-pkg-init)
26-
(let* ((pkg-list (reverse (mapcar #'car package-archive-contents)))
27-
(eask-list-package-name-width (+ (eask-seq-max-str pkg-list) 1)))
28-
(dolist (name pkg-list)
29-
(eask-print-pkg name 0 (or (eask-depth) 999) package-archive-contents)))
26+
(let ((pkg-list (reverse (mapcar #'car package-archive-contents))))
27+
(eask--list pkg-list package-archive-contents))
3028
(message "")
3129
(message " Total of %s packages available" (length package-archive-contents)))
3230

lisp/list.el

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,15 @@
5151
(mapc (lambda (elm) (setq result (max result (length (format "%s" elm))))) sequence)
5252
result))
5353

54+
(defun eask--list (list pkg-alist &optional depth)
55+
"List packages."
56+
(let ((eask-list-package-name-width (+ (eask-seq-max-str list) 1)))
57+
(dolist (name list)
58+
(eask-print-pkg name 0 (or depth (eask-depth) 999) pkg-alist))))
59+
5460
(eask-start
5561
(eask-pkg-init)
56-
(let ((eask-list-package-name-width (+ (eask-seq-max-str package-activated-list) 1)))
57-
(dolist (name package-activated-list)
58-
(eask-print-pkg name 0 (or (eask-depth) 999) package-alist)))
62+
(eask--list package-activated-list package-alist)
5963
(message "")
6064
(message " Total of %s packages installed" (length package-activated-list)))
6165

lisp/outdated.el

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
;;; outdated.el --- Show all outdated dependencies -*- lexical-binding: t; -*-
2+
3+
;;; Commentary:
4+
;;
5+
;; Command use to show all outdated dependencies,
6+
;;
7+
;; $ eask outdated
8+
;;
9+
;;
10+
;; Action options:
11+
;;
12+
;; [-g] change default workspace to `~/.emacs.d'
13+
;;
14+
15+
;;; Code:
16+
17+
(load-file (expand-file-name
18+
"_prepare.el"
19+
(file-name-directory (nth 1 (member "-scriptload" command-line-args)))))
20+
21+
(eask-load "upgrade")
22+
(eask-load "list")
23+
24+
(eask-start
25+
(eask-pkg-init)
26+
(if-let* ((upgrades (eask-package--upgrades))
27+
(pkg-list (reverse (mapcar #'package-desc-name upgrades)))
28+
;; Remove current developing packages
29+
(pkg-list (remove (intern (eask-guess-package-name)) pkg-list)))
30+
(eask--list pkg-list package-alist 0)
31+
(message "")
32+
(message " No outdated dependencies")))
33+
34+
;;; outdated.el ends here

lisp/pkg-file.el

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
(eask-start
1717
(eask-call "install") ; XXX maybe try to avoid this?
1818

19-
(let* ((name (or (eask-package-get :name)
20-
(file-name-nondirectory (file-name-sans-extension eask-package-file))))
19+
(let* ((name (eask-guess-package-name))
2120
(dir (file-name-directory (locate-library name)))
2221
(pkg-file (concat name "-pkg.el"))
2322
(gen-filename (concat dir pkg-file)))

0 commit comments

Comments
 (0)