Matthias Beyer
ce0bd9298a
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> |
||
---|---|---|
bin | ||
doc | ||
lib | ||
scripts | ||
.editorconfig | ||
.gitignore | ||
.travis.yml | ||
build.rs | ||
Cargo.toml | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
default.nix | ||
imagrc.toml | ||
LICENSE | ||
README.md |
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.
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 cd
ing to their directory and calling cargo build
.
For building all commandline applications:
find bin -maxdepth 3 -name Cargo.toml -exec cargo build --manifest-path {} \;
For building only the core functionality
find bin/core -maxdepth 3 -name Cargo.toml -exec cargo build --manifest-path {} \;
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
).
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. 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 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.