Skip to content

Improve first-time setup workflow #42

Open
@colindean

Description

@colindean

The first-time setup workflow as of initial public release is effectively:

  1. make deps, which will error if Homebrew isn't found.
    1. User must manually make install-homebrew to install Homebrew, then run make deps again
  2. make deps, via deps-brew will install deps from Homebrew including pyenv
  3. make deps, via install-python via deps-py, will install Python from pyenv, which will error if pyenv isn't found
    1. User must manually add pyenv loading code to shell rcfile, then run make deps again
  4. make deps, via install-poetry via deps-py, will install Poetry using pyenv-installed Python or system Python, whichever it detects first, and only if poetry isn't available as of the start of the current run of make.
  5. make deps, via poetry-install via deps-py, will install Python deps using Poetry, which will error if poetry isn't found
    1. User must manually add ~/.local/bin, Poetry's default installation path, to their PATH in shell rcfile, then run make deps again.
  6. Complete 🎉

There are some steps I skipped in here related to telling Poetry which Python to use (it generally just works) and sync'ing Peru (also generally just works).

These one-time setup steps ("user must manually…") are annoying. While some tasks tell the user that they need to read command output, too many users just… don't.

Possible solutions:

  1. Document most generic thing to pre-add to a user's shellrc file in README.md or at the end of make deps.
  2. Create a task make wreck-my-rcfile or maybe more nicely make setup-rcfile-once that modifies the shellrc with what should be put there carefully manually.
  3. No action: let the user suffer having ignored the nudge to read command output.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions