Tags: BlakeWilliams/remote-development-manager
Tags
Add launchd daemon support for macos (#16) * Add command to install LaunchAgent * Move `rdm service` to `rdm service install` subcommand * wip * state to new package * Clean up redundant code * More tweaks * Poll for service to come up * Move launchd code into a new library https://github.com/brasic/launchd Also add support for starting, stopping and uninstalling the service. * Remove a way things can fail This pulls in a breaking change from launchd: brasic/launchd@f5c0c73 Now the signature of ForRunningProgram has no error so we don't need to handle it. * Update README.md Co-authored-by: Blake Williams <blakewilliams@github.com> * Update internal/cmd/service.go * Gracefully shutdown the http server Some logging changes exposed the fact that we were not actually shutting down the server on SIGINT/TERM. Change that, and add some entries to the server log indicating when a server came up and went down. * Update brasic/launchd to v1.0.1 to pull bugfix brasic/launchd@5335064 * Update to universal logger. This consolidates everything under a single logger which is unprefixed and delivered to stderr when being used for human-readable messages (ie CLI context) and timestamp-prefixed and multiplexed to both the log file and stdout when used in server context. We manage the transition from CLI to long-lived process by reconfiguring the existing logger built in main.go. One advantage of this is that things that need to log inside main.go but the server log should know about (like signal receipt) get sent to the right place instead of a now-likely-disconnected stderr. * Fix test interdependence These tests are order dependendent and not parallel safe, apparently because some of them launch goroutines that outlive the tests themselves yet continue to use package global resources like httpClient and the implicitly global unix socket at path. Give each test its own copy of these resources to fix flaky tests. --------- Co-authored-by: Blake Williams <blakewilliams@github.com>
Properly support reading stdin (#8) Currently we read from stdin and always append a newline due to `scanner.Scan` splitting on newlines. This isn't always correct, since input doesn't always have a newline. This resolves the issue by using `bufio.Reader.ReadBytes` which reads up-to the delimiter and includes it, preserving newlines.