Commit Graph

5408 Commits

Author SHA1 Message Date
Matthias Beyer dfb706b3c1
Merge pull request #1340 from matthiasbeyer/imag-edit/ids-from-stdin
imag-edit: ids from stdin
2018-03-12 21:00:15 +01:00
Matthias Beyer f02276dabf
Merge pull request #1339 from matthiasbeyer/libimagnotes/simplify-errorhandling
Simplify error handling by using linking feature of error-chain
2018-03-12 20:35:37 +01:00
Matthias Beyer c11ec3bf05 Add changelog entry for editor command stdin and stderr inherit 2018-03-12 20:09:09 +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 03dbb3cf17 Add changelog entry for imag-edit reading ids from stdin 2018-03-12 19:58:27 +01:00
Matthias Beyer 8ae6e735e7 Allow reading store ids from stdin 2018-03-12 19:58:27 +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 1bd91cfd0b
Merge pull request #1337 from matthiasbeyer/minor
Minor
2018-03-12 19:07:02 +01:00
Matthias Beyer 5609651f11
Merge pull request #1338 from matthiasbeyer/libimagcontact/to-json-output
libimagcontact/imag-contact: json output support
2018-03-12 18:35:10 +01:00
Matthias Beyer bee2a161ef Add changelog entry for JSON output support in imag-contact 2018-03-12 18:23:03 +01:00
Matthias Beyer e755bfd9de Add JSON output support 2018-03-12 17:46:06 +01:00
Matthias Beyer e8ae2fb73e Add type so that we can serialize a Vcard 2018-03-12 17:45:50 +01:00
Matthias Beyer 60c1213ae5 Add changelog entry for ContactStore::all_contacts() 2018-03-12 17:07:36 +01:00
Matthias Beyer 72f248575c Add changelog entry for imag-contact "find" command 2018-03-12 17:07:36 +01:00
Matthias Beyer 70208ed768 Add changelog entry for imag-contact email field join seperator 2018-03-12 17:07:36 +01:00
Matthias Beyer a0e59670f0 Add changelog entry for libimagcontact UID->hash change 2018-03-12 17:07:36 +01:00
Matthias Beyer 6ec509709d
Merge pull request #1336 from matthiasbeyer/imag-contact/find-show
imag-contact: Add "find" command
2018-03-12 17:07:11 +01:00
Matthias Beyer b374f21d7c
Merge pull request #1335 from matthiasbeyer/imag-contact/list-pretty
imag-contact: Join mails with comma
2018-03-12 17:07:01 +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 cbe30fa9c2 Add "find" command
This patch adds a "find" command to imag-contact which can either list
or show the found contacts (defaults to "list").
2018-03-12 15:23:37 +01:00
Matthias Beyer 6803d66e87
Merge pull request #1324 from matthiasbeyer/minor
Minor patches
2018-03-12 15:23:12 +01:00
Matthias Beyer af4fadf104 Join mails with comma 2018-03-12 14:46:24 +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 0977fe5c36
Merge pull request #1333 from matthiasbeyer/libimagcontact/fix-uuid-fetching
Fix: use Path::file_stem() instead of Path::file_name()
2018-03-12 14:17:46 +01:00
Matthias Beyer cbe57f28bf Add changelog from v0.6.3 2018-03-12 13:32:27 +01:00
Matthias Beyer 03b5732b07 Add changelog from v0.6.2 2018-03-12 13:32:23 +01:00
Matthias Beyer ee74a6eacb Add note about changelog entries in bugfix patches 2018-03-12 13:32:23 +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 80cb70d77c
Merge pull request #1329 from matthiasbeyer/libimagstore/file-parsing-fix
This fixes the file parsing (again)
2018-03-10 15:45:31 +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 e07e30a502 Add changelog entry 2018-03-10 15:00:38 +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 a0b989efdf
Merge pull request #1323 from matthiasbeyer/do-not-have-to-update-version-numbers-in-tests
Replace hard coded version strings with compiletime env
2018-03-06 14:39:03 +01:00
Matthias Beyer 579c00b62a Replace hard coded version strings with compiletime env 2018-03-06 12:45:41 +01:00
Matthias Beyer 8c1a9ffe67
Merge pull request #1325 from matthiasbeyer/libimagrt/locked-io
libimagrt: locked io
2018-03-04 21:26:20 +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
Matthias Beyer 763f3fab86
Merge pull request #1315 from matthiasbeyer/libimagrt/provide-io
libimagrt: provide io
2018-03-04 14:42:47 +01:00
Matthias Beyer ee6e766c8d Use generate_runtime_setup() to create Runtime object 2018-03-04 13:57:44 +01:00
Matthias Beyer 19e9dfe33c Implement proxy object where runtime configures output
This is another approach for providing access to stdin/out/err via
libimagrt::runtime::Runtime.

The Runtime object does configure which output gets returned (stdout if
stdout is a tty, else stderr).

With this we can change libimagrt to read/write the store from/to
stdin/stdout without the user noticing that she does not write to stdout
but stderr.
Reading from stdin is not possible then, though.
2018-03-04 13:57:44 +01:00
Matthias Beyer 50461b839a Use output stream from Runtime::stdout() 2018-03-04 13:57:44 +01:00
Matthias Beyer c18c0bbbe4 Provide stdin/out/err resources via Runtime object
This way we can control whether "out" output goes to stdout or stderr
without the user of the functionality knowing.

This is useful for later when we use libimagrt to automatically
read and write the store from and to stdout/in depending on whether we
are talking to a TTY or a pipe.
2018-03-04 13:57:02 +01:00
Matthias Beyer f88884c321
Merge pull request #1321 from matthiasbeyer/libimagdiary/not-on-retrieve-for-module
libimagdiary: Do not rely on Store::retrieve_for_module
2018-03-03 13:53:18 +01:00
Matthias Beyer 590a2e8f1d
Merge pull request #1317 from matthiasbeyer/imag-diary/daily
imag diary: "daily" support + Fixes for other timed entries
2018-03-03 13:29:10 +01:00
Matthias Beyer c9af23f663
Merge pull request #1314 from matthiasbeyer/imag/do-not-instantiate-runtime
Change "imag" impl to not instantiate Runtime object
2018-03-02 23:28:10 +01:00
Matthias Beyer eccb52a85c Fix imag-log for new Diary::entries() interface 2018-03-02 23:27:20 +01:00