docs: drop unimpemented commands from readme and reorganize

This commit is contained in:
Jose Diaz-Gonzalez
2020-04-04 16:43:31 -04:00
parent ddf0662068
commit 76054a308f
3 changed files with 141 additions and 184 deletions

168
README.md
View File

@@ -36,7 +36,7 @@ mongo:exists <service> # check if the mongo service
mongo:export <service> # export a dump of the mongo service database mongo:export <service> # export a dump of the mongo service database
mongo:expose <service> <ports...> # expose a mongo service on custom port if provided (random port otherwise) mongo:expose <service> <ports...> # expose a mongo service on custom port if provided (random port otherwise)
mongo:import <service> # import a dump into the mongo service database mongo:import <service> # import a dump into the mongo service database
mongo:info <service> [--single-info-flag] # print the connection information mongo:info <service> [--single-info-flag] # print the service information
mongo:link <service> <app> [--link-flags...] # link the mongo service to the app mongo:link <service> <app> [--link-flags...] # link the mongo service to the app
mongo:linked <service> <app> # check if the mongo service is linked to an app mongo:linked <service> <app> # check if the mongo service is linked to an app
mongo:links <service> # list all apps linked to the mongo service mongo:links <service> # list all apps linked to the mongo service
@@ -56,20 +56,7 @@ mongo:upgrade <service> [--upgrade-flags...] # upgrade service <service> t
Help for any commands can be displayed by specifying the command as an argument to mongo:help. Please consult the `mongo:help` command for any undocumented commands. Help for any commands can be displayed by specifying the command as an argument to mongo:help. Please consult the `mongo:help` command for any undocumented commands.
### Basic Usage ### Basic Usage
### list all mongo services
```shell
# usage
dokku mongo:list
```
examples:
List all services:
```shell
dokku mongo:list
```
### create a mongo service ### create a mongo service
```shell ```shell
@@ -77,15 +64,13 @@ dokku mongo:list
dokku mongo:create <service> [--create-flags...] dokku mongo:create <service> [--create-flags...]
``` ```
examples:
Create a mongo service named lolipop: Create a mongo service named lolipop:
```shell ```shell
dokku mongo:create lolipop dokku mongo:create lolipop
``` ```
You can also specify the image and image version to use for the service. It *must* be compatible with the ${plugin_image} image. : You can also specify the image and image version to use for the service. It *must* be compatible with the ${plugin_image} image.
```shell ```shell
export MONGO_IMAGE="${PLUGIN_IMAGE}" export MONGO_IMAGE="${PLUGIN_IMAGE}"
@@ -93,21 +78,20 @@ export MONGO_IMAGE_VERSION="${PLUGIN_IMAGE_VERSION}"
dokku mongo:create lolipop dokku mongo:create lolipop
``` ```
You can also specify custom environment variables to start the mongo service in semi-colon separated form. : You can also specify custom environment variables to start the mongo service in semi-colon separated form.
```shell ```shell
export MONGO_CUSTOM_ENV="USER=alpha;HOST=beta" export MONGO_CUSTOM_ENV="USER=alpha;HOST=beta"
dokku mongo:create lolipop dokku mongo:create lolipop
``` ```
### print the connection information
### print the service information
```shell ```shell
# usage # usage
dokku mongo:info <service> [--single-info-flag] dokku mongo:info <service> [--single-info-flag]
``` ```
examples:
Get connection information as follows: Get connection information as follows:
```shell ```shell
@@ -128,6 +112,20 @@ dokku mongo:info lolipop --service-root
dokku mongo:info lolipop --status dokku mongo:info lolipop --status
dokku mongo:info lolipop --version dokku mongo:info lolipop --version
``` ```
### list all mongo services
```shell
# usage
dokku mongo:list
```
List all services:
```shell
dokku mongo:list
```
### print the most recent log(s) for this service ### print the most recent log(s) for this service
```shell ```shell
@@ -135,8 +133,6 @@ dokku mongo:info lolipop --version
dokku mongo:logs <service> [-t|--tail] dokku mongo:logs <service> [-t|--tail]
``` ```
examples:
You can tail logs for a particular service: You can tail logs for a particular service:
```shell ```shell
@@ -148,6 +144,7 @@ By default, logs will not be tailed, but you can do this with the --tail flag:
```shell ```shell
dokku mongo:logs lolipop --tail dokku mongo:logs lolipop --tail
``` ```
### link the mongo service to the app ### link the mongo service to the app
```shell ```shell
@@ -155,9 +152,7 @@ dokku mongo:logs lolipop --tail
dokku mongo:link <service> <app> [--link-flags...] dokku mongo:link <service> <app> [--link-flags...]
``` ```
examples: A mongo service can be linked to a container. This will use native docker links via the docker-options plugin. Here we link it to our 'playground' app.
A mongo service can be linked to a container. This will use native docker links via the docker-options plugin. Here we link it to our 'playground' app. :
> NOTE: this will restart your app > NOTE: this will restart your app
@@ -188,7 +183,7 @@ The host exposed here only works internally in docker containers. If you want yo
dokku mongo:link other_service playground dokku mongo:link other_service playground
``` ```
It is possible to change the protocol for mongo_url by setting the environment variable mongo_database_scheme on the app. Doing so will after linking will cause the plugin to think the service is not linked, and we advise you to unlink before proceeding. : It is possible to change the protocol for mongo_url by setting the environment variable mongo_database_scheme on the app. Doing so will after linking will cause the plugin to think the service is not linked, and we advise you to unlink before proceeding.
```shell ```shell
dokku config:set playground MONGO_DATABASE_SCHEME=mongodb2 dokku config:set playground MONGO_DATABASE_SCHEME=mongodb2
@@ -200,6 +195,7 @@ This will cause mongo_url to be set as:
``` ```
mongodb2://lolipop:SOME_PASSWORD@dokku-mongo-lolipop:27017/lolipop mongodb2://lolipop:SOME_PASSWORD@dokku-mongo-lolipop:27017/lolipop
``` ```
### unlink the mongo service from the app ### unlink the mongo service from the app
```shell ```shell
@@ -207,8 +203,6 @@ mongodb2://lolipop:SOME_PASSWORD@dokku-mongo-lolipop:27017/lolipop
dokku mongo:unlink <service> <app> dokku mongo:unlink <service> <app>
``` ```
examples:
You can unlink a mongo service: You can unlink a mongo service:
> NOTE: this will restart your app and unset related environment variables > NOTE: this will restart your app and unset related environment variables
@@ -216,20 +210,6 @@ You can unlink a mongo service:
```shell ```shell
dokku mongo:unlink lolipop playground dokku mongo:unlink lolipop playground
``` ```
### delete the mongo service/data/container if there are no links left
```shell
# usage
dokku mongo:destroy <service> [-f|--force]
```
examples:
Destroy the service, it's data, and the running container:
```shell
dokku mongo:destroy lolipop
```
### Service Lifecycle ### Service Lifecycle
@@ -242,13 +222,12 @@ The lifecycle of each service can be managed through the following commands:
dokku mongo:connect <service> dokku mongo:connect <service>
``` ```
examples:
Connect to the service via the mongo connection tool: Connect to the service via the mongo connection tool:
```shell ```shell
dokku mongo:connect lolipop dokku mongo:connect lolipop
``` ```
### enter or run a command in a running mongo service container ### enter or run a command in a running mongo service container
```shell ```shell
@@ -256,19 +235,18 @@ dokku mongo:connect lolipop
dokku mongo:enter <service> dokku mongo:enter <service>
``` ```
examples: A bash prompt can be opened against a running service. Filesystem changes will not be saved to disk.
A bash prompt can be opened against a running service. Filesystem changes will not be saved to disk. :
```shell ```shell
dokku mongo:enter lolipop dokku mongo:enter lolipop
``` ```
You may also run a command directly against the service. Filesystem changes will not be saved to disk. : You may also run a command directly against the service. Filesystem changes will not be saved to disk.
```shell ```shell
dokku mongo:enter lolipop touch /tmp/test dokku mongo:enter lolipop touch /tmp/test
``` ```
### expose a mongo service on custom port if provided (random port otherwise) ### expose a mongo service on custom port if provided (random port otherwise)
```shell ```shell
@@ -276,13 +254,12 @@ dokku mongo:enter lolipop touch /tmp/test
dokku mongo:expose <service> <ports...> dokku mongo:expose <service> <ports...>
``` ```
examples:
Expose the service on the service's normal ports, allowing access to it from the public interface (0. 0. 0. 0): Expose the service on the service's normal ports, allowing access to it from the public interface (0. 0. 0. 0):
```shell ```shell
dokku mongo:expose lolipop ${PLUGIN_DATASTORE_PORTS[@]} dokku mongo:expose lolipop ${PLUGIN_DATASTORE_PORTS[@]}
``` ```
### unexpose a previously exposed mongo service ### unexpose a previously exposed mongo service
```shell ```shell
@@ -290,13 +267,12 @@ dokku mongo:expose lolipop ${PLUGIN_DATASTORE_PORTS[@]}
dokku mongo:unexpose <service> dokku mongo:unexpose <service>
``` ```
examples:
Unexpose the service, removing access to it from the public interface (0. 0. 0. 0): Unexpose the service, removing access to it from the public interface (0. 0. 0. 0):
```shell ```shell
dokku mongo:unexpose lolipop dokku mongo:unexpose lolipop
``` ```
### promote service <service> as MONGO_URL in <app> ### promote service <service> as MONGO_URL in <app>
```shell ```shell
@@ -304,8 +280,6 @@ dokku mongo:unexpose lolipop
dokku mongo:promote <service> <app> dokku mongo:promote <service> <app>
``` ```
examples:
If you have a mongo service linked to an app and try to link another mongo service another link environment variable will be generated automatically: If you have a mongo service linked to an app and try to link another mongo service another link environment variable will be generated automatically:
``` ```
@@ -327,20 +301,7 @@ MONGO_URL=mongodb://other_service:ANOTHER_PASSWORD@dokku-mongo-other-service:270
DOKKU_MONGO_BLUE_URL=mongodb://other_service:ANOTHER_PASSWORD@dokku-mongo-other-service:27017/other_service DOKKU_MONGO_BLUE_URL=mongodb://other_service:ANOTHER_PASSWORD@dokku-mongo-other-service:27017/other_service
DOKKU_MONGO_SILVER_URL=mongodb://lolipop:SOME_PASSWORD@dokku-mongo-lolipop:27017/lolipop DOKKU_MONGO_SILVER_URL=mongodb://lolipop:SOME_PASSWORD@dokku-mongo-lolipop:27017/lolipop
``` ```
### graceful shutdown and restart of the mongo service container
```shell
# usage
dokku mongo:restart <service>
```
examples:
Restart the service:
```shell
dokku mongo:restart lolipop
```
### start a previously stopped mongo service ### start a previously stopped mongo service
```shell ```shell
@@ -348,13 +309,12 @@ dokku mongo:restart lolipop
dokku mongo:start <service> dokku mongo:start <service>
``` ```
examples:
Start the service: Start the service:
```shell ```shell
dokku mongo:start lolipop dokku mongo:start lolipop
``` ```
### stop a running mongo service ### stop a running mongo service
```shell ```shell
@@ -362,13 +322,25 @@ dokku mongo:start lolipop
dokku mongo:stop <service> dokku mongo:stop <service>
``` ```
examples:
Stop the service and the running container: Stop the service and the running container:
```shell ```shell
dokku mongo:stop lolipop dokku mongo:stop lolipop
``` ```
### graceful shutdown and restart of the mongo service container
```shell
# usage
dokku mongo:restart <service>
```
Restart the service:
```shell
dokku mongo:restart lolipop
```
### upgrade service <service> to the specified versions ### upgrade service <service> to the specified versions
```shell ```shell
@@ -376,8 +348,6 @@ dokku mongo:stop lolipop
dokku mongo:upgrade <service> [--upgrade-flags...] dokku mongo:upgrade <service> [--upgrade-flags...]
``` ```
examples:
You can upgrade an existing service to a new image or image-version: You can upgrade an existing service to a new image or image-version:
```shell ```shell
@@ -395,13 +365,12 @@ Service scripting can be executed using the following commands:
dokku mongo:app-links <app> dokku mongo:app-links <app>
``` ```
examples: List all mongo services that are linked to the 'playground' app.
List all mongo services that are linked to the 'playground' app. :
```shell ```shell
dokku mongo:app-links playground dokku mongo:app-links playground
``` ```
### create container <new-name> then copy data from <name> into <new-name> ### create container <new-name> then copy data from <name> into <new-name>
```shell ```shell
@@ -409,13 +378,12 @@ dokku mongo:app-links playground
dokku mongo:clone <service> <new-service> [--clone-flags...] dokku mongo:clone <service> <new-service> [--clone-flags...]
``` ```
examples:
You can clone an existing service to a new one: You can clone an existing service to a new one:
```shell ```shell
dokku mongo:clone lolipop lolipop-2 dokku mongo:clone lolipop lolipop-2
``` ```
### check if the mongo service exists ### check if the mongo service exists
```shell ```shell
@@ -423,13 +391,12 @@ dokku mongo:clone lolipop lolipop-2
dokku mongo:exists <service> dokku mongo:exists <service>
``` ```
examples: Here we check if the lolipop mongo service exists.
Here we check if the lolipop mongo service exists. :
```shell ```shell
dokku mongo:exists lolipop dokku mongo:exists lolipop
``` ```
### check if the mongo service is linked to an app ### check if the mongo service is linked to an app
```shell ```shell
@@ -437,13 +404,12 @@ dokku mongo:exists lolipop
dokku mongo:linked <service> <app> dokku mongo:linked <service> <app>
``` ```
examples: Here we check if the lolipop mongo service is linked to the 'playground' app.
Here we check if the lolipop mongo service is linked to the 'playground' app. :
```shell ```shell
dokku mongo:linked lolipop playground dokku mongo:linked lolipop playground
``` ```
### list all apps linked to the mongo service ### list all apps linked to the mongo service
```shell ```shell
@@ -451,9 +417,7 @@ dokku mongo:linked lolipop playground
dokku mongo:links <service> dokku mongo:links <service>
``` ```
examples: List all apps linked to the 'lolipop' mongo service.
List all apps linked to the 'lolipop' mongo service. :
```shell ```shell
dokku mongo:links lolipop dokku mongo:links lolipop
@@ -470,13 +434,12 @@ The underlying service data can be imported and exported with the following comm
dokku mongo:import <service> dokku mongo:import <service>
``` ```
examples:
Import a datastore dump: Import a datastore dump:
```shell ```shell
dokku mongo:import lolipop < database.dump dokku mongo:import lolipop < database.dump
``` ```
### export a dump of the mongo service database ### export a dump of the mongo service database
```shell ```shell
@@ -484,8 +447,6 @@ dokku mongo:import lolipop < database.dump
dokku mongo:export <service> dokku mongo:export <service>
``` ```
examples:
By default, datastore output is exported to stdout: By default, datastore output is exported to stdout:
```shell ```shell
@@ -513,8 +474,6 @@ Backups can be performed using the backup commands:
dokku mongo:backup-auth <service> <aws-access-key-id> <aws-secret-access-key> <aws-default-region> <aws-signature-version> <endpoint-url> dokku mongo:backup-auth <service> <aws-access-key-id> <aws-secret-access-key> <aws-default-region> <aws-signature-version> <endpoint-url>
``` ```
examples:
Setup s3 backup authentication: Setup s3 backup authentication:
```shell ```shell
@@ -538,6 +497,7 @@ More specific example for minio auth:
```shell ```shell
dokku mongo:backup-auth lolipop MINIO_ACCESS_KEY_ID MINIO_SECRET_ACCESS_KEY us-east-1 s3v4 https://YOURMINIOSERVICE dokku mongo:backup-auth lolipop MINIO_ACCESS_KEY_ID MINIO_SECRET_ACCESS_KEY us-east-1 s3v4 https://YOURMINIOSERVICE
``` ```
### removes backup authentication for the mongo service ### removes backup authentication for the mongo service
```shell ```shell
@@ -545,13 +505,12 @@ dokku mongo:backup-auth lolipop MINIO_ACCESS_KEY_ID MINIO_SECRET_ACCESS_KEY us-e
dokku mongo:backup-deauth <service> dokku mongo:backup-deauth <service>
``` ```
examples:
Remove s3 authentication: Remove s3 authentication:
```shell ```shell
dokku mongo:backup-deauth lolipop dokku mongo:backup-deauth lolipop
``` ```
### creates a backup of the mongo service to an existing s3 bucket ### creates a backup of the mongo service to an existing s3 bucket
```shell ```shell
@@ -559,13 +518,12 @@ dokku mongo:backup-deauth lolipop
dokku mongo:backup <service> <bucket-name> [--use-iam] dokku mongo:backup <service> <bucket-name> [--use-iam]
``` ```
examples:
Backup the 'lolipop' service to the 'my-s3-bucket' bucket on aws: Backup the 'lolipop' service to the 'my-s3-bucket' bucket on aws:
```shell ```shell
dokku mongo:backup lolipop my-s3-bucket --use-iam dokku mongo:backup lolipop my-s3-bucket --use-iam
``` ```
### sets encryption for all future backups of mongo service ### sets encryption for all future backups of mongo service
```shell ```shell
@@ -573,13 +531,12 @@ dokku mongo:backup lolipop my-s3-bucket --use-iam
dokku mongo:backup-set-encryption <service> <passphrase> dokku mongo:backup-set-encryption <service> <passphrase>
``` ```
examples:
Set a gpg passphrase for backups: Set a gpg passphrase for backups:
```shell ```shell
dokku mongo:backup-set-encryption lolipop dokku mongo:backup-set-encryption lolipop
``` ```
### unsets encryption for future backups of the mongo service ### unsets encryption for future backups of the mongo service
```shell ```shell
@@ -587,13 +544,12 @@ dokku mongo:backup-set-encryption lolipop
dokku mongo:backup-unset-encryption <service> dokku mongo:backup-unset-encryption <service>
``` ```
examples:
Unset a gpg encryption key for backups: Unset a gpg encryption key for backups:
```shell ```shell
dokku mongo:backup-unset-encryption lolipop dokku mongo:backup-unset-encryption lolipop
``` ```
### schedules a backup of the mongo service ### schedules a backup of the mongo service
```shell ```shell
@@ -601,8 +557,6 @@ dokku mongo:backup-unset-encryption lolipop
dokku mongo:backup-schedule <service> <schedule> <bucket-name> [--use-iam] dokku mongo:backup-schedule <service> <schedule> <bucket-name> [--use-iam]
``` ```
examples:
Schedule a backup: Schedule a backup:
> 'schedule' is a crontab expression, eg. "0 3 * * *" for each day at 3am > 'schedule' is a crontab expression, eg. "0 3 * * *" for each day at 3am
@@ -616,6 +570,7 @@ Schedule a backup and authenticate via iam:
```shell ```shell
dokku mongo:backup-schedule lolipop "0 3 * * *" my-s3-bucket --use-iam dokku mongo:backup-schedule lolipop "0 3 * * *" my-s3-bucket --use-iam
``` ```
### cat the contents of the configured backup cronfile for the service ### cat the contents of the configured backup cronfile for the service
```shell ```shell
@@ -623,13 +578,12 @@ dokku mongo:backup-schedule lolipop "0 3 * * *" my-s3-bucket --use-iam
dokku mongo:backup-schedule-cat <service> dokku mongo:backup-schedule-cat <service>
``` ```
examples:
Cat the contents of the configured backup cronfile for the service: Cat the contents of the configured backup cronfile for the service:
```shell ```shell
dokku mongo:backup-schedule-cat lolipop dokku mongo:backup-schedule-cat lolipop
``` ```
### unschedules the backup of the mongo service ### unschedules the backup of the mongo service
```shell ```shell
@@ -637,8 +591,6 @@ dokku mongo:backup-schedule-cat lolipop
dokku mongo:backup-unschedule <service> dokku mongo:backup-unschedule <service>
``` ```
examples:
Remove the scheduled backup from cron: Remove the scheduled backup from cron:
```shell ```shell

View File

@@ -5,6 +5,17 @@ import os
import re import re
def compile(service, version, alias, scheme, ports, unimplemented, dokku_version):
return "\n\n".join([
header(service),
description(service, version),
requirements_section(dokku_version),
installation_section(service, dokku_version),
commands_section(service, alias, scheme, ports, unimplemented),
usage_section(service, alias, scheme, ports, unimplemented),
]).replace("\n\n\n\n\n", "\n").replace("\n\n\n\n", "\n").replace("\n\n\n", "\n\n")
def header(service): def header(service):
return " ".join([ return " ".join([
f"# dokku {service}", f"# dokku {service}",
@@ -17,7 +28,7 @@ def description(service, version):
return f"Official {service} plugin for dokku. Currently defaults to installing [{service} {version}](https://hub.docker.com/_/{service}/)." return f"Official {service} plugin for dokku. Currently defaults to installing [{service} {version}](https://hub.docker.com/_/{service}/)."
def requirements(dokku_version): def requirements_section(dokku_version):
return "\n".join([ return "\n".join([
"## Requirements", "## Requirements",
"", "",
@@ -26,7 +37,7 @@ def requirements(dokku_version):
]) ])
def installation(service, dokku_version): def installation_section(service, dokku_version):
return "\n".join([ return "\n".join([
"## Installation", "## Installation",
"", "",
@@ -37,7 +48,7 @@ def installation(service, dokku_version):
]) ])
def commands(service, alias, scheme, ports): def commands_section(service, alias, scheme, ports, unimplemented):
content = [ content = [
"## Commands", "## Commands",
"", "",
@@ -50,6 +61,8 @@ def commands(service, alias, scheme, ports):
command_list = [] command_list = []
descriptions = [] descriptions = []
for filename in subcommands: for filename in subcommands:
if filename in unimplemented:
continue
data = command_data(filename, service, alias, scheme, ports) data = command_data(filename, service, alias, scheme, ports)
description = data["description"] description = data["description"]
arguments = data["arguments_string"] arguments = data["arguments_string"]
@@ -68,77 +81,65 @@ def commands(service, alias, scheme, ports):
return "\n".join(content) return "\n".join(content)
def usage(service, alias, scheme, ports): def usage_section(service, alias, scheme, ports, unimplemented):
return "\n\n".join([ return "\n\n".join([
"## Usage", "## Usage",
f"Help for any commands can be displayed by specifying the command as an argument to {service}:help. Please consult the `{service}:help` command for any undocumented commands.", f"Help for any commands can be displayed by specifying the command as an argument to {service}:help. Please consult the `{service}:help` command for any undocumented commands.",
usage_intro(service, alias, scheme, ports), usage_intro(service, alias, scheme, ports, unimplemented),
usage_lifecycle(service, alias, scheme, ports), usage_lifecycle(service, alias, scheme, ports, unimplemented),
usage_automation(service, alias, scheme, ports), usage_automation(service, alias, scheme, ports, unimplemented),
usage_data_management(service, alias, scheme, ports), usage_data_management(service, alias, scheme, ports, unimplemented),
usage_backup(service, alias, scheme, ports), usage_backup(service, alias, scheme, ports, unimplemented),
usage_docker_pull(service, alias, scheme, ports), usage_docker_pull(service, alias, scheme, ports, unimplemented),
]) ])
def usage_intro(service, alias, scheme, ports): def usage_intro(service, alias, scheme, ports, unimplemented):
return "\n".join([ commands = ["create", "info", "list", "logs", "link", "unlink"]
"### Basic Usage", content = ["### Basic Usage"]
command_help("list", service, alias, scheme, ports),
command_help("create", service, alias, scheme, ports), return fetch_commands_content(service, alias, scheme, ports, unimplemented, commands, content)
command_help("info", service, alias, scheme, ports),
command_help("logs", service, alias, scheme, ports),
command_help("link", service, alias, scheme, ports),
command_help("unlink", service, alias, scheme, ports),
command_help("destroy", service, alias, scheme, ports),
])
def usage_lifecycle(service, alias, scheme, ports): def usage_lifecycle(service, alias, scheme, ports, unimplemented):
return "\n".join([ commands = ["connect", "enter", "expose", "unexpose", "promote", "start", "stop", "restart", "upgrade"]
content = [
"### Service Lifecycle", "### Service Lifecycle",
"", "",
"The lifecycle of each service can be managed through the following commands:", "The lifecycle of each service can be managed through the following commands:",
"", "",
command_help("connect", service, alias, scheme, ports), ]
command_help("enter", service, alias, scheme, ports),
command_help("expose", service, alias, scheme, ports), return fetch_commands_content(service, alias, scheme, ports, unimplemented, commands, content)
command_help("unexpose", service, alias, scheme, ports),
command_help("promote", service, alias, scheme, ports),
command_help("restart", service, alias, scheme, ports),
command_help("start", service, alias, scheme, ports),
command_help("stop", service, alias, scheme, ports),
command_help("upgrade", service, alias, scheme, ports),
])
def usage_automation(service, alias, scheme, ports): def usage_automation(service, alias, scheme, ports, unimplemented):
return "\n".join([ commands = ["app-links", "clone", "exists", "linked", "links"]
content = [
"### Service Automation", "### Service Automation",
"", "",
"Service scripting can be executed using the following commands:", "Service scripting can be executed using the following commands:",
"", "",
command_help("app-links", service, alias, scheme, ports), ]
command_help("clone", service, alias, scheme, ports),
command_help("exists", service, alias, scheme, ports), return fetch_commands_content(service, alias, scheme, ports, unimplemented, commands, content)
command_help("linked", service, alias, scheme, ports),
command_help("links", service, alias, scheme, ports),
])
def usage_data_management(service, alias, scheme, ports): def usage_data_management(service, alias, scheme, ports, unimplemented):
return "\n".join([ commands = ["import", "export"]
content = [
"### Data Management", "### Data Management",
"", "",
"The underlying service data can be imported and exported with the following commands:", "The underlying service data can be imported and exported with the following commands:",
"", "",
command_help("import", service, alias, scheme, ports), ]
command_help("export", service, alias, scheme, ports),
]) return fetch_commands_content(service, alias, scheme, ports, unimplemented, commands, content)
def usage_backup(service, alias, scheme, ports): def usage_backup(service, alias, scheme, ports, unimplemented):
return "\n".join([ commands = ["backup-auth", "backup-deauth", "backup", "backup-set-encryption", "backup-unset-encryption", "backup-schedule", "backup-schedule-cat", "backup-unschedule",]
content = [
"### Backups", "### Backups",
"", "",
"Datastore backups are supported via AWS S3 and S3 compatible services like [minio](https://github.com/minio/minio).", "Datastore backups are supported via AWS S3 and S3 compatible services like [minio](https://github.com/minio/minio).",
@@ -147,18 +148,12 @@ def usage_backup(service, alias, scheme, ports):
"", "",
"Backups can be performed using the backup commands:", "Backups can be performed using the backup commands:",
"", "",
command_help("backup-auth", service, alias, scheme, ports), ]
command_help("backup-deauth", service, alias, scheme, ports),
command_help("backup", service, alias, scheme, ports), return fetch_commands_content(service, alias, scheme, ports, unimplemented, commands, content)
command_help("backup-set-encryption", service, alias, scheme, ports),
command_help("backup-unset-encryption", service, alias, scheme, ports),
command_help("backup-schedule", service, alias, scheme, ports),
command_help("backup-schedule-cat", service, alias, scheme, ports),
command_help("backup-unschedule", service, alias, scheme, ports),
])
def usage_docker_pull(service, alias, scheme, ports): def usage_docker_pull(service, alias, scheme, ports, unimplemented):
service_prefix = service.upper() service_prefix = service.upper()
return "\n".join([ return "\n".join([
"### Disabling `docker pull` calls", "### Disabling `docker pull` calls",
@@ -169,6 +164,21 @@ def usage_docker_pull(service, alias, scheme, ports):
]) ])
def fetch_commands_content(service, alias, scheme, ports, unimplemented, commands, content):
i = 0
for command in commands:
output = command_help(command, service, alias, scheme, ports, unimplemented)
if output == "":
continue
content.append(output)
i += 1
if i == 0:
return ""
return "\n".join(content)
def parse_args(line): def parse_args(line):
line = line.strip() line = line.strip()
arguments = [] arguments = []
@@ -195,7 +205,10 @@ def parse_args(line):
return " ".join(arguments) return " ".join(arguments)
def command_help(command, service, alias, scheme, ports): def command_help(command, service, alias, scheme, ports, unimplemented):
if command in unimplemented:
return ""
data = command_data(command, service, alias, scheme, ports) data = command_data(command, service, alias, scheme, ports)
content = [ content = [
f"### {data['description']}", f"### {data['description']}",
@@ -221,12 +234,10 @@ def command_help(command, service, alias, scheme, ports):
# content.append(f"- {flag}") # content.append(f"- {flag}")
if len(data["examples"]) > 0: if len(data["examples"]) > 0:
content.append("")
content.append("examples:")
content.append("") content.append("")
content.append(data["examples"]) content.append(data["examples"])
return "\n".join(content) return "\n" + "\n".join(content)
def command_data(command, service, alias, scheme, ports): def command_data(command, service, alias, scheme, ports):
@@ -339,7 +350,7 @@ def command_data(command, service, alias, scheme, ports):
def process_sentence(sentence_lines): def process_sentence(sentence_lines):
sentence_lines = " ".join(sentence_lines) sentence_lines = " ".join(sentence_lines)
sentences = ". ".join(i.strip().capitalize() for i in sentence_lines.split(".")) sentences = ". ".join(i.strip().capitalize() for i in sentence_lines.split(".")).strip()
if not sentences.endswith(".") and not sentences.endswith(":"): if not sentences.endswith(".") and not sentences.endswith(":"):
sentences += ":" sentences += ":"
return sentences return sentences
@@ -359,21 +370,11 @@ def process_codeblock(codeblock_lines):
return f"```\n{codeblock_lines}\n```" return f"```\n{codeblock_lines}\n```"
def compile(service, version, alias, scheme, ports, dokku_version):
return "\n\n".join([
header(service),
description(service, version),
requirements(dokku_version),
installation(service, dokku_version),
commands(service, alias, scheme, ports),
usage(service, alias, scheme, ports),
])
def main(): def main():
service = None service = None
version = None version = None
alias = None alias = None
unimplemented = []
with open("config") as f: with open("config") as f:
for line in f.readlines(): for line in f.readlines():
if "IMAGE_VERSION=${" in line: if "IMAGE_VERSION=${" in line:
@@ -386,8 +387,12 @@ def main():
scheme = re.search('"(.+)"', line).group(1) scheme = re.search('"(.+)"', line).group(1)
if "PLUGIN_DATASTORE_PORTS=" in line: if "PLUGIN_DATASTORE_PORTS=" in line:
ports = re.search('\((.+)\)', line).group(1).split(" ") ports = re.search('\((.+)\)', line).group(1).split(" ")
if "PLUGIN_UNIMPLEMENTED_SUBCOMMANDS=" in line:
match = re.search('\((.+)\)', line)
if match is not None:
unimplemented = [s.strip('"') for s in match.group(1).split(" ")]
text = compile(service, version, alias, scheme, ports, "0.12.x+") text = compile(service, version, alias, scheme, ports, unimplemented, "0.12.x+")
base_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) base_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
readme_file = os.path.join(base_path, 'README.md') readme_file = os.path.join(base_path, 'README.md')

View File

@@ -30,7 +30,7 @@ service-info-cmd() {
#F --service-root, show the service root directory #F --service-root, show the service root directory
#F --status, show the service running status #F --status, show the service running status
#F --version, show the service image version #F --version, show the service image version
declare desc="print the connection information" declare desc="print the service information"
local cmd="$PLUGIN_COMMAND_PREFIX:info" argv=("$@") local cmd="$PLUGIN_COMMAND_PREFIX:info" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1 [[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" INFO_FLAG="$2" declare SERVICE="$1" INFO_FLAG="$2"