mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-18 03:58:32 +02:00
Sample Importer: Handle data consistently whether from file or stdin
Importers: handle writing the journal to disk ourselves (rather than delegating to the plugin) Plugins: First pass at testing custom importer
This commit is contained in:
parent
183795d3f5
commit
7f5fbca658
5 changed files with 33 additions and 10 deletions
15
features/data/simple_import.json
Normal file
15
features/data/simple_import.json
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"entries" :
|
||||
[
|
||||
{
|
||||
"date" : "2013-06-09 15:39",
|
||||
"title" : "My first entry.",
|
||||
"body" : "Everything is alright"
|
||||
},
|
||||
{
|
||||
"date" : "2013-06-10 15:40",
|
||||
"title" : "Life is good.",
|
||||
"body" : "But I'm better."
|
||||
}
|
||||
]
|
||||
}
|
|
@ -5,7 +5,7 @@ Feature: Functionality of Importer and Exporter Plugins
|
|||
Given We use the config "basic_onefile.yaml"
|
||||
When We run "jrnl --version"
|
||||
Then the output should contain pyproject.toml version
|
||||
And The output should contain "<plugin_name> : <version> from jrnl.<source>.<type>.<filename>"
|
||||
And the output should contain "<plugin_name> : <version> from jrnl.<source>.<type>.<filename>"
|
||||
And the output should not contain ".contrib."
|
||||
|
||||
Examples:
|
||||
|
@ -31,7 +31,8 @@ Feature: Functionality of Importer and Exporter Plugins
|
|||
Given We use the config "basic_onefile.yaml"
|
||||
When We run "jrnl --version"
|
||||
Then the output should contain pyproject.toml version
|
||||
And The output should contain "<plugin_name> : <version> from jrnl.<source>.<type>.<filename>"
|
||||
And the output should contain "<plugin_name> : <version> from jrnl.<source>.<type>.<filename>"
|
||||
|
||||
Examples:
|
||||
| plugin_name | version | source | type | filename |
|
||||
| jrnl | <pyproject.toml version> | plugins | importer | jrnl |
|
||||
|
@ -65,9 +66,15 @@ Feature: Functionality of Importer and Exporter Plugins
|
|||
| json | <pyproject.toml version> | plugins | exporter | json |
|
||||
| txt | <pyproject.toml version> | plugins | exporter | text |
|
||||
|
||||
@skip_only_with_external_plugins
|
||||
Scenario Outline: Custom JSON Import
|
||||
Given we use the config "simple.yaml"
|
||||
When we run "jrnl --import ./features/data/simple_import.json"
|
||||
Then the journal should contain "My first entry."
|
||||
And the journal should contain "Life is good."
|
||||
|
||||
@skip_only_with_external_plugins
|
||||
Scenario Outline: JSON format
|
||||
Scenario Outline: Custom JSON Export
|
||||
Given we use the config "<config>.yaml"
|
||||
And we use the password "test" if prompted
|
||||
When we run "jrnl --format json"
|
||||
|
@ -79,8 +86,8 @@ Feature: Functionality of Importer and Exporter Plugins
|
|||
And entry 3 should not have an array "tags"
|
||||
|
||||
Examples: configs
|
||||
| config |
|
||||
| basic_onefile |
|
||||
| basic_encrypted |
|
||||
| basic_folder |
|
||||
| basic_dayone |
|
||||
| config |
|
||||
| basic_onefile |
|
||||
| basic_encrypted |
|
||||
| basic_folder |
|
||||
| basic_dayone |
|
||||
|
|
|
@ -75,6 +75,7 @@ def postconfig_import(args, config, **kwargs):
|
|||
|
||||
format = args.export if args.export else "jrnl"
|
||||
get_importer(format).import_(journal, args.filename)
|
||||
journal.write()
|
||||
|
||||
|
||||
def postconfig_encrypt(args, config, original_config, **kwargs):
|
||||
|
|
|
@ -37,4 +37,3 @@ class Importer(BaseImporter):
|
|||
),
|
||||
file=sys.stderr,
|
||||
)
|
||||
journal.write()
|
||||
|
|
|
@ -27,13 +27,14 @@ class Importer(BaseImporter):
|
|||
data = json.loads(f)
|
||||
else:
|
||||
try:
|
||||
data = sys.stdin.read()
|
||||
f = sys.stdin.read()
|
||||
except KeyboardInterrupt:
|
||||
print(
|
||||
"[Entries NOT imported into journal.]",
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(0)
|
||||
data = json.loads(f)
|
||||
|
||||
for json_entry in data:
|
||||
raw = json_entry["title"] + "/n" + json_entry["body"]
|
||||
|
|
Loading…
Add table
Reference in a new issue