Commit Graph

496 Commits

Author SHA1 Message Date
Matthias Beyer b59c234588 Use clap "^2.29" instead of ">=2.29" 2018-04-13 16:17:43 +02:00
Matthias Beyer c27dc79afe
Merge pull request #1383 from matthiasbeyer/libimagrt/handler-exit-if-subcommand-not-found
libimagrt: Exit if handler does not find subcommand
2018-04-08 22:21:19 +02:00
Matthias Beyer 16a76f6213 Exit if handler does not find subcommand 2018-04-08 20:38:46 +02:00
Matthias Beyer c5c9c7b9ba Fix: Editor commands should be split at whitespace
This fixes the following problem:

If the editor setting was "vim " instead of "vim", the editor was called
with `"vim" " "`, which resulted in unexpected behaviour.

The patch fixes this.
2018-04-08 20:28:11 +02:00
Matthias Beyer a769186cd7 Make iterator lifetimes less restricting 2018-04-07 13:55:54 +02:00
Matthias Beyer 93195b3bad Default clap app builder: Allow external subcommands 2018-04-04 19:34:13 +02:00
Matthias Beyer cb8b5a0cf6 Add helper for handling unknown subcommands 2018-04-03 18:23:01 +02:00
Matthias Beyer e61ccc9561 Fix: Entry::to_str() should return Result<_>
Because serializing might fail.

Also fixes all usages of the API.
2018-03-26 14:24:42 +02:00
Matthias Beyer 7429754665 Rewrite edit_in_tmpfile() for new Runtime::editor() signature 2018-03-23 23:55:11 +01:00
Matthias Beyer ea38f2ffbf Fix: Pass /dev/tty as stdin for editor
This fixes the issue that spawning the editor trashes the terminal.

The signature of the Runtime::editor() function changed, which has to be
fixed in using code.
2018-03-23 23:55:06 +01:00
Matthias Beyer 13af364b76 Add header editing support 2018-03-23 17:16:40 +01:00
Matthias Beyer 9e0d0d9f6c Add Entry::replace_from_buffer() 2018-03-23 15:44:34 +01:00
Matthias Beyer aa32dd1ec2 Add debugging output if kairos fails to parse input 2018-03-23 10:05:58 +01:00
Matthias Beyer 6f33e4e322 Add debug output 2018-03-23 10:05:58 +01:00
Matthias Beyer bcdbb8197a Use "ui" module in libimagtimeui 2018-03-23 10:05:58 +01:00
Matthias Beyer 7e623f39b8 Add message why panic
So we see that when grepping the source for `unimplemented!()`.
2018-03-23 10:05:58 +01:00
Matthias Beyer 835c003491
Merge pull request #1360 from matthiasbeyer/libimaghabit/create-vs-retrieve
Fix: Use retrieve in retrieve variant
2018-03-23 10:03:52 +01:00
Matthias Beyer 96f4f93ed0
Merge pull request #1356 from matthiasbeyer/libimaghabit/link-new-instances
Fix: libimaghabit::habit::HabitTemplate should link created instances…
2018-03-23 10:03:44 +01:00
Matthias Beyer c39a1f82e2
Merge pull request #1355 from matthiasbeyer/libimagstore/create-semantic-fix
Fix: Store::create() should fail if the entry exists
2018-03-22 22:04:29 +01:00
Matthias Beyer 30233456df Fix: Use retrieve in retrieve variant 2018-03-22 21:34:00 +01:00
Matthias Beyer b62d7eab85 Fix: libimaghabit::habit::HabitTemplate should link created instances to the template 2018-03-22 21:32:58 +01:00
Matthias Beyer c857f97287
Merge pull request #1357 from matthiasbeyer/libimaghabit/create-vs-retrieve
Libimaghabit/create vs retrieve
2018-03-22 21:20:26 +01:00
Matthias Beyer 41f7bab1c5 Fix: Store::create() should fail if the entry exists 2018-03-22 21:16:11 +01:00
Matthias Beyer e4fc2e8010
Merge pull request #1354 from matthiasbeyer/libimaghabit/check-is-done-for-date
Add helper to check whether an instance exists for a date
2018-03-22 14:36:32 +01:00
Matthias Beyer 247b9499a7 Refactor for less verbose code 2018-03-22 14:00:10 +01:00
Matthias Beyer 2232f0153f Dedup code 2018-03-22 13:54:15 +01:00
Matthias Beyer 964b168f18 Add "retrieve" variants for retrieving instances
and fix create implementation to use `Store::create()`, which did the
wrong thing.
2018-03-22 13:51:12 +01:00
Matthias Beyer 45fdeb4e18 Add helper to check whether an instance exists for a date 2018-03-22 13:44:41 +01:00
Matthias Beyer 3d7be3a1e0
Merge pull request #1349 from matthiasbeyer/libimagentryref/fixes
Fix: Allocating of buffer does not work as expected with Vec::with_ca…
2018-03-21 18:04:37 +01:00
Matthias Beyer d2eb4936b1 Fix: Allocating of buffer does not work as expected with Vec::with_capacity() 2018-03-20 16:51:19 +01:00
Matthias Beyer 5ceeacd6c8 Provide Ref::make_ref() for making a ref out of an existing entry 2018-03-19 14:18:02 +01:00
Matthias Beyer a23afa7772 Ensure command and args are provided correctly 2018-03-13 08:32:40 +01:00
Matthias Beyer b8c3f7f834 Read editor from configuration, ignore errors 2018-03-13 08:32:40 +01:00
Matthias Beyer fb9866bd46
Merge pull request #1342 from matthiasbeyer/libimagentryedit/fix-editor-stdinerr-inherit
libimagentryedit: fix editor stdinerr inherit
2018-03-12 21:14:01 +01:00
Matthias Beyer 43a3f4a5db Fix editor command
do inherit stdin and stderr from parent process, to not break terminal
editors when editing stuff.

