Skip to content

Pup Development Experience #22

Description

@SomeoneWeird

We need to come up with a better developer experience for people building pups.

At the moment, having to rebuild completely rebuild a pup when something has changed is not ideal.

Ideally, we extract the dbx pup subcommand that already exists into its own first-class citizen, maybe just called dbxpup (as we want users to be able to install this on their own development computers, pup is probably too generic?)

This would have a bunch of subcommands:

  • pup init: Prompts the user for a bunch of things, and then scaffolds a new pup in a directory.
  • pup rebuild: As we probably won't hot-reload changes to manifest.json or pup.nix, we need an explicit command to rebuild the system if either of these things are changed.
  • pup logs: Connects and tails the logs from the container running your pup.
  • pup [action]: Where action could be stop, start, or restart.

The above commands would all work when running on the dogebox, but we need to think of remote-development too.

The easiest solution would be for the user to enable SSH (which is already possible) and then modify files directly on the Dogebox via whatever mechanism they would like.

The more complicated solution is for the pup command to authenticate with the remote Dogeboxd instance, and expose APIs for specific functionality of the above commands while on a remote host.

A pup that is loaded from a disk source should be put into developer mode, and its file contents loaded as a bind mount instead of through the /nix/store for its container contents.

DPanel should have some extra developer UI buttons added for these pups to allow for manual rebuilding etc.

Metadata

Metadata

Assignees

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