Backup repository for imag-pim.org / imag https://imag-pim.org
Find a file
Matthias Beyer 41e981fa48 Add force-override option to "imag-contact import"
This patch adds the option to force-override the ref data in the
imported entries. This is necessary when importing contact data which is
already in the store, but where the reference data has changed (for
example if the hash of the file has changed, this might come in handy at
some point).

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-04-22 14:37:43 +02:00
.github Rewrite github template 2019-04-21 13:51:55 +02:00
bin Add force-override option to "imag-contact import" 2019-04-22 14:37:43 +02:00
doc Revert "Remove libimagmail" 2019-02-20 16:22:52 +01:00
etc Add importer for ioverlander into imag-wiki 2018-05-01 22:29:46 +02:00
lib Add option to override ref data in contact entries 2019-04-22 14:37:43 +02:00
scripts Remove libimagnotification 2019-04-22 14:05:55 +02:00
.editorconfig Remove Makefile/html config, set {md,yaml,nix} indent to 4 spaces 2017-09-08 16:28:21 +02:00
.gitignore Ignore Intellij-IDEA dotfiles 2018-01-29 09:38:32 +01:00
.travis.yml travis: Update rustc to 1.32.0 / 1.33.0 2019-04-13 18:54:51 +02:00
build.rs Use "::std" instead of "std" 2018-04-14 14:19:28 +02:00
Cargo.toml Remove libimagnotification 2019-04-22 14:05:55 +02:00
CHANGELOG.md Add changelog 2017-09-01 14:25:00 +02:00
CONTRIBUTING.md Move contributing guidelines to documentation 2017-08-11 09:11:12 +00:00
default.nix Update nix expression 2018-10-31 17:15:29 +01:00
imagrc.toml Merge branch 'remove-libimagnotification' into master 2019-04-22 14:28:23 +02:00
LICENSE Add LICENSE file 2015-11-08 17:35:49 +01:00
README.md Update examples 2018-11-09 21:48:26 +01:00

imag - imag-pim.org

imag is a commandline personal information management suite.

This application is in early development. There are some things that work, but we do not consider anything stable or usable at this moment. Feel free to play around anyways.

Vacation notice

Notice: I, the author of imag, will be on vacation from mid-May 2018 until early 2019. I hope I can continue develop imag during that time, but I cannot guarantee that. I hope I can continue development of imag after that and I certainly plan to do so.

But from May 2018 until February 2019, expect long response times.

Goal / What is imag?

Our (long-term) goal is to

Create a fast, reliable commandline personal information management suite which covers all aspects of personal information management, consists of reusable parts and integrates well with known commandline tools.

Yes, imag is a rather ambitious project as it tries to reimplement functionality for several "personal information management aspects". It is a hobby project, keep that in mind. We try to use standards like vcard, icalendar and others wherever possible.

Have a look at the documentation for some more words on this.

Building/Running

Here is how to try imag out.

imag is a suite/collection of tools (like git, for example) and you can build them individually. All subdirectories prefixed with "libimag" are libraries. All subdirectories prefixed with "imag-" are binaries and compiling them will give you a commandline application.

Building

We use cargo for building all crates in this repository. Make sure to use a recent cargo, at least one with workspace support. Building all crates works with cargo build --all, building individual crates by specifying the --manifest-path flag to cargo.

Running

After you build the module you want to play with, you can simply call the binary itself with the --help flag, to get some help what the module is capable of.

If you installed the module, you can either call imag-<modulename> (if the install-directory is in your $PATH), or install the imag binary to call imag <modulename> (also if everything is in your $PATH). Call imag --help to see which modules are found and can be used. Call imag --versions to print the versions of all modules.

Example usage

As imag is a big and complex project, we cannot show all tools of the suite here. But to give you some idea, here's an example:

# Lets initialize imag
imag init

# Recursively import vcf files
imag contact import /home/user/contacts

# Create a contact (vcf) in the private collection
imag contact create --file /home/user/contacts/private

# Add a diary entry
imag diary -p private create

# Uh, I forgot something in a diary entry, select one (or multiple) and edit it
# use the `fzf` tool here (not a part of imag) to select from the IDs
imag diary -p private list | fzf -m | imag edit

# Link a contact to the diary entry
imag link diary/private/2018/01/01/00:00:00 contact/bc222298-casf-40a4-bda1-50aa980a68c9

# Annotate a contact with some notes
imag annotate add contact/bc222298-casf-40a4-bda1-50aa980a68c9 contact-notes

# Write down some notes named "pineapple"
imag notes create "pineapple"

# Where was that contact again?
imag grep Eva # also possible with `imag contact find Eva`

# Okay, we need to add some imag-internal notes to that contact
imag grep Eva -l | imag edit

# Now save our work
imag git add . # "imag-git" simply calls git in the imag store
imag git commit -m 'Commit message'

Staying up-to-date

We have a official website for imag, where I post release notes and monthly(ish) updates what's happening in the source tree (RSS here).

We also have a mailinglist where I post updates and where discussion and questions are encouraged.

Documentation

We have some documentation in the ./doc subtree which can be compiled to PDF or a website using pandoc. It might not be up to date, though. Developer documentation for the last release is available on docs.rs.

Please contribute!

We are looking for contributors! Feel free to open issues (by writing to the mailinglist) for asking questions, suggesting features or other things!

Also have a look at the CONTRIBUTING.md file!

Contact

Feel free to join our new IRC channel at freenode: #imag or our mailinglist.

License

We chose to distribute this software under terms of GNU LGPLv2.1.