git-annex/Command
Joey Hess 04c12aa6df
custom protocol for transferrer
Rather than using Read/Show, which would force me to preserve data types
into the future.

I considered just deriving json and sending that, but I don't much like
deriving json with data types that have named constructors (like Key
does) because again it locks in data type details.

So instead, used SimpleProtocol, with a fairly complex and unreadable
protocol. But it is as efficient as the p2p protocol at least, and as
future proof.

(Writing my own custom json instances would have worked but I thought
of it too late and don't want to do all the work twice. The only real
benefit might be that aeson could be faster.)

Note that, when a new protocol request type is added later, git-annex
trying to use it will cause the git-annex transferrer to display a
protocol error message. That seems ok; it would only happen if a new
git-annex found an old version of itself in PATH or the program
file. So it's unlikely, and all it can do anyway is display an error.
(The error message could perhaps be improved..)

This commit was sponsored by Jack Hill on Patreon.
2020-12-09 16:13:59 -04:00
..
Add.hs add warning on add of annex link 2020-11-10 12:10:51 -04:00
AddUnused.hs more RawFilePath conversion 2020-11-03 10:11:04 -04:00
AddUrl.hs refactoring 2020-12-07 14:49:17 -04:00
Adjust.hs rename to --unlock-present and better reverse adjusting 2020-11-13 14:56:43 -04:00
Assistant.hs finished this stage of the RawFilePath conversion 2020-11-04 14:20:37 -04:00
Benchmark.hs improve benchmark --databases 2019-11-21 17:25:20 -04:00
CalcKey.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
CheckPresentKey.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Commit.hs use Branch.name instead of hard coding the branch name 2020-09-15 15:47:22 -04:00
Config.hs add "input" field to json output 2020-09-15 16:22:44 -04:00
ConfigList.hs all commands building except for assistant 2019-12-05 14:41:18 -04:00
ContentLocation.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Copy.hs more RawFilePath conversion 2020-11-03 10:11:04 -04:00
Dead.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Describe.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
DiffDriver.hs use filepath-bytestring for annex object manipulations 2019-12-11 15:25:07 -04:00
Direct.hs Automatically convert direct mode repositories to v7 with adjusted unlocked branches 2019-08-26 15:05:25 -04:00
Drop.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
DropKey.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
DropUnused.hs more RawFilePath conversion 2020-11-03 10:11:04 -04:00
EnableRemote.hs cache remote.log 2020-09-22 13:52:26 -04:00
EnableTor.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
ExamineKey.hs examinekey: Added a "file" format variable 2020-11-16 09:59:11 -04:00
Expire.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Export.hs refactoring 2020-12-07 14:49:17 -04:00
Find.hs examinekey: Added a "file" format variable 2020-11-16 09:59:11 -04:00
FindRef.hs Ref ByteString conversion done 2020-04-07 17:41:09 -04:00
Fix.hs finished this stage of the RawFilePath conversion 2020-11-06 14:10:58 -04:00
Forget.hs use Branch.name instead of hard coding the branch name 2020-09-15 15:47:22 -04:00
FromKey.hs more RawFilePath conversion 2020-11-03 10:11:04 -04:00
Fsck.hs finished this stage of the RawFilePath conversion 2020-11-06 14:10:58 -04:00
FuzzTest.hs finish fixing removeLink on windows 2020-11-24 13:20:44 -04:00
GCryptSetup.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Get.hs refactoring 2020-12-07 14:49:17 -04:00
Group.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
GroupWanted.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Help.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Import.hs finished this stage of the RawFilePath conversion 2020-11-04 14:20:37 -04:00
ImportFeed.hs finished this stage of the RawFilePath conversion 2020-11-04 14:20:37 -04:00
InAnnex.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Indirect.hs Automatically convert direct mode repositories to v7 with adjusted unlocked branches 2019-08-26 15:05:25 -04:00
Info.hs convert getFileSize to RawFilePath 2020-11-05 11:32:57 -04:00
Init.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
InitRemote.hs cache remote.log 2020-09-22 13:52:26 -04:00
Inprogress.hs more RawFilePath conversion 2020-11-02 16:31:28 -04:00
List.hs add "input" field to json output 2020-09-15 16:22:44 -04:00
Lock.hs finished this stage of the RawFilePath conversion 2020-11-06 14:10:58 -04:00
LockContent.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Log.hs more RawFilePath conversion 2020-11-02 16:31:28 -04:00
LookupKey.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Map.hs more RawFilePath conversion 2020-11-02 16:31:28 -04:00
MatchExpression.hs split ProvidedInfo and UserProvidedInfo 2020-09-28 12:12:38 -04:00
Merge.hs use Branch.name instead of hard coding the branch name 2020-09-15 15:47:22 -04:00
MetaData.hs more RawFilePath conversion 2020-11-02 16:31:28 -04:00
Migrate.hs more RawFilePath conversion 2020-11-03 10:11:04 -04:00
Mirror.hs more RawFilePath conversion 2020-11-03 10:11:04 -04:00
Move.hs refactoring 2020-12-07 14:49:17 -04:00
Multicast.hs finish fixing removeLink on windows 2020-11-24 13:20:44 -04:00
NotifyChanges.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
NumCopies.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
P2P.hs finish fixing removeLink on windows 2020-11-24 13:20:44 -04:00
P2PStdIO.hs finish CommandStart transition 2019-06-12 13:24:01 -04:00
PostReceive.hs sync --only-annex and annex.synconlyannex 2020-02-17 16:33:10 -04:00
PreCommit.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Proxy.hs Automatically convert direct mode repositories to v7 with adjusted unlocked branches 2019-08-26 15:05:25 -04:00
ReadPresentKey.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
RecvKey.hs annex.adjustedbranchrefresh 2020-11-16 14:27:28 -04:00
RegisterUrl.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Reinit.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Reinject.hs annex.adjustedbranchrefresh 2020-11-16 14:27:28 -04:00
ReKey.hs annex.adjustedbranchrefresh 2020-11-16 14:27:28 -04:00
RemoteDaemon.hs remotedaemon: Don't list --stop in help since it's not supported. 2019-09-30 14:40:46 -04:00
RenameRemote.hs cache remote.log 2020-09-22 13:52:26 -04:00
Repair.hs finished this stage of the RawFilePath conversion 2020-11-06 14:10:58 -04:00
Required.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
ResolveMerge.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
RmUrl.hs more RawFilePath conversion 2020-11-02 16:31:28 -04:00
Schedule.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Semitrust.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
SendKey.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
SetKey.hs annex.adjustedbranchrefresh 2020-11-16 14:27:28 -04:00
SetPresentKey.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Smudge.hs add warning on add of annex link 2020-11-10 12:10:51 -04:00
Status.hs more RawFilePath conversion 2020-11-02 16:31:28 -04:00
Sync.hs avoid redundant adjusted branch update in sync 2020-11-16 15:13:48 -04:00
Test.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
TestRemote.hs annex.adjustedbranchrefresh 2020-11-16 14:27:28 -04:00
TransferInfo.hs more RawFilePath conversion 2020-11-02 16:31:28 -04:00
TransferKey.hs refactoring 2020-12-07 14:49:17 -04:00
TransferKeys.hs move new interface to git-annex transfer 2020-12-09 12:33:56 -04:00
Transferrer.hs custom protocol for transferrer 2020-12-09 16:13:59 -04:00
Trust.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Unannex.hs finished this stage of the RawFilePath conversion 2020-11-06 14:10:58 -04:00
Undo.hs finished this stage of the RawFilePath conversion 2020-11-04 14:20:37 -04:00
Ungroup.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Uninit.hs finished this stage of the RawFilePath conversion 2020-11-06 14:10:58 -04:00
Unlock.hs more RawFilePath conversion 2020-10-30 15:55:59 -04:00
Untrust.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Unused.hs more RawFilePath conversion 2020-10-30 15:55:59 -04:00
Upgrade.hs switch to Haskell2010 2020-10-19 11:26:16 -04:00
VAdd.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
VCycle.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Version.hs external backends wip 2020-07-29 15:23:18 -04:00
VFilter.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Vicfg.hs finish fixing removeLink on windows 2020-11-24 13:20:44 -04:00
View.hs more RawFilePath conversion 2020-10-30 15:55:59 -04:00
VPop.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Wanted.hs add SeekInput (not yet used) 2020-09-15 15:41:13 -04:00
Watch.hs remotedaemon: Don't list --stop in help since it's not supported. 2019-09-30 14:40:46 -04:00
WebApp.hs finished this stage of the RawFilePath conversion 2020-11-04 14:20:37 -04:00
Whereis.hs examinekey: Added a "file" format variable 2020-11-16 09:59:11 -04:00