update help strings, reorder main commands, and take application status info out of 'status' command

This commit is contained in:
Jimmy Kiselak 2015-10-23 18:00:10 -04:00
parent e124f582aa
commit c0312159eb
2 changed files with 103 additions and 57 deletions

View file

@ -52,10 +52,15 @@ class ConsoleControl(basic.LineReceiver):
def show_quick_help(self): def show_quick_help(self):
self.sendLine("Available commands:") self.sendLine("Available commands:")
self.sendLine("") self.sendLine("")
for command, handler in sorted(self.command_handlers.items(), key=lambda x: x[0]): showed_help_all = False
if handler.is_main_command is True: sorted_handlers = sorted(self.command_handlers.items(), key=lambda x: x[0])
self.sendLine(command + " - " + handler.short_help) sorted_handlers = sorted(sorted_handlers, key=lambda x: x[1].priority, reverse=True)
for command, handler in sorted_handlers:
if handler.priority > 0:
if showed_help_all is False and handler.priority < 10:
self.sendLine("help-all - Show the full list of available commands") self.sendLine("help-all - Show the full list of available commands")
showed_help_all = True
self.sendLine(command + " - " + handler.short_help)
self.sendLine("") self.sendLine("")
self.sendLine("For more information about any command type 'help <command>'") self.sendLine("For more information about any command type 'help <command>'")

View file

