-
Notifications
You must be signed in to change notification settings - Fork 7
API Documentation
Mike Iversen edited this page Apr 26, 2022
·
49 revisions
The "API" of Netman consists of 3 parts. Those parts are
Each of these 3 pieces have their own specification which is laid out below. For more details on how these parts interact, as well as how Netman as whole works, please checkout the Dev Guide
Each of the above parts will have their "public facing" items documented here. "Private" functions/variables will not be documented in this documentation as they are not meant to be used.
Private functions/variables will usually have a _ leading them (so for example, _my_private_variable or _my_private_function).
Note, the specification for each function below is laid out in the follow example format
function_name(param1, param2, paramX)- Version Added:
- Param1
- Type: Expected Type
- Details: (Optional)
- Param2
- Type: Expected Type
- Details: (Optional)
- ParamX
- Type: Expected Type
- Details: (Optional)
- Returns
- Type: Expected Return Type
- Details: (Optional)
- Throws
- Details about potential errors that are thrown in this function
- Notes (Optional)
- Version Added: 0.1
- core_providers
- Type: Array
- Details:
core_providersis an optional array that can be provided on API initialization. If not provided, this will default tonetman.providers
- Returns: nil
- Throws
- Errors thrown by
load_providerwill be thrown from this as well
- Errors thrown by
- Notes
-
initis called automatically on import ofnetman.apiand has a lock in place to prevent side effects of multiple imports of [api]](#api). - This function does not need to be called when importing
netman.api
-
- Version Added: 0.1
- output_path
- Type: String
- Details:
output_pathis optional and defaults to$HOME/*random string*where*random string*is a randomly generated 10 character string
- Returns: nil
- Throws: nil
- Notes
-
dump_infocan be called via the:Nmlogsvim command and will do the following 2 things- Dump session related logs into the file created at
output_path(Note: if a file exists inoutput_path, it will be overwritten with the dump) - Open this file in a new
NetmanLogsfiletype buffer for viewing
- Dump session related logs into the file created at
-
- Version Added: 0.1
- buffer_index
- Returns: nil
- Throws: nil
- Notes
-
unloadwill be called automatically when aNetmanmanaged buffer is closed by vim (due to the an autocommand that is registered toBufUnloadfor the specific protocol that the buffer was opened with) - Unload will cleanup the local file used for a remote file pull if the provider performed a remote file pull
- Unload will call
close_connectionon the associated provider if the provider implementedclose_connection
-
- Version Added: 0.1
- provider_path
- Type: String
- Details:
provider_pathshould be the string path to import a provider. For examplenetman.provider.ssh
- Returns: nil
- Throws
- "Failed to initialize provider: " error
- This is thrown when an attempt to import the provider fails or the provider has no contents (IE, its an empty file)
- This is also thrown (with different sub details) if the provider is missing one of the required attributes. For more details on required attributes for a provider, please consult the Developer Guide
- "Failed to initialize provider: " error
- Notes
-
load_provideris the expected function to call when you are registering a new provider to handle a protocol, or registering an explorer to handle tree browsing. The function does a handful of things, which are laid out below- Attempts to import the provider. If there is a failure in the initial import, the above error(s) are thrown
- Validates the provider has the required attributes as laid out in the developer guide
- Calls the provider's
initfunction if it has one - Ensures that core providers do not override 3rd party providers. This means that
Netmanwill never attempt to override an existing provider for a protocol that netman supports.- NOTE: Netman does not prevent overriding of 3rd party providers by other 3rd party providers. Netman operates providers on "most recent provider" basis. This means that the most recent provider to register as the provider for a protocol will be used
- Register
autocommandsthat link the providersprotocolstoNetmanto be handled by theAPI
-
- Version Added: 0.9
- explorer_path
- Type: String
- Details:
explorer_pathshould be the string path to import a explorer shim. For examplenetman.provider.explore_shim
- force
- Type: Boolean
- Details:
forceis used to indicate if we should force use of this explorer path
- Returns: nil
- Throws:
- "Failed to initialize explorer" error
- This is thrown when the explorer is missing a required attribute. For more details on required explorer attributes, please consult the developer guide
- "Failed to initialize explorer" error
- Notes
-
load_exploreris a sub function that is called byload_provider. It is advised that you callload_providerwhen loading any provider inNetman, including anexplorer_shim.
-
- Version Added: 0.1
- buffer_index
- Type: Integer
- Details: Index of the buffer to associate the uri with, stored within [
api]](#api) and used as the key to access state objects associated with the buffer. If nil (but provided), [api]](#api) delays association until theURIis claimed later. For more details on this process, please consult the developer guide
- path
- Returns
-
readreturns 1 of the following 2 items, depending on what theproviderdeclares the return type should be on read- nil
- This is usually returned if the provider determined that it needs to interface with a
File Manager, though it can also be returned ifreadthrows an error (see below)
- This is usually returned if the provider determined that it needs to interface with a
- command
- This is a command that is generated by [
api]](#api) to be used byvimto display the contents for the user to interface with.
- This is a command that is generated by [
- nil
-
- Throws
- Notes
-
readis accesible via the:Nmreadcommand which is made available bynetman.init. It is also automatically called onFileReadCmdandBufReadCmdvimevents. The end user should not have to directly iterface withnetman.api.read, instead prefering to letvimhandle that via the above listed events. - Read operates on a generate-and-reserve model where it generates buffer details (via calls to the assocaited
provider) and then depending on results from the provider it will either claim the buffer details immediately or wait for theproviderto inform it that it is safe to do so. This is especially useful when opening multiple files via different providers as [api]](#api) will not conflict with itself trying to organize buffers to buffer objects while juggling the various (potentially asychronous) providers -
readexpects a return of 1 of 3 well defined types from theprovidersreadfunction, which are detailed more below. These types are-
READ_TYPE.FILE
- If
readis returned aREAD_TYPE.FILE, it will assume that the information being read into thevimbuffer is a local file. [api]](#api) will document this and remember to clean up this local file afterunloadis called
- If
- READ_TYPE.STREAM
- READ_TYPE.EXPLORE
-
READ_TYPE.FILE
-
- Version Added: 0.1
- delete_path
- Returns: nil
- Throws
- Notes
-
deletedoes not require the URI to be a loaded buffer, however it does require a provider be loaded (viaload_provider) that can handle the protocol of theURIthat is being requested to delete
-
- Version Added: 0.1
- buffer_index
- Type: Integer
- Details: The buffer index associated with the write path
- write_path
- Returns: nil
- Throws
- Notes
- Version Added: 0.1
- Notes
- It's a version tag, what notes do you need?
A program that is used to visualize a directory tree
Term used to indicate method of network communication to use. EG: `ssh`, `rsync`, `ftp`, etc
Program that integrates with `Netman` to provide a bridge between a program that supports a [protocol](#protocol) and `vim`
A string representation of a path to a stream/file. EG: `sftp://host/file` or `ftp://ip_address/file`
A program that acts as a "wedge" or "shim" between 2 programs. Usually used to modify the input/output between the 2 programs