From 55540b623415cad06608ee2d3972acc6735686fe Mon Sep 17 00:00:00 2001 From: Tim Dennis Date: Thu, 16 Jul 2026 18:41:06 -0700 Subject: [PATCH] Add core DSC data-tooling gaps: yq, yamllint, git-lfs, xan, pandoc, shellcheck Cross-checked Tim's actual Homebrew leaves against what the script installs. These five are things DSC/DataSquad staff actually use day to day that weren't in the shared onboarding script: - pandoc: was commented out entirely; turns out it's used directly, not just pulled in transitively via Quarto - yq: YAML sibling to jq (already in script) -- used on project-registry.yaml, Carpentries lesson config.yaml, GH workflows - yamllint: validates the same YAML files - git-lfs: large file support in git, relevant for a data science center's datasets; also runs `git lfs install` after brew bundle so the hooks are actually registered, not just the binary present - xan: fast CSV toolkit, core to DSC's data work - shellcheck: added it myself this session to validate `mac` -- keeping it in the script so future maintainers have it without a manual step (updated the Contributing section's instructions accordingly) Left out as personal-preference rather than DSC-standard: podman (already decided Docker Desktop for the shared script), ollama, ocean of general CLI tools (fzf, neovim, go, etc). Also left out hugo/rbenv and MacTeX/TinyTeX per this round's scope -- can revisit if the Jekyll/Hugo site work or Quarto PDF output becomes a common laptop-setup pain point. Verified with shellcheck (same pre-existing warning set) and brew bundle check (all names resolve). --- README.md | 19 +++++++++++++++++-- mac | 12 +++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0c0e3f3d4..140b1b9e7 100644 --- a/README.md +++ b/README.md @@ -93,10 +93,14 @@ Unix tools: * [Watchman] for watching for filesystem events * [Zsh] as your shell * [rlwrap] readline wrapper +* [pandoc] markup converter (also used under the hood by Quarto) * [tree] lists contents of directory in a tree like structure * [jq] JSON parser +* [yq] YAML/XML processor, same idea as jq -- used on `project-registry.yaml`, Carpentries lesson `config.yaml`, and GitHub workflow files * [wget] network downloader * [rclone] cloud storage data synch +* [git-lfs] Git support for large data files +* [xan] fast CSV toolkit for data work * [docker] container runtime (Docker Desktop, includes CLI + GUI) [Universal Ctags]: https://ctags.io/ @@ -107,10 +111,14 @@ Unix tools: [Tmux]: http://tmux.github.io/ [Watchman]: https://facebook.github.io/watchman/ [rlwrap]: https://linux.die.net/man/1/rlwrap +[pandoc]: https://pandoc.org [tree]: https://linux.die.net/man/1/tree [jq]: https://stedolan.github.io/jq/ +[yq]: https://github.com/mikefarah/yq [wget]: https://www.geeksforgeeks.org/wget-command-in-linux-unix/ [rclone]: https://rclone.org +[git-lfs]: https://git-lfs.com/ +[xan]: https://github.com/medialab/xan [docker]: https://www.docker.com/products/docker-desktop/ * [GitHub CLI] for interacting with the GitHub API @@ -137,6 +145,13 @@ Languages and editors: [Node.js]: https://nodejs.org/ [Quarto]: https://quarto.org/ +Linting / repo maintenance: + +* [ShellCheck] for shell script linting (used on `mac` itself, see Contributing below) +* [yamllint] for YAML linting + +[yamllint]: https://yamllint.readthedocs.io/ + It should take less than 15 minutes to install (depends on your machine). See the [wiki](https://github.com/UCLA-DataSquad/laptop/wiki) @@ -147,10 +162,10 @@ Contributing 1. Edit the `mac` file. 2. Document in the `README.md` file. -3. Follow shell style guidelines by using [ShellCheck] and [Syntastic]. +3. Follow shell style guidelines by using [ShellCheck] and [Syntastic]. `shellcheck` is installed by `mac` itself (see above), so if you've already run the script once you have it: ```sh -brew install shellcheck +shellcheck -s sh mac ``` [ShellCheck]: http://www.shellcheck.net/about.html diff --git a/mac b/mac index ccd775c71..8376205e9 100644 --- a/mac +++ b/mac @@ -103,11 +103,14 @@ brew "xz" brew "libxt" brew "cairo" brew "rlwrap" -#brew "pandoc" +brew "pandoc" brew "tree" brew "jq" +brew "yq" brew "wget" brew "rclone" +brew "git-lfs" +brew "xan" # GitHub brew "gh" @@ -119,6 +122,10 @@ brew "imagemagick" brew "libyaml" # should come after openssl brew "coreutils" +# Linting / repo maintenance +brew "shellcheck" +brew "yamllint" + #Programming languages brew "r" brew "node" # provides node + npm; Astro/Jekyll/Hugo site tooling is scaffolded per-project via npm/bundler, not installed globally @@ -146,6 +153,9 @@ fancy_echo "Setting up Miniforge conda ..." conda init "$(basename "${SHELL}")" conda update -y conda +fancy_echo "Setting up git-lfs ..." +git lfs install + # uncomment if you want to create and run your own local additions to this script #if [ -f ".laptop.local" ]; then # fancy_echo "Running your customizations from ~/.laptop.local ..."