Commit graph

25 commits

Author SHA1 Message Date
Henrik Lissner
9b8ed397e8
feat!(cli): load project .doomrc instead of ci.el
BREAKING CHANGE: Before, 'doom ci' would load
$GIT_WORKING_TREE/.github/ci.el, to give users/projects an opportunity
to provide project-local configuration for bin/doom (mainly for CI/CD).
Now, this ci.el file is no longer loaded and instead, *all* bin/doom
sessions will walk up the file tree and load the first .doomrc it finds.

This gives bin/doom users a more general place configure all of its
commands, and not just 'doom ci' commands.

Extras:
- Adds .doomrc to auto-mode-alist (so that it starts in
  emacs-lisp-mode).
2022-08-07 19:43:28 +02:00
Henrik Lissner
422baedad7
refactor(cli): load cli libs from doom.el
This simplifies the entry point for loading Doom (and/or its CLI
framework).
2022-08-07 19:43:28 +02:00
Henrik Lissner
50f0cebe92
feat(cli): generalize 'doom make codeowners'
- Adds -o/--file option,
- If -o/--file is passed a dash, print codeowners to stdout,
- Adds --dryrun option,
- Will accept literal string entries in doom-make-codeowners as
  standalone lines (useful for comments).
2022-08-07 19:43:28 +02:00
Henrik Lissner
d92a81bf2d
feat(lib): add lib/git
Where future git wrappers will live.
2022-08-07 19:43:28 +02:00
Henrik Lissner
b7b2563f7b
feat(cli): add implicit date, time, duration, & size types 2022-08-07 19:43:28 +02:00
Henrik Lissner
e5acbd7c40
docs(cli): make file/dir/stdout type errors consistent 2022-08-07 19:43:27 +02:00
Henrik Lissner
d53e08767d
feat(cli): add stdout implicit arg type
CLIs can now use this for implicit validation for options that take a
file path or - to signal "print to stdout", like so:

  (defcli! (doom command) ((outfile ("--out" (file stdout))))
    (if (equal outfile "-")
        (print! "output")
      (with-temp-file outfile
        (insert "output"))))

If OUTFILE is not an existing file path or a -, you'll see an this
helpful error:

  Error: -o/--file received invalid value "FOO"

  Validation errors:
  - Must be a dash to signal stdout.
  - File does not exist.

  See 'doom h[elp] make codeowners' or 'doom make codeowners {-?,--help}' for documentation.
2022-08-07 19:43:27 +02:00
Henrik Lissner
26bc4ea150
feat(cli): allow multiple implicit types for options
Now you can specify more than one allowed (implicit) for a CLI option:

  (defcli! (doom somecommand) ((foo ("--foo" (file int)))))

This will test FOO to ensure it is either an existing file path or an
integer. If neither is true, you'll see this helpful error:

  Error: -o/--file received invalid value "FOO"

  Validation errors:
  - Not an integer.
  - Not a valid path to an existing file.
2022-08-07 19:43:27 +02:00
Henrik Lissner
057e6c531c
refactor: replace doom-enlist with ensure-list
doom-enlist is now a deprecated alias for ensure-list, which is built
into Emacs 28.1+ and is its drop-in replacement. We've already
backported it for 27.x users in doom-lib (in 4bf4978).

Ref: 4bf49785fd
2022-08-07 19:43:13 +02:00
Henrik Lissner
0ed2b95dba
refactor(cli): include envvars in _doomrun debug logs 2022-08-06 18:43:14 +02:00
Henrik Lissner
725de1ca35
perf(docs): disable gc for doom-docs-org-mode 2022-08-05 21:44:09 +02:00
Henrik Lissner
433c9e344d
feat(lib): backport file-name-concat from 28.1
May replace doom-path in the future.
2022-08-05 17:35:46 +02:00
Henrik Lissner
2254b8c561
fix(cli): doom-cli-context persistence
20d5440 introduced a regression where options would be lost when a CLI
session is restarted. :config literate users, for example, would run
'doom sync -u' only for the -u option to be ignored, because it was
discarded after the literate module restarts the session.

Amend: 20d5440023
2022-08-05 00:49:17 +02:00
Henrik Lissner
55544200be
release(modules): 22.08.0-dev
Ref: 2b39e41368
2022-08-04 01:29:37 +02:00
Henrik Lissner
d6ffd2bfaa
fix(file-templates): update doom doc templates
To reflect the new mode: line added in 7e400ab, and add an ID property.
Also corrects heading level in __doom-readme file template.

Ref: 7e400abdc0
2022-08-04 01:15:23 +02:00
Henrik Lissner
c1512feea1
fix(docs): disable doom-docs--hide-stars-h
Hiding the stars with org-fold breaks org-cycle, so until I have time to
fix it, I'll disable this hook altogether.
2022-08-03 04:20:52 +02:00
Henrik Lissner
1f8bf7accb
merge: rewrite-docs
I've omitted docs/*.org from this merge, as there is still work left to
do there, but I am pushing the module docs early so folks can benefit
from the new docs sooner.
2022-08-03 03:27:50 +02:00
Henrik Lissner
52bda5f4e7
fix: move bookmark-default-file to doom-etc-dir
A regression introduced in 46844b55de moved bookmarks to
doom-cache-dir, which is not where user data belongs.

Fix: #6540
Amend: 46844b55de
2022-08-03 03:09:27 +02:00
Henrik Lissner
2d53fe6123
refactor: resolve doom-core-dir relative to source file
Instead of relative to doom-emacs-dir, which may or may not be where
this core lives (made more of a possibility once core has a repo to
itself).
2022-08-02 20:19:03 +02:00
Henrik Lissner
2bb052ac17
tweak(lib): fix doomemacs URLs in help commands 2022-08-02 20:15:29 +02:00
Henrik Lissner
4ee7f0113e
fix(cli): show straight logs after straight error
Instead of displaying an unhelpful backtrace about failed git commands,
show the tail of the *straight-process* buffer.
2022-07-31 23:44:10 +02:00
Henrik Lissner
55736ac2a6
fix(lib): prevent autoload failure at startup
In some edge cases, an early call to doom-log will cause an autoload
error because of one or more of the following is true:

- The autoloads file hasn't been generated or loaded,
- The autoloads file is out of date (especially relevant after
  b9933e6),
- doom-cli hasn't loaded lib/files eagerly yet.

To avoid this, and due to how prolific doom-log's uses are, and how
trivial the dependency is, I simply remove the dependency.

Amend: b9933e6637
2022-07-31 13:31:21 +02:00
Henrik Lissner
615848e3a7
fix(cli): more future resistant 'doom upgrade'
In the future, should doom-core-dir or {doom-core-dir}/packages.el
change, 'doom upgrade' won't leave the repo in a broken state.
Unfortunately, this cannot retroactively prevent the issue; users will
experience this as soon as they update to b9933e6 or beyond, so users
will have to upgrade manually to overcome it:

  cd ~/.emacs.d
  git reset --hard 35a89bdfa6
  git pull origin master
  doom sync -u

Fix: #6598
Amend: b9933e6637
2022-07-31 00:58:36 +02:00
Henrik Lissner
29dc2fed29
refactor(cli): use sh! instead of doom-call-process 2022-07-31 00:27:05 +02:00
Henrik Lissner
b9933e6637
refactor!: restructure Doom core
BREAKING CHANGE: This restructures the project in preparation for Doom
to be split into two repos. Users that have reconfigured Doom's CLI
stand a good chance of seeing breakage, especially if they've referred
to any core-* feature, e.g.

  (after! core-cli-ci ...)

To fix it, simply s/core-/doom-/, i.e.

  (after! doom-cli-ci ...)

What this commit specifically changes is:
- Renames all core features from core-* to doom-*
- Moves core/core-* -> lisp/doom-*
- Moves core/autoloads/* -> lisp/lib/*
- Moves core/templates -> templates/

Ref: #4273
2022-07-30 22:41:13 +02:00