<feed xmlns='http://www.w3.org/2005/Atom'>
<title>archangel/.shellcheckrc, branch main</title>
<subtitle>Arch Linux installer ISO — ZFS-on-root or BTRFS, doubles as rescue disk
</subtitle>
<id>https://git.cjennings.net/archangel/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/archangel/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/'/>
<updated>2026-04-13T04:16:04+00:00</updated>
<entry>
<title>refactor: decompose install_btrfs into named orchestration stages</title>
<updated>2026-04-13T04:16:04+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-13T04:16:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=a15a92cf36d2460784587b3fa6f586e94e9ff6ab'/>
<id>urn:sha1:a15a92cf36d2460784587b3fa6f586e94e9ff6ab</id>
<content type='text'>
Pull the single-vs-multi-disk and LUKS-vs-no-encryption branching out
of install_btrfs() into five helpers in lib/btrfs.sh:

- btrfs_open_encryption         — LUKS open + fill devices array
- btrfs_make_filesystem         — create_btrfs_volume dispatch
- btrfs_configure_luks_target   — in-chroot LUKS config
- btrfs_install_grub            — GRUB primary + multi-disk mirror
- btrfs_close_encryption        — LUKS close (cleanup)

Helpers use namerefs (local -n) to take the caller's arrays as locals
instead of promoting them to globals. install_btrfs() drops from ~99
lines of nested if-then-else to a ~45-line flat sequence of named
stages — matching the style of install_zfs().

Behavior preserved — this is pure code movement, no new disk/LUKS
operations. No unit tests added for the new helpers: they all wrap
real LUKS/mkfs.btrfs calls that need block devices and root; VM
integration tests in scripts/test-install.sh remain the source of
truth. .shellcheckrc: disable SC2178 (nameref array heuristic) and
SC2153 (globals from sourced files) — both recurring false positives.

make test: 65/65. shellcheck clean.
</content>
</entry>
<entry>
<title>refactor: rename custom/ to installer/ for clarity</title>
<updated>2026-02-23T17:54:25+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-23T17:54:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=fd2ea796b20bcbebea19c43978fb08e3cd6754ed'/>
<id>urn:sha1:fd2ea796b20bcbebea19c43978fb08e3cd6754ed</id>
<content type='text'>
The custom/ directory name was an archiso implementation detail. Renamed
to installer/ which clearly communicates that this directory contains the
installer scripts and utilities that ship on the ISO.

Updated all references in build.sh, Makefile, test-install.sh, and README.
</content>
</entry>
<entry>
<title>chore: add .shellcheckrc to suppress intentional shellcheck warnings</title>
<updated>2026-02-23T12:11:24+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-23T12:11:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=aaa634d5095eff780b520d98f2bba0147e9d4915'/>
<id>urn:sha1:aaa634d5095eff780b520d98f2bba0147e9d4915</id>
<content type='text'>
Configure shellcheck to ignore false positives from sourced file
patterns (SC2034), intentional word splitting (SC2086), and other
stylistic warnings that don't represent bugs.
</content>
</entry>
</feed>
