aboutsummaryrefslogtreecommitdiff
path: root/Assistant/Threads/UpgradeWatcher.hs
Commit message (Collapse)AuthorAge
* make programPath return FilePath not Maybe FilePathGravatar Joey Hess2015-02-28
| | | | | Looking at the few current callers, it's ok to have programPath throw an exception, in the unusual case where it cannot find git-annex.
* update my email address and homepage urlGravatar Joey Hess2015-01-21
|
* revert parentDir changeGravatar Joey Hess2015-01-09
| | | | | | | | Reverts 2bba5bc22d049272d3328bfa6c452d3e2e50e86c Unfortunately, this caused breakage on Windows, and possibly elsewhere, because parentDir and takeDirectory do not behave the same when there is a trailing directory separator.
* made parentDir return a Maybe FilePath; removed most uses of itGravatar Joey Hess2015-01-06
| | | | | | | | parentDir is less safe than takeDirectory, especially when working with relative FilePaths. It's really only useful in loops that want to terminate at / This commit was sponsored by Audric SCHILTKNECHT.
* fix some mixed space+tab indentationGravatar Joey Hess2014-10-09
| | | | | | | | | This fixes all instances of " \t" in the code base. Most common case seems to be after a "where" line; probably vim copied the two space layout of that line. Done as a background task while listening to episode 2 of the Type Theory podcast.
* annex.startupscan can be set to false to disable the assistant's startup scan.Gravatar Joey Hess2014-03-05
|
* tested multi-daemon upgradeGravatar Joey Hess2013-11-24
|
* add support for fully automatic upgradesGravatar Joey Hess2013-11-24
| | | | | | | | | The Upgrader avoids checking for upgrades on startup when it was just upgraded. This avoids an upgrade loop if something goes wrong. One example of something going wrong would be if the upgrade info file and the distribution file get out of sync (or the distribution file is cached in a proxy), so it thinks it has upgraded to a new version, but has really not.
* completely untested linux upgrade codeGravatar Joey Hess2013-11-23
|
* global webapp redirects, to finish upgradesGravatar Joey Hess2013-11-23
| | | | | | | | | | | | | | | | | When an automatic upgrade completes, or when the user clicks on the upgrade button in one webapp, but also has it open in another browser window/tab, we have a problem: The current web server is going to stop running in minutes, but there is no way to send a redirect to the web browser to the new url. To solve this, used long polling, so the webapp is always listening for urls it should redirect to. This allows globally redirecting every open webapp. Works great! Tested with 2 web browsers with 2 tabs each. May be useful for other purposes later too, dunno. The overhead is 2 http requests per page load in the webapp. Due to yesod's speed, this does not seem to noticibly delay it. Only 1 of the requests could possibly block the page load, the other is async.
* better UI flow through upgrade processGravatar Joey Hess2013-11-23
| | | | | Move button to enable automatic upgrades to an alert displayed after successful upgrade. Unclutters the UI and makes psychological sense.
* restart on upgrade is working, including automatic restartGravatar Joey Hess2013-11-23
| | | | | | | | | | Made alerts be able to have multiple buttons, so the alerts about upgrading can have a button that enables automatic upgrades. Implemented automatic upgrading when the program file has changed. Note that when an automatic upgrade happens, the webapp displays an alert about it for a few minutes, and then closes. This still needs work.
* got assistant upgrade detection to notice when I build a new version with ↵Gravatar Joey Hess2013-11-22
| | | | cabal build!
* assistant restart on upgradeGravatar Joey Hess2013-11-22
|
* watch git-annex program file to detect upgradesGravatar Joey Hess2013-11-22
Not yet wired up to restart the assistant on upgrade; that needs careful sanity checking to wait until the upgrade is done before restarting. Used the DirWatcher here, so it gets events for any changes to the directory containing the program file. (But not subdirs.) This is necessary in order to detect when the file is renamed as part of the upgrade, which an inotify on a single file would not detect. (Also, I have DirWatcher code, but not FileWatcher code.) Note that upgrades that remove or rename a whole directory tree containing the executable will *not* trigger this code. So eg, deleting and replacing the whole standalone tarball dir tree won't work -- but untarring it over top will. So should dpkg package upgrades. Added programPath, using a new GHC feature to find the full path to the executable. The fallback code for old GHC or unsupported OS is less good; its worst failure mode would be either failing to find the program, and so not checking for upgrades, or finding a git-annex that's in PATH, but is not the one running. This commit was sponsored by John Roepke.