# New commands for signups, rough draft

## town-signup

this binary is run by OpenSSH when a user anywhere in the world runs `ssh join@tilde.town`. It should:

- collect information about an application from a user
- allow them to edit their responses before submitting
- write a yaml file of their responses to disk 

## review-signups

this binary is run by town admins in order to review, approve, notate, and reject applications. It should:

- iterate over signups
- allow fuzzy finding a particular signup
- allow approval using create-user
- allow rejection
  - just move signup to archived rejected signup directory
- allow notating an application, ie:
  - lock the yaml file for writing
  - add notes to the yaml file that can be seen by other admins
- print info about historical signups

## create-user

this binary is called by `review-signups` to take a yaml application and create a user on disk. It should:

- create the user idempotently
  - `adduser`
  - `usermod` to set group
  - calling `add-key` for user
- move the yaml file to an archive directory of approved signups

## user-key

this binary helps manage keys for users; basically automating the listing, adding, and removing of public keys for a user.

- `user-key add <username> <keyfile`
- `user-key list <username>`
- `user-key remove <username>`