Rewrite core-cli
Highlights: - 'doom purge' now purges builds, elpa packages, and repos by default. Regrafting repos is now opt-in with the -g/--regraft switches. Negation flags have been added for elpa/repos: -e/--no-elpa and -r/--no-repos. - Removed 'doom rebuild' (it is now just 'doom build' or 'doom b'). - Removed 'doom build's -f flag, this is now the default. Added the -r flag instead, which only builds packages that need rebuilding. - 'doom update' now updates packages synchronously, but produces more informative output about the updating process. - Straight can now prompt in batch mode, which resolves a lot of issues with 'doom update' (and 'doom upgrade') freezing indefinitely or throwing repo branch errors. - 'bin/doom's switches are now positional. Switches aimed at `bin/doom` must precede any subcommands. e.g. Do: 'doom -yd upgrade' Don't do: 'doom upgrade -yd' - Moved 'doom doctor' from bin/doom-doctor to core/cli/doctor, and integrated core/doctor.el into it, as to avoid naming conflicts between it and Emacs doctor. - The defcli! macro now has a special syntax for declaring flags, their arguments and descriptions. Addresses #1981, #1925, #1816, #1721, #1322
This commit is contained in:
parent
99cd52e70f
commit
873fc5c0db
16 changed files with 996 additions and 1266 deletions
|
@ -1,6 +1,8 @@
|
|||
;;; core/cli/upgrade.el -*- lexical-binding: t; -*-
|
||||
|
||||
(defcli! (upgrade up) (&rest args)
|
||||
(defcli! (upgrade up)
|
||||
((force-p ["-f" "--force"])
|
||||
&rest args)
|
||||
"Updates Doom and packages.
|
||||
|
||||
This requires that ~/.emacs.d is a git repo, and is the equivalent of the
|
||||
|
@ -10,22 +12,10 @@ following shell commands:
|
|||
git pull --rebase
|
||||
bin/doom clean
|
||||
bin/doom refresh
|
||||
bin/doom update
|
||||
|
||||
Switches:
|
||||
-t/--timeout TTL Seconds until a thread is timed out (default: 45)
|
||||
--threads N How many threads to use (default: 8)"
|
||||
(and (doom-upgrade doom-auto-accept
|
||||
(or (member "-f" args)
|
||||
(member "--force" args)))
|
||||
(doom-packages-update
|
||||
doom-auto-accept
|
||||
(when-let (threads (cadr (member "--threads" args)))
|
||||
(string-to-number threads))
|
||||
(when-let (timeout (cadr (or (member "--timeout" args)
|
||||
(member "-t" args))))
|
||||
(string-to-number timeout)))
|
||||
(doom-reload-package-autoloads 'force-p)))
|
||||
bin/doom update"
|
||||
(and (doom-cli-upgrade doom-auto-accept force-p)
|
||||
(doom-cli-packages-update)
|
||||
(doom-cli-reload-package-autoloads 'force-p)))
|
||||
|
||||
|
||||
;;
|
||||
|
@ -44,7 +34,7 @@ Switches:
|
|||
(error "Failed to check working tree in %s" dir))))
|
||||
|
||||
|
||||
(defun doom-upgrade (&optional auto-accept-p force-p)
|
||||
(defun doom-cli-upgrade (&optional auto-accept-p force-p)
|
||||
"Upgrade Doom to the latest version non-destructively."
|
||||
(require 'vc-git)
|
||||
(let ((default-directory doom-emacs-dir)
|
||||
|
@ -110,9 +100,8 @@ Switches:
|
|||
(equal (vc-git--rev-parse "HEAD") new-rev))
|
||||
(error "Failed to check out %s" (substring new-rev 0 10)))
|
||||
(print! (success "Finished upgrading Doom Emacs")))
|
||||
(doom-delete-autoloads-file doom-autoload-file)
|
||||
(doom-delete-autoloads-file doom-package-autoload-file)
|
||||
(doom-cli-refresh "-f")
|
||||
(doom-cli-execute "refresh" (append (if auto-accept-p '("-y")) '("-f")))
|
||||
(doom-cli-execute "update" (if auto-accept-p '("-y")))
|
||||
t)
|
||||
|
||||
(print! (success "Done! Restart Emacs for changes to take effect."))))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue