- Notifications
You must be signed in to change notification settings - Fork11
The HackMD/CodiMD Command Line Tool
License
hackmdio/hackmd-cli
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
hackmd-cli
v2 now only supports the official HackMD instance(hackmd.io) and HackMD EE instances after version1.38.1
. CodiMD is not supported anymore. If you want to use the CLI tools with CodiMD, please check out thev1.x
README and follow the instruction there.
- If you are using the CLI with CodiMD, please follow the
v1.x
README - If you are using the CLI with HackMD(hackmd.io) or HackMD EE(Enterprise Edition) instances:
- You're using the JSON file-based config: Remove
~/.hackmd/config.json
and start over again. You can start withconfiguration section. - You're using environment variable based config:
HMD_CLI_SERVER_URL
has been replaced withHMD_API_ENDPOINT_URL
. AndHMD_API_ENDPOINT_URL
may vary depending on your instance. Please check contact your instance admin to get the correctHMD_API_ENDPOINT_URL
. For generating access token, please check theconfiguration section. You'll need to set theHMD_API_ACCESS_TOKEN
environment variable.
- You're using the JSON file-based config: Remove
$npm install -g @hackmd/hackmd-cli$hackmd-cli COMMANDrunning command...$hackmd-cli (--version|-v)@hackmd/hackmd-cli/2.3.2 darwin-arm64 node-v18.14.2$hackmd-cli --help [COMMAND]USAGE $ hackmd-cli COMMAND...
Access token should be set before usinghackmd-cli
. It can be created by landinghackmd.io ->Setting ->API -> Create API token. Copy the token and set it as config variable. For more details, please follow the tutorial:How to issue an API token.
Set the access token bylogin
command. By doing so, the access token will be saved in~/.hackmd/config.json
.
$hackmd-cli loginEnter your access token: My_ACCESS_TOKEN
Or you don't want to keep the credentials in one file, you can set it through environment variable:
export HMD_API_ACCESS_TOKEN=MY_ACCESS_TOKEN
Or you can write the configuration file manually. Edit~/.hackmd/config.json
with the following content:
{"accessToken":"MY_ACCESS_TOKEN"}
hackmd-cli
operates on the official HackMD API endpoint (https://api.hackmd.io/v1
) by default. If you want to usehackmd-cli
with a customHackMD EE instance, you will need to configure the API endpoint by either environment variable or JSON configuration manually.
Set environment variable in your shell profile:
export HMD_API_ENDPOINT_URL=https://my.hackmd-ee.api.endpoint
Or in JSON file (~/.hackmd/config.json
):
{"hackmdAPIEndpointURL":"https://my.hackmd-ee.api.endpoint"}
All available configurations are listed in the table below.
Config key | Environment Variable | Data Type | Example Value | Description |
---|---|---|---|---|
hackmdAPIEndpointURL | HMD_API_ENDPOINT_URL | string | https://api.hackmd.io/v1 | HackMD EE API endpoint URL |
accessToken | HMD_API_ACCESS_TOKEN | string | UFHR12H7FSEF3ADFY3N9YNRN2E49VGR212NBF | Token to access HackMD APIs |
hackmd-cli autocomplete [SHELL]
hackmd-cli export
hackmd-cli help [COMMANDS]
hackmd-cli history
hackmd-cli login
hackmd-cli logout
hackmd-cli notes
hackmd-cli notes create
hackmd-cli notes delete
hackmd-cli notes update
hackmd-cli team-notes
hackmd-cli team-notes create
hackmd-cli team-notes delete
hackmd-cli team-notes update
hackmd-cli teams
hackmd-cli version
hackmd-cli whoami
display autocomplete installation instructions
USAGE $ hackmd-cli autocomplete [SHELL] [-r]ARGUMENTS SHELL shell typeFLAGS -r, --refresh-cache Refresh cache (ignores displaying instructions)DESCRIPTION display autocomplete installation instructionsEXAMPLES $ hackmd-cli autocomplete $ hackmd-cli autocomplete bash $ hackmd-cli autocomplete fish $ hackmd-cli autocomplete zsh $ hackmd-cli autocomplete --refresh-cache
See code:@hackmd/oclif-plugin-autocomplete
Export note content
USAGE $ hackmd-cli export [-h] [--noteId <value>]FLAGS -h, --help Show CLI help. --noteId=<value> HackMD note idDESCRIPTION Export note contentEXAMPLES $ hackmd-cli export --noteId=kNFWV5E-Qz-QP7u6XnNvyQ # A note to be exported
See code:src/commands/export.ts
Display help for hackmd-cli.
USAGE $ hackmd-cli help [COMMANDS] [-n]ARGUMENTS COMMANDS Command to show help for.FLAGS -n, --nested-commands Include all nested commands in the output.DESCRIPTION Display help for hackmd-cli.
See code:@oclif/plugin-help
List user browse history
USAGE $ hackmd-cli history [-h] [--columns <value> | -x] [--sort <value>] [--filter <value>] [--output csv|json|yaml | | [--csv | --no-truncate]] [--no-header | ]FLAGS -h, --help Show CLI help. -x, --extended show extra columns --columns=<value> only show provided columns (comma-separated) --csv output is csv format [alias: --output=csv] --filter=<value> filter property by partial string matching, ex: name=foo --no-header hide table header from output --no-truncate do not truncate output to fit screen --output=<option> output in a more machine friendly format <options: csv|json|yaml> --sort=<value> property to sort by (prepend '-' for descending)DESCRIPTION List user browse historyEXAMPLES $ hackmd-cli history ID Title User Path Team Path ────────────────────── ──────────────────────────────── ────────────────────── ──────── raUuSTetT5uQbqQfLnz9lA CLI test note gvfz2UB5THiKABQJQnLs6Q null BnC6gN0_TfStV2KKmPPXeg Welcome to your team's workspace null CLI-test
See code:src/commands/history.ts
Login to HackMD server from CLI
USAGE $ hackmd-cli login [-h]FLAGS -h, --help Show CLI help.DESCRIPTION Login to HackMD server from CLIEXAMPLES $ hackmd-cli login Enter your access token: MY_ACCESS_TOKEN Login successfully
See code:src/commands/login.ts
Login to HackMD server from CLI
USAGE $ hackmd-cli logout [-h]FLAGS -h, --help Show CLI help.DESCRIPTION Login to HackMD server from CLIEXAMPLES $ hackmd-cli logout You've logged out successfully
See code:src/commands/logout.ts
HackMD notes commands
USAGE $ hackmd-cli notes [-h] [--noteId <value>] [--columns <value> | -x] [--sort <value>] [--filter <value>] [--output csv|json|yaml | | [--csv | --no-truncate]] [--no-header | ]FLAGS -h, --help Show CLI help. -x, --extended show extra columns --columns=<value> only show provided columns (comma-separated) --csv output is csv format [alias: --output=csv] --filter=<value> filter property by partial string matching, ex: name=foo --no-header hide table header from output --no-truncate do not truncate output to fit screen --noteId=<value> HackMD note id --output=<option> output in a more machine friendly format <options: csv|json|yaml> --sort=<value> property to sort by (prepend '-' for descending)DESCRIPTION HackMD notes commandsEXAMPLES $ hackmd-cli notes ID Title User Path Team Path ────────────────────── ──────────────────────────────── ────────────────────── ──────── raUuSTetT5uQbqQfLnz9lA CLI test note gvfz2UB5THiKABQJQnLs6Q null
See code:src/commands/notes/index.ts
Create a note
USAGE $ hackmd-cli notes create [-h] [--title <value>] [--content <value>] [--readPermission <value>] [--writePermission <value>] [--commentPermission <value>] [-e] [--columns <value> | -x] [--sort <value>] [--filter <value>] [--output csv|json|yaml | | [--csv | --no-truncate]] [--no-header | ]FLAGS -e, --editor create note with $EDITOR -h, --help Show CLI help. -x, --extended show extra columns --columns=<value> only show provided columns (comma-separated) --commentPermission=<value> set comment permission: disabled, forbidden, owners, signed_in_users, everyone --content=<value> new note content --csv output is csv format [alias: --output=csv] --filter=<value> filter property by partial string matching, ex: name=foo --no-header hide table header from output --no-truncate do not truncate output to fit screen --output=<option> output in a more machine friendly format <options: csv|json|yaml> --readPermission=<value> set note permission: owner, signed_in, guest --sort=<value> property to sort by (prepend '-' for descending) --title=<value> new note title --writePermission=<value> set note permission: owner, signed_in, guestDESCRIPTION Create a noteEXAMPLES notes create --content='# A new note' --readPermission=owner --writePermission=owner --commentPermission=disabled ID Title User Path Team Path ────────────────────── ──────────────────────────────── ────────────────────── ──────── raUuSTetT5uQbqQfLnz9lA A new note gvfz2UB5THiKABQJQnLs6Q null Or you can pipe content via Unix pipeline: cat README.md | hackmd-cli notes create
Delete a note
USAGE $ hackmd-cli notes delete [-h] [--noteId <value>]FLAGS -h, --help Show CLI help. --noteId=<value> HackMD note idDESCRIPTION Delete a noteEXAMPLES $ hackmd-cli notes delete --noteId=WNkLM6gkS0Cg2cQ8rv7bYA
Update note content
USAGE $ hackmd-cli notes update [-h] [--noteId <value>] [--content <value>]FLAGS -h, --help Show CLI help. --content=<value> new note content --noteId=<value> HackMD note idDESCRIPTION Update note contentEXAMPLES $ hackmd-cli notes update --noteId=WNkLM6gkS0Cg2cQ8rv7bYA --content='# A new title'
HackMD team-notes commands
USAGE $ hackmd-cli team-notes [-h] [--teamPath <value>] [--columns <value> | -x] [--sort <value>] [--filter <value>] [--output csv|json|yaml | | [--csv | --no-truncate]] [--no-header | ]FLAGS -h, --help Show CLI help. -x, --extended show extra columns --columns=<value> only show provided columns (comma-separated) --csv output is csv format [alias: --output=csv] --filter=<value> filter property by partial string matching, ex: name=foo --no-header hide table header from output --no-truncate do not truncate output to fit screen --output=<option> output in a more machine friendly format <options: csv|json|yaml> --sort=<value> property to sort by (prepend '-' for descending) --teamPath=<value> HackMD team pathDESCRIPTION HackMD team-notes commandsEXAMPLES $ hackmd-cli team-notes --teamPath=CLI-test ID Title User path Team path ────────────────────── ──────────────────────────────── ──────── ──────── WNkLM6gkS0Cg2cQ8rv7bYA a team note null CLI-test BnC6gN0_TfStV2KKmPPXeg Welcome to your team's workspace null CLI-test
See code:src/commands/team-notes/index.ts
Create a team note
USAGE $ hackmd-cli team-notes create [-h] [--teamPath <value>] [--title <value>] [--content <value>] [--readPermission <value>] [--writePermission <value>] [--commentPermission <value>] [-e] [--columns <value> | -x] [--sort <value>] [--filter <value>] [--output csv|json|yaml | | [--csv | --no-truncate]] [--no-header | ]FLAGS -e, --editor create note with $EDITOR -h, --help Show CLI help. -x, --extended show extra columns --columns=<value> only show provided columns (comma-separated) --commentPermission=<value> set comment permission: disabled, forbidden, owners, signed_in_users, everyone --content=<value> new note content --csv output is csv format [alias: --output=csv] --filter=<value> filter property by partial string matching, ex: name=foo --no-header hide table header from output --no-truncate do not truncate output to fit screen --output=<option> output in a more machine friendly format <options: csv|json|yaml> --readPermission=<value> set note permission: owner, signed_in, guest --sort=<value> property to sort by (prepend '-' for descending) --teamPath=<value> HackMD team path --title=<value> new note title --writePermission=<value> set note permission: owner, signed_in, guestDESCRIPTION Create a team noteEXAMPLES team-notes:create --teamPath=CLI-test --content='# A new note' --readPermission=owner --writePermission=owner --commentPermission=disabled ID Title User Path Team Path ────────────────────── ──────────────────────────────── ────────────────────── ──────── raUuSTetT5uQbqQfLnz9lA A new note gvfz2UB5THiKABQJQnLs6Q null Or you can pipe content via Unix pipeline: cat README.md | hackmd-cli notes create --teamPath=CLI-test
Delete a team note
USAGE $ hackmd-cli team-notes delete [-h] [--teamPath <value>] [--noteId <value>]FLAGS -h, --help Show CLI help. --noteId=<value> HackMD note id --teamPath=<value> HackMD team pathDESCRIPTION Delete a team noteEXAMPLES $ hackmd-cli team-notes delete --teamPath=CLI-test --noteId=WNkLM6gkS0Cg2cQ8rv7bYA
Update team note content
USAGE $ hackmd-cli team-notes update [-h] [--teamPath <value>] [--noteId <value>] [--content <value>]FLAGS -h, --help Show CLI help. --content=<value> new note content --noteId=<value> HackMD note id --teamPath=<value> HackMD team pathDESCRIPTION Update team note contentEXAMPLES $ hackmd-cli team-notes update --teamPath=CLI-test --noteId=WNkLM6gkS0Cg2cQ8rv7bYA --content='# A new title'
List teams
USAGE $ hackmd-cli teams [-h] [--columns <value> | -x] [--sort <value>] [--filter <value>] [--output csv|json|yaml | | [--csv | --no-truncate]] [--no-header | ]FLAGS -h, --help Show CLI help. -x, --extended show extra columns --columns=<value> only show provided columns (comma-separated) --csv output is csv format [alias: --output=csv] --filter=<value> filter property by partial string matching, ex: name=foo --no-header hide table header from output --no-truncate do not truncate output to fit screen --output=<option> output in a more machine friendly format <options: csv|json|yaml> --sort=<value> property to sort by (prepend '-' for descending)DESCRIPTION List teamsEXAMPLES $ hackmd-cli teams ID Name Path Owner ID ──────────────────────────────────── ───────────── ──────── ──────────────────────────────────── f76308a6-d77a-41f6-86d0-8ada426a6fb4 CLI test team CLI-test 82f7f3d9-4079-4c78-8a00-14094272ece9
See code:src/commands/teams.ts
USAGE $ hackmd-cli version [--json] [--verbose]FLAGS --verbose Show additional information about the CLI.GLOBAL FLAGS --json Format output as json.FLAG DESCRIPTIONS --verbose Show additional information about the CLI. Additionally shows the architecture, node version, operating system, and versions of plugins that the CLI is using.
See code:@oclif/plugin-version
Show current user information
USAGE $ hackmd-cli whoami [-h] [--columns <value> | -x] [--sort <value>] [--filter <value>] [--output csv|json|yaml | | [--csv | --no-truncate]] [--no-header | ]FLAGS -h, --help Show CLI help. -x, --extended show extra columns --columns=<value> only show provided columns (comma-separated) --csv output is csv format [alias: --output=csv] --filter=<value> filter property by partial string matching, ex: name=foo --no-header hide table header from output --no-truncate do not truncate output to fit screen --output=<option> output in a more machine friendly format <options: csv|json|yaml> --sort=<value> property to sort by (prepend '-' for descending)DESCRIPTION Show current user informationEXAMPLES $ hackmd-cli whoami ID Name Email User path ──────────────────────────────────── ────────────── ───── ────────────────────── 82f7f3d9-4079-4c78-8a00-14094272ece9 Ming-Hsiu Tsai null gvfz2UB5THiKABQJQnLs6Q
See code:src/commands/whoami.ts
MIT
About
The HackMD/CodiMD Command Line Tool