@ -50,7 +50,7 @@ class InvalidValueError(Exception):
class CommandHandlerFactory(object): class CommandHandlerFactory(object):
implements(ICommandHandlerFactory) implements(ICommandHandlerFactory)
is_main_command = False priority = 0
short_help = "This should be overridden" short_help = "This should be overridden"
full_help = "This should really be overridden" full_help = "This should really be overridden"
command = "this-must-be-overridden" command = "this-must-be-overridden"
@ -240,7 +240,6 @@ class ApplicationStatus(CommandHandler):
class ApplicationStatusFactory(CommandHandlerFactory): class ApplicationStatusFactory(CommandHandlerFactory):
control_handler_class = ApplicationStatus control_handler_class = ApplicationStatus
is_main_command = False
command = "application-status" command = "application-status"
short_help = "Show application status" short_help = "Show application status"
full_help = "Show total bytes uploaded to other peers, total bytes downloaded from peers," \ full_help = "Show total bytes uploaded to other peers, total bytes downloaded from peers," \
@ -279,7 +278,7 @@ class GetWalletBalances(CommandHandler):
class GetWalletBalancesFactory(CommandHandlerFactory): class GetWalletBalancesFactory(CommandHandlerFactory):
control_handler_class = GetWalletBalances control_handler_class = GetWalletBalances
is_main_command = True priority = 10
command = "balance" command = "balance"
short_help = "Show LBRYcrd balance" short_help = "Show LBRYcrd balance"
full_help = "Show the LBRYcrd balance of the wallet to which this application is connected" full_help = "Show the LBRYcrd balance of the wallet to which this application is connected"
@ -310,7 +309,6 @@ class GetNewWalletAddress(CommandHandler):
class GetNewWalletAddressFactory(CommandHandlerFactory): class GetNewWalletAddressFactory(CommandHandlerFactory):
control_handler_class = GetNewWalletAddress control_handler_class = GetNewWalletAddress
is_main_command = False
command = "get-new-address" command = "get-new-address"
short_help = "Get a new LBRYcrd address" short_help = "Get a new LBRYcrd address"
full_help = "Get a new LBRYcrd address from the wallet to which this application is connected" full_help = "Get a new LBRYcrd address from the wallet to which this application is connected"
@ -345,7 +343,7 @@ class ShutDown(CommandHandler):
class ShutDownFactory(CommandHandlerFactory): class ShutDownFactory(CommandHandlerFactory):
control_handler_class = ShutDown control_handler_class = ShutDown
is_main_command = True priority = 5
command = "exit" command = "exit"
short_help = "Shut down" short_help = "Shut down"
full_help = "Shut down" full_help = "Shut down"
@ -381,11 +379,10 @@ class LBRYFileStatus(CommandHandler):
class LBRYFileStatusFactory(CommandHandlerFactory): class LBRYFileStatusFactory(CommandHandlerFactory):
control_handler_class = LBRYFileStatus control_handler_class = LBRYFileStatus
is_main_command = False
command = "lbryfile-status" command = "lbryfile-status"
short_help = "Print status information for LBRY files" short_help = "Print status information for LBRY files"
full_help = "Print the status information for all streams that are being saved to disk." \ full_help = "Print the status information for all streams that are being saved to disk." \
"This includes whether the stream is currently downloading and teh progress" \ "This includes whether the stream is currently downloading and the progress" \
"of the download." "of the download."
@ -676,7 +673,6 @@ class AddStreamFromSD(AddStream):
class AddStreamFromSDFactory(CommandHandlerFactory): class AddStreamFromSDFactory(CommandHandlerFactory):
control_handler_class = AddStreamFromSD control_handler_class = AddStreamFromSD
is_main_command = False
command = "get-sd" command = "get-sd"
short_help = "Download a stream from a plaintext stream descriptor file" short_help = "Download a stream from a plaintext stream descriptor file"
full_help = "Download a stream from a plaintext stream descriptor file.\n" \ full_help = "Download a stream from a plaintext stream descriptor file.\n" \
@ -714,7 +710,6 @@ class AddStreamFromHash(AddStream):
class AddStreamFromHashFactory(CommandHandlerFactory): class AddStreamFromHashFactory(CommandHandlerFactory):
control_handler_class = AddStreamFromHash control_handler_class = AddStreamFromHash
is_main_command = False
command = "get-hash" command = "get-hash"
short_help = "Download a stream from a hash" short_help = "Download a stream from a hash"
full_help = "Download a stream from the hash of the stream descriptor. The stream " \ full_help = "Download a stream from the hash of the stream descriptor. The stream " \
@ -800,21 +795,23 @@ class AddStreamFromLBRYcrdName(AddStreamFromHash):
if self.key_fee is None or self.key_fee_address is None: if self.key_fee is None or self.key_fee_address is None:
i.append(("decryption key fee", "Free")) i.append(("decryption key fee", "Free"))
else: else:
i.append(("decription key fee", str(self.key_fee))) i.append(("decryption key fee", str(self.key_fee)))
i.append(("address to pay key fee", str(self.key_fee_address))) i.append(("address to pay key fee", str(self.key_fee_address)))
return i return i
class AddStreamFromLBRYcrdNameFactory(CommandHandlerFactory): class AddStreamFromLBRYcrdNameFactory(CommandHandlerFactory):
control_handler_class = AddStreamFromLBRYcrdName control_handler_class = AddStreamFromLBRYcrdName
is_main_command = True priority = 100
command = "get" command = "get"
short_help = "Download a stream from a name" short_help = "Download a stream from a name"
full_help = "Download a stream associated with a name on the LBRYcrd blockchain. The name will be" \ full_help = "Download a stream associated with a name on the LBRYcrd blockchain. The name will be" \
" looked up on the blockchain, and if it is associated with a stream descriptor hash," \ " looked up on the blockchain, and if it is associated with a stream descriptor hash," \
" that stream descriptor will be downloaded and read.\n" \ " that stream descriptor will be downloaded and read. If the given name is itself a valid " \
"Takes one argument, the name\n\n" \ "hash, and the name doesn't exist on the blockchain, then the name will be used as the " \
"get <name>" "stream descriptor hash as in get-hash. Use get-hash if you want no ambiguity.\n" \
"Takes one argument, the name.\n\n" \
"Usage: get <name>"
class LBRYFileChooser(RecursiveCommandHandler): class LBRYFileChooser(RecursiveCommandHandler):
@ -860,10 +857,13 @@ class DeleteLBRYFileChooser(LBRYFileChooser):
class DeleteLBRYFileChooserFactory(CommandHandlerFactory): class DeleteLBRYFileChooserFactory(CommandHandlerFactory):
control_handler_class = DeleteLBRYFileChooser control_handler_class = DeleteLBRYFileChooser
is_main_command = False
command = "delete-lbryfile" command = "delete-lbryfile"
short_help = "Delete an LBRY file" short_help = "Delete an LBRY file"
full_help = "Delete an LBRY file which has been downloaded or created by this application" full_help = "Delete an LBRY file which has been downloaded or created by this application.\n" \
"\nGives the option to also delete the encrypted chunks of data associated with " \
"the file. If they are deleted, they will all have to be downloaded again if " \
"lbrynet-console is asked to download that file again, and lbrynet-console will " \
"not be able to upload those chunks of data to other peers on LBRYnet."
class DeleteLBRYFile(CommandHandler): class DeleteLBRYFile(CommandHandler):
@ -967,7 +967,6 @@ class ToggleLBRYFileRunningChooser(LBRYFileChooser):
class ToggleLBRYFileRunningChooserFactory(CommandHandlerFactory): class ToggleLBRYFileRunningChooserFactory(CommandHandlerFactory):
control_handler_class = ToggleLBRYFileRunningChooser control_handler_class = ToggleLBRYFileRunningChooser
is_main_command = False
command = "toggle-running" command = "toggle-running"
short_help = "Toggle whether an LBRY file is running" short_help = "Toggle whether an LBRY file is running"
full_help = "Toggle whether an LBRY file, which is being saved by this application," \ full_help = "Toggle whether an LBRY file, which is being saved by this application," \
@ -1031,10 +1030,14 @@ class CreateLBRYFile(CommandHandler):
class CreateLBRYFileFactory(CommandHandlerFactory): class CreateLBRYFileFactory(CommandHandlerFactory):
control_handler_class = CreateLBRYFile control_handler_class = CreateLBRYFile
is_main_command = False
command = "create-lbryfile" command = "create-lbryfile"
short_help = "LBRYize a file" short_help = "LBRYize a file"
full_help = "Split a file up into encrypted chunks compatible with LBRYnet" full_help = "Encrypt a file, split it into chunks, and make those chunks available on LBRYnet. Also " \
"create a 'stream descriptor file' which contains all of the metadata needed to download " \
"the encrypted chunks from LBRYnet and put them back together. This plain stream descriptor " \
"can be passed around via other file sharing methods like email. Additionally, this " \
"application can publish the stream descriptor to LBRYnet so that the LBRY file can be " \
"downloaded via the hash of the stream descriptor."
class PublishStreamDescriptorChooser(LBRYFileChooser): class PublishStreamDescriptorChooser(LBRYFileChooser):
@ -1048,10 +1051,11 @@ class PublishStreamDescriptorChooser(LBRYFileChooser):
class PublishStreamDescriptorChooserFactory(CommandHandlerFactory): class PublishStreamDescriptorChooserFactory(CommandHandlerFactory):
control_handler_class = PublishStreamDescriptorChooser control_handler_class = PublishStreamDescriptorChooser
is_main_command = False
command = "release-lbryfile" command = "release-lbryfile"
short_help = "Put a stream descriptor onto LBRYnet" short_help = "Put a stream descriptor onto LBRYnet"
full_help = "Make a stream descriptor available on LBRYnet at its sha384 hashsum" full_help = "Make a stream descriptor available on LBRYnet at its sha384 hashsum. If the stream " \
"descriptor is made available on LBRYnet, anyone will be able to download it via its " \
"hash via LBRYnet, and the LBRY file can then be downloaded if it is available."
class PublishStreamDescriptor(CommandHandler): class PublishStreamDescriptor(CommandHandler):
@ -1097,10 +1101,12 @@ class ShowPublishedSDHashesChooser(LBRYFileChooser):
class ShowPublishedSDHashesChooserFactory(CommandHandlerFactory): class ShowPublishedSDHashesChooserFactory(CommandHandlerFactory):
control_handler_class = ShowPublishedSDHashesChooser control_handler_class = ShowPublishedSDHashesChooser
is_main_command = False
command = "show-lbryfile-sd-hashes" command = "show-lbryfile-sd-hashes"
short_help = "Show the published stream descriptor files associated with an LBRY file" short_help = "Show the published stream descriptor files associated with an LBRY file"
full_help = "Show the published stream descriptor files associated with an LBRY file" full_help = "Show the published stream descriptor files associated with an LBRY file. " \
"These files contain the metadata for LBRY files. These files can be accessed " \
"on lbrynet via their hash. From that, lbrynet-console can download the LBRY file " \
"if it is available on lbrynet."
class ShowPublishedSDHashes(CommandHandler): class ShowPublishedSDHashes(CommandHandler):
@ -1141,10 +1147,13 @@ class CreatePlainStreamDescriptorChooser(LBRYFileChooser):
class CreatePlainStreamDescriptorChooserFactory(CommandHandlerFactory): class CreatePlainStreamDescriptorChooserFactory(CommandHandlerFactory):
control_handler_class = CreatePlainStreamDescriptorChooser control_handler_class = CreatePlainStreamDescriptorChooser
is_main_command = False
command = "create-stream-descriptor" command = "create-stream-descriptor"
short_help = "Create a plaintext stream descriptor file for an LBRY file" short_help = "Create a plaintext stream descriptor file for an LBRY file"
full_help = "Create a plaintext stream descriptor file for an LBRY file" full_help = "Create a plaintext stream descriptor file for an LBRY file. This file, " \
"which traditionally has the file extension .cryptsd, can be shared " \
"through a variety of means, including email and file transfer. Anyone " \
"possessing this file will be able to download the LBRY file if it is " \
"available on lbrynet."
class CreatePlainStreamDescriptor(CommandHandler): class CreatePlainStreamDescriptor(CommandHandler):
@ -1200,7 +1209,6 @@ class ShowLBRYFileStreamHashChooser(LBRYFileChooser):
class ShowLBRYFileStreamHashChooserFactory(CommandHandlerFactory): class ShowLBRYFileStreamHashChooserFactory(CommandHandlerFactory):
control_handler_class = ShowLBRYFileStreamHashChooser control_handler_class = ShowLBRYFileStreamHashChooser
is_main_command = False
command = "lbryfile-streamhash" command = "lbryfile-streamhash"
short_help = "Show an LBRY file's stream hash" short_help = "Show an LBRY file's stream hash"
full_help = "Show the stream hash of an LBRY file, which is how the LBRY file is referenced internally" \ full_help = "Show the stream hash of an LBRY file, which is how the LBRY file is referenced internally" \
@ -1264,10 +1272,11 @@ class ModifyLBRYFileOptionsChooser(LBRYFileChooser):
class ModifyLBRYFileOptionsChooserFactory(CommandHandlerFactory): class ModifyLBRYFileOptionsChooserFactory(CommandHandlerFactory):
control_handler_class = ModifyLBRYFileOptionsChooser control_handler_class = ModifyLBRYFileOptionsChooser
is_main_command = False
command = "modify-lbryfile-options" command = "modify-lbryfile-options"
short_help = "Modify an LBRY file's options" short_help = "Modify an LBRY file's options"
full_help = "Modify an LBRY file's options" full_help = "Modify an LBRY file's options. Options include, and are limited to, " \
"changing the rate that the application will pay for data related to " \
"this LBRY file."
class ModifyLBRYFileOptions(RecursiveCommandHandler): class ModifyLBRYFileOptions(RecursiveCommandHandler):
@ -1469,10 +1478,20 @@ class ClaimName(CommandHandler):
class ClaimNameFactory(CommandHandlerFactory): class ClaimNameFactory(CommandHandlerFactory):
control_handler_class = ClaimName control_handler_class = ClaimName
is_main_command = False
command = "claim" command = "claim"
short_help = "Associate an LBRY file with a name on LBRYnet" short_help = "Dedicate some LBC toward an lbry:// address"
full_help = "Associate an LBRY file (or any hash) with a name on LBRYnet" full_help = "Dedicate some LBY toward associate an LBRY file, or any hash, with " \
"an lbry:// address. On lbry, whoever dedicates the most credits to an " \
"lbry:// address controls that address. This command will let you choose " \
"to associate either on LBRY file or any given value with the address.\n" \
"This command will ask for a few additional fields, explained here:\n\n" \
"The title will be presented to users before they download the file.\n" \
"The bid amount is the number of LBC that will be dedicated toward " \
"the lbry://address being registered. On lbry, whoever dedicates the most " \
"credits to the address controls that address.\n" \
"The decryption key fee is the amount of LBC that users will be charged " \
"when consuming this file. The fees will be sent to the provided key fee address.\n" \
"The description will be presented to users before they download the file.\n"
class Publish(CommandHandler): class Publish(CommandHandler):
@ -1693,10 +1712,23 @@ class Publish(CommandHandler):
class PublishFactory(CommandHandlerFactory): class PublishFactory(CommandHandlerFactory):
control_handler_class = Publish control_handler_class = Publish
is_main_command = True priority = 90
command = 'publish' command = 'publish'
short_help = "Publish a file" short_help = "Publish a file to lbrynet"
full_help = "Publish a file" full_help = "Publish a file to lbrynet.\n\n" \
"Usage: publish [file_name]\n\n" \
"This command takes (or prompts) for a file, prompts for additional " \
"information about that file, and then makes that file available on " \
"lbrynet via an lbry:// address.\n" \
"The file given must exist or publish will fail.\n" \
"The title will be presented to users before they download the file.\n" \
"The bid amount is the number of LBC that will be dedicated toward " \
"the lbry://address being registered. On lbry, whoever dedicates the most " \
"credits to the address controls that address.\n" \
"The decryption key fee is the amount of LBC that users will be charged " \
"when consuming this file. The fees will be sent to the provided key fee address.\n" \
"The description will be presented to users before they download the file.\n"
class ModifyDefaultDataPaymentRate(ModifyPaymentRate): class ModifyDefaultDataPaymentRate(ModifyPaymentRate):
@ -1722,7 +1754,7 @@ class ModifyDefaultDataPaymentRateFactory(CommandHandlerFactory):
class ForceCheckBlobFileConsistency(CommandHandler): class ForceCheckBlobFileConsistency(CommandHandler):
prompt_description = "Verify consistency of stored blobs" prompt_description = "Verify consistency of stored chunks"
def __init__(self, console, blob_manager): def __init__(self, console, blob_manager):
CommandHandler.__init__(self, console) CommandHandler.__init__(self, console)
@ -1758,10 +1790,11 @@ class ModifyApplicationDefaults(RecursiveCommandHandler):
class ModifyApplicationDefaultsFactory(CommandHandlerFactory): class ModifyApplicationDefaultsFactory(CommandHandlerFactory):
control_handler_class = ModifyApplicationDefaults control_handler_class = ModifyApplicationDefaults
is_main_command = False
command = "modify-application-defaults" command = "modify-application-defaults"
short_help = "Modify application settings" short_help = "Modify application settings"
full_help = "Modify application settings" full_help = "Either change the default rate to pay for data downloads or check " \
"that the chunks of data on disk match up with the chunks of data " \
"the application thinks are on disk."
class ShowServerStatus(CommandHandler): class ShowServerStatus(CommandHandler):
@ -1797,7 +1830,6 @@ class ShowServerStatus(CommandHandler):
class ShowServerStatusFactory(CommandHandlerFactory): class ShowServerStatusFactory(CommandHandlerFactory):
control_handler_class = ShowServerStatus control_handler_class = ShowServerStatus
is_main_command = False
command = "server-status" command = "server-status"
short_help = "Show the server's status" short_help = "Show the server's status"
full_help = "Show the port on which the server is running, whether the server is running, and the" \ full_help = "Show the port on which the server is running, whether the server is running, and the" \
@ -1978,7 +2010,7 @@ class ModifyServerEnabledQueriesFactory(CommandHandlerFactory):
class ImmediateAnnounceAllBlobs(CommandHandler): class ImmediateAnnounceAllBlobs(CommandHandler):
prompt_description = "Immediately announce all blob hashes to the DHT" prompt_description = "Immediately announce all hashes to the DHT"
def __init__(self, console, blob_manager): def __init__(self, console, blob_manager):
CommandHandler.__init__(self, console) CommandHandler.__init__(self, console)
@ -2024,10 +2056,16 @@ class ModifyServerSettings(RecursiveCommandHandler):
class ModifyServerSettingsFactory(CommandHandlerFactory): class ModifyServerSettingsFactory(CommandHandlerFactory):
control_handler_class = ModifyServerSettings control_handler_class = ModifyServerSettings
is_main_command = False
command = "modify-server-settings" command = "modify-server-settings"
short_help = "Modify server settings" short_help = "Modify server settings"
full_help = "Modify server settings" full_help = "Modify server settings. Settings that can be modified:\n\n" \
"1) Queries that the server will answer from other peers. For example, " \
"stop the server from responding to requests for metadata, or stop " \
"the server from uploading data.\n" \
"2) Change whether the server is running at all.\n" \
"3) Change the minimum rate the server will accept for data uploads.\n" \
"4) Immediately re-broadcast all hashes associated with the server to " \
"the distributed hash table."
class PeerChooser(RecursiveCommandHandler): class PeerChooser(RecursiveCommandHandler):
@ -2110,10 +2148,13 @@ class PeerStatsAndSettingsChooser(PeerChooser):
class PeerStatsAndSettingsChooserFactory(CommandHandlerFactory): class PeerStatsAndSettingsChooserFactory(CommandHandlerFactory):
control_handler_class = PeerStatsAndSettingsChooser control_handler_class = PeerStatsAndSettingsChooser
is_main_command = False
command = "peer-stats" command = "peer-stats"
short_help = "Show some peer statistics" short_help = "Show some peer statistics"
full_help = "Show some peer statistics" full_help = "Show the list of peers that this application has been " \
"in contact with. Give the option to show further details " \
"for each peer including the number of bytes transferred " \
"and the 'score' of the peer which is used in deciding " \
"which peers to connect to."
class LBRYFileStatusModifier(CommandHandler): class LBRYFileStatusModifier(CommandHandler):
@ -2230,10 +2271,10 @@ class Status(CommandHandler):
self.finished_deferred.callback(None) self.finished_deferred.callback(None)
def _show_general_status(self): def _show_general_status(self):
self.console.sendLine("Total bytes uploaded: %s" % str(self.rate_limiter.total_ul_bytes)) #self.console.sendLine("Total bytes uploaded: %s" % str(self.rate_limiter.total_ul_bytes))
self.console.sendLine("Total bytes downloaded: %s" % str(self.rate_limiter.total_dl_bytes)) #self.console.sendLine("Total bytes downloaded: %s" % str(self.rate_limiter.total_dl_bytes))
self.console.sendLine("Server running: %s" % str(self.lbry_service.lbry_server_port is not None)) #self.console.sendLine("Server running: %s" % str(self.lbry_service.lbry_server_port is not None))
self.console.sendLine("Server port: %s" % str(self.lbry_service.peer_port)) #self.console.sendLine("Server port: %s" % str(self.lbry_service.peer_port))
return defer.succeed(True) return defer.succeed(True)
def _show_lbry_file_status(self): def _show_lbry_file_status(self):
@ -2278,11 +2319,11 @@ class Status(CommandHandler):
class StatusFactory(CommandHandlerFactory): class StatusFactory(CommandHandlerFactory):
control_handler_class = Status control_handler_class = Status
is_main_command = True priority = 20
command = "status" command = "status"
short_help = "Show some basic application status" short_help = "Show or alter status of files being downloaded"
full_help = "Show some basic application status\n\n" \ full_help = "Show or alter status of files being downloaded\n\n" \
"Show files currently being downloaded, the total number of bytes " \ "Show the list of files that are currently downloading " \
"downloaded from peers, the total number of bytes uploaded to peers, " \ "or have been downloaded, and give the option to " \
"whether the server is running, and the port on which the server is " \ "toggle whether the file is actively downloading or " \
"running." "to remove the file."