Files
2026-05-10 18:55:21 -05:00

1.2 KiB

Phase 2

Phase 2 is about error handling. We want to add some variants to DrawerError and a validate method to DrawerOperation that will catch various problems and ensure that we can do the operation correctly. Here are some error cases in no particular order:

  • If the command is Open and the drawer file does not exist.
  • If the command is Close and the target path either does not exist, is not a directory, or is not readable.
  • If the key is EnvVar but the $DRAWER_KEY environment variable is not set, or is not set to a path that exists and is readable.
  • If the key is Path() but the path does not exist or is not readable.
  • If the command is Open and the target is a non-empty directory that exists, and the force flag is false
  • If the command is Close and the target contains the drawer file (at any level; the target is any parent of the drawer file's path)

The validate method should take &self and return Result<(), DrawerError>. Let's have main, which is currently creating a DrawerOperation and not using it, also call validate and print out the error if there is one. This means we also need to impl Display on DrawerError.