vim printed "Input not from terminal" warning messages. This was fixed
by this commit.
2018-03-12 20:08:10 +01:00
Matthias Beyer 5d9fd7ab10 Simplify error handling by using linking feature of error-chain 2018-03-12 19:21:48 +01:00
Matthias Beyer e8ae2fb73e Add type so that we can serialize a Vcard 2018-03-12 17:45:50 +01:00
Matthias Beyer bbd0570013
Merge pull request #1334 from matthiasbeyer/libimagcontact/ref-from-uid
Change ref creation to use UID from vcard object
2018-03-12 17:06:54 +01:00
Matthias Beyer 6803d66e87
Merge pull request #1324 from matthiasbeyer/minor
Minor patches
2018-03-12 15:23:12 +01:00
Matthias Beyer 65d558727e Change ref creation to use UID from vcard object 2018-03-12 14:43:02 +01:00
Matthias Beyer 252046583a
Merge pull request #1332 from matthiasbeyer/libimagcontact/all-contacts
Implement ContactStore::all_contacts()
2018-03-12 14:17:54 +01:00
Matthias Beyer 68ace5d147 Fix typo 2018-03-12 13:32:23 +01:00
Matthias Beyer 8a9b2e9a8f Fix: use Path::file_stem() instead of Path::file_name()
Because we don't want to know the extension of the filename here.
2018-03-12 13:30:31 +01:00
Matthias Beyer 3bf1b6ccec Implement ContactStore::all_contacts() 2018-03-12 12:52:24 +01:00
Matthias Beyer d3b38b5a90
Merge pull request #1330 from matthiasbeyer/libimagrt/pipe-magic
Implement pipe magic in libimagrt
2018-03-10 16:20:36 +01:00
Matthias Beyer ce0bd9298a Implement pipe magic in libimagrt
When we merged the changes in libimagrt so that it automatically detects
whether stdin/stdout is a TTY and provides the user with stderr in case
stdout is not a TTY, we forgot that things like

    imag foo | grep bar

becomes impossible with that, because imag detects that stdout is not a
tty and automatically uses stderr for output.

But in this case, we don't want that. The output has to be stdout in
this case.

With this change, we have a flag in the runtime ("--pipe-magic" or "-P",
globally available) which turns on "pipe magic".

The expected behaviour is the following, if "-P" is passed:

* If stdout is a TTY, we print to stdout
* If stdout is not a TTY, we print to stderr
* If stdin is not a TTY, we do not provide it

If "-P" is not passed, we allow the user of libimagrt to use stdin for
interactive stuff (the interactive stuff is not yet implemented).

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2018-03-10 15:43:44 +01:00
Matthias Beyer da408b9e67 This fixes the file parsing (again)
Unfortunately, our latest fix to file parsing did not solve all issues.
So we have to fix it _again_.

The problem was the `std::str::Lines` iterator, which apparently fails
this:

    assert_eq!(1, "".lines().count());

as an empty line seems not to be a line.

Because of that, when reading a file with an empty line at its bottom
got stripped off that line.

This patch removes the use of the `lines()` iterator and uses
`split("\n")` instead. This only works on Unix operating systems, but as
we only target unix operating systems with imag, this is not considered
an issue right now.

This patch also adds extensive tests on multiple levels in the
`libimagstore` implementation:

* On the parsing level, for the function which implements the parsing
* On the filesystem abstraction levels
* On the `Store` levels

to make sure that everything is parsed correctly.
2018-03-10 14:53:15 +01:00
Matthias Beyer 579c00b62a Replace hard coded version strings with compiletime env 2018-03-06 12:45:41 +01:00
Matthias Beyer 3cb7372b67 Provide LockedOutputProxy which holds locked variants of Stdout/Stderr 2018-03-04 15:42:00 +01:00
Matthias Beyer 0b593d6635 Let the OutputProxy hold Stdout/Stderr objects, so we do not have to aquire them each write!() 2018-03-04 15:41:32 +01:00