Skip to content

Commit

Permalink
Sample Importer: Handle data consistently whether from file or stdin
Browse files Browse the repository at this point in the history
Importers: handle writing the journal to disk ourselves (rather than delegating to the plugin)
Plugins: First pass at testing custom importer
  • Loading branch information
MinchinWeb authored and wren committed Jul 17, 2021
1 parent 183795d commit 7f5fbca
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 10 deletions.
15 changes: 15 additions & 0 deletions features/data/simple_import.json
@@ -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."
}
]
}
23 changes: 15 additions & 8 deletions features/plugins.feature
Expand Up @@ -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:
Expand All @@ -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 |
Expand Down Expand Up @@ -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"
Expand All @@ -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 |
1 change: 1 addition & 0 deletions jrnl/commands.py
Expand Up @@ -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):
Expand Down
1 change: 0 additions & 1 deletion jrnl/plugins/importer/jrnl.py
Expand Up @@ -37,4 +37,3 @@ def import_(journal, input=None):
),
file=sys.stderr,
)
journal.write()
Expand Up @@ -27,13 +27,14 @@ def import_(journal, input=None):
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"]
Expand Down

0 comments on commit 7f5fbca

Please sign in to comment.