insanum / sncli

Simplenote CLI

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Opening a note directly from shell

volt4ire opened this issue · comments

Is there a way to open a note based on its title directly from the shell (ie: without opening first opening sncli and then selecting the note from the list)? Based on the docs it seems like you can open/edit a note directly by specifying its key with the -k option, but I don't know how to find or associate a key with a note. For example, I want to edit a simplenote note called "today" via sncli directly from bash, but running
$sncli -k today
returns a long python error message (see below). Thanks!

$ sncli -k today
Traceback (most recent call last):
File "/home/rwbarat/.local/bin/sncli", line 10, in
sys.exit(main())
File "/home/rwbarat/.local/lib/python3.7/site-packages/simplenote_cli/sncli.py", line 1353, in main
sncli(sync, verbose, config).gui(key)
File "/home/rwbarat/.local/lib/python3.7/site-packages/simplenote_cli/sncli.py", line 967, in gui
'log' : self.log
File "/home/rwbarat/.local/lib/python3.7/site-packages/simplenote_cli/view_note.py", line 21, in init
self.note = self.ndb.get_note(self.key) if self.key else None
File "/home/rwbarat/.local/lib/python3.7/site-packages/simplenote_cli/notes_db.py", line 351, in get_note
return self.notes[key]
KeyError: 'today'

commented

It's possible, but you must know the key.
The key is the name of the json file without the extension.
All notes are stored as individual file named xxxxx.json. xxxxx is the key.
These files are stored in the "cfg_db_path" directory.

commented

To find the key, you can run sncli, then select the note you want, and type 'O' to show the note raw json. The key is displayed there.

Thanks @nbenm. To add to this, there is a PR open (#49) to enable acting on a note based on its title, but it needs some work before it can be merged.

commented

To find the key, you can run sncli, then select the note you want, and type 'O' to show the note raw json. The key is displayed there.

Awesome, didn't know that one, thanks.. any way I can view in my default editor?

@drewauff

Awesome, didn't know that one, thanks.. any way I can view in my default editor?

Yep, you can set the cfg_pager option. It defaults to $PAGER if set, or less.

commented

@drewauff

Awesome, didn't know that one, thanks.. any way I can view in my default editor?

Yep, you can set the cfg_pager option. It defaults to $PAGER if set, or less.

Yep, that did it, Thank You 👍🏽

Hello. Is there a way to open a note in editor??
this command
sncli -k a67e0325eb5b4e7790719fc0b22b99d1
opens it but in viewer mode. not inside editor..
anyone knows? thanks!

commented

en type "e" to edit the note.

Yes. I am aware of that. But I was asking if there is a way to enter directly to edition without the need of pressing 'e'.
thanks again.

@andmarti1424

if there is a way to enter directly to edition without the need of pressing 'e'.

There is an edit subcommand, so this should do what you want:

sncli -k a67e0325eb5b4e7790719fc0b22b99d1 edit

EDIT: order of arguments is significant - currently it needs the -k <key arg before edit.

@andmarti1424

if there is a way to enter directly to edition without the need of pressing 'e'.

There is an edit subcommand, so this should do what you want:

sncli -k a67e0325eb5b4e7790719fc0b22b99d1 edit

EDIT: order of arguments is significant - currently it needs the -k <key arg before edit.

Actually I tried that. And it just showed:

 sncli [OPTIONS] [COMMAND] [COMMAND_ARGS]

 OPTIONS:
  -h, --help                  - usage help
  -v, --verbose               - verbose output
  -n, --nosync                - don't perform a server sync
  -r, --regex                 - search string is a regular expression
  -k <key>, --key=<key>       - note key
  -t <title>, --title=<title> - title of note for create (cli mode)
  -c <file>, --config=<file>  - config file to read from (defaults to ~/.snclirc)

 COMMANDS:
  <none>                      - console gui mode when no command specified
  sync                        - perform a full sync with the server
  list [search_string]        - list notes (refined with search string)
  export [search_string]      - export notes in JSON (refined with search string)
  dump [search_string]        - dump notes (refined with search string)
  create [-]                  - create a note ('-' content from stdin)
  import [-]                  - import a note in JSON format ('-' JSON from stdin)
  export                      - export a note in JSON format (specified by <key>)
  dump                        - dump a note (specified by <key>)
  edit                        - edit a note (specified by <key>)
  < trash | untrash >         - trash/untrash a note (specified by <key>)
  < pin | unpin >             - pin/unpin a note (specified by <key>)
  < markdown | unmarkdown >   - markdown/unmarkdown a note (specified by <key>)
  tag get                     - retrieve the tags from a note (specified by <key>)
  tag set <tags>              - set the tags for a note (specified by <key>)
  tag add <tags>              - add tags to a note (specified by <key>)
  tag rm <tags>               - remove tags from a note (specified by <key>)

Actually I tried that. And it just showed:

@andmarti1424 can you paste the entire output, including what you wrote on the command line?

EDIT: order of arguments is significant - currently it needs the -k <key arg before edit.

This was the problem. Thank you!