The new subdirectory 'gemini' has been added. It represents everything
required to implement gemini in rover using rover's internal API. The
internal API's usage is detailed in the FileProtocol class in rover.py.
Adding new protocols requires adding a new subdirectory and implementing
rover's internal API. No protocol specific code, other than local
filesystem code, should exist in rover.py.
Includes a fix for 'rover fetch'. If rover fetch encounters an error
then the program's exit code is set to 1.
Minor modification that allows the landing of rover directories using
relative paths only. One must be in a rover directory in order to use
this functionality.
Example:
$ rover land ~/tmp # Lands ~/tmp which contains the directory 'a'
$ cd ~/tmp
$ rover land a
Since '--recursive' was not specified when landing the changes, the
directory 'a' is not populated until the second land command.
The mkdir api complements 'rover submit'. Mkdir operates on directories
whereas 'rover submit' works only on files.
Alongside this change path_to_url was removed. The code was merged with
rover url handling and completed a pre-existing TODO.
Introduces the ability for protocols to normalize in input URL before
further processing.
For example, the file:// API requires that directories are terminated
with a forward slash to ensure proper caching.
Largely replaces --retour functionality. Unread (-u) marks files as
unread upon first land. Those files do not show up in rover tour (unlike
--retour). Unread files can be fetched using 'rover fetch . -u' while in
a rover directory. This is such a common operation that 'rover fetch' is
a shortcut for 'rover fetch . -u'.
I may remove the 'rover fetch' shortcut in the future as it should be up
to the user to choose aliases.
Other minor changes in this revision:
* Any errors upon land are now propogated out of rover using 'error_occurred'.
* Fix a problem where mark_for_land would err when attempting to delete
'local_path' when 'local_path' did not exist. This is a problem when
using the 'rover land -u' feature.
All tests pass. No functionality changed. As previously implemented
--unread would add files to 'rover tour'. However, when landing a new
directory that can result in a firehose of updates sent to 'rover tour'.
So --unread was renamed to --retour. In it's place -u will implement the
desired 'unread' functionality. Alongside 'rover fetch -u', 'rover land -u'
will implement the spirit of 'unread' updates. One where *you* choose
when to consume updates. Not all at once.