summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2018-03-22 16:37:31 +0100
committerGitHub <noreply@github.com>2018-03-22 16:37:31 +0100
commitcc9c746cb423ed082be1552f4384a7556640c5ee (patch)
tree14a2ea13aae5a563954f1baaddce41b2778e48d6
parente4fc2e8010e11619d23656e33eb937d916a9fc55 (diff)
parentd5231e63862bf11e02839c67a8a3297da09c5f29 (diff)
downloadimag-cc9c746cb423ed082be1552f4384a7556640c5ee.zip
imag-cc9c746cb423ed082be1552f4384a7556640c5ee.tar.gz
Merge pull request #1326 from matthiasbeyer/doc
Doc
-rw-r--r--.travis.yml1
-rw-r--r--doc/src/02010-linking.md29
-rw-r--r--doc/src/03010-conventions.md29
-rw-r--r--doc/src/04000-modules.md3
-rw-r--r--doc/src/04020-module-bibliography.md4
-rw-r--r--doc/src/04020-module-borrow.md3
-rw-r--r--doc/src/04020-module-calendar.md11
-rw-r--r--doc/src/04020-module-category.md6
-rw-r--r--doc/src/04020-module-contacts.md7
-rw-r--r--doc/src/04020-module-counter.md27
-rw-r--r--doc/src/04020-module-cuecards.md5
-rw-r--r--doc/src/04020-module-filter.md4
-rw-r--r--doc/src/04020-module-git.md5
-rw-r--r--doc/src/04020-module-gps.md4
-rw-r--r--doc/src/04020-module-habit.md12
-rw-r--r--doc/src/04020-module-images.md4
-rw-r--r--doc/src/04020-module-item.md7
-rw-r--r--doc/src/04020-module-ledger.md4
-rw-r--r--doc/src/04020-module-movies.md4
-rw-r--r--doc/src/04020-module-music.md6
-rw-r--r--doc/src/04020-module-news.md4
-rw-r--r--doc/src/04020-module-password.md4
-rw-r--r--doc/src/04020-module-project.md8
-rw-r--r--doc/src/04020-module-rate.md6
-rw-r--r--doc/src/04020-module-read.md5
-rw-r--r--doc/src/04020-module-receipt.md5
-rw-r--r--doc/src/04020-module-shoppinglists.md4
-rw-r--r--doc/src/04020-module-summary.md5
-rw-r--r--doc/src/04020-module-url.md13
-rw-r--r--doc/src/04020-module-weather.md4
-rw-r--r--doc/src/04020-module-wiki.md4
-rw-r--r--doc/src/04020-module-workout.md11
-rw-r--r--doc/src/04020-module-write.md5
-rw-r--r--doc/src/05100-lib-bibliography.md2
-rw-r--r--doc/src/05100-lib-borrow.md2
-rw-r--r--doc/src/05100-lib-calendar.md2
-rw-r--r--doc/src/05100-lib-cuecards.md2
-rw-r--r--doc/src/05100-lib-images.md2
-rw-r--r--doc/src/05100-lib-ledger.md2
-rw-r--r--doc/src/05100-lib-movies.md2
-rw-r--r--doc/src/05100-lib-music.md2
-rw-r--r--doc/src/05100-lib-news.md7
-rw-r--r--doc/src/05100-lib-password.md2
-rw-r--r--doc/src/05100-lib-project.md2
-rw-r--r--doc/src/05100-lib-read.md10
-rw-r--r--doc/src/05100-lib-receipt.md2
-rw-r--r--doc/src/05100-lib-shoppinglists.md2
-rw-r--r--doc/src/05100-lib-weather.md2
-rw-r--r--doc/src/05100-lib-wiki.md7
-rw-r--r--doc/src/05100-lib-workout.md2
-rw-r--r--doc/src/05100-lib-write.md11
-rw-r--r--doc/templates/default.latex2
-rwxr-xr-xscripts/find-dead-symlinks7
53 files changed, 23 insertions, 302 deletions
diff --git a/.travis.yml b/.travis.yml
index 19c924a..3160ccc 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -23,6 +23,7 @@ addons:
script:
- |
+ bash ./scripts/find-dead-symlinks || exit 1
bash ./scripts/license-headers-updated || exit 1
cargo build --all --all-features -j 1 || exit 1
cargo test --all --all-features -j 1 || exit 1
diff --git a/doc/src/02010-linking.md b/doc/src/02010-linking.md
deleted file mode 100644
index ba62ec0..0000000
--- a/doc/src/02010-linking.md
+++ /dev/null
@@ -1,29 +0,0 @@
-## Linking from an store entry {#sec:thestore:linking}
-
-As described in @sec:intro:problem the purpose of imag is to _link_ content
-together. The following section describes, from a technical view, how this is
-done in imag.
-
-There are two ways of linking in imag. You can either link internally or
-externally. The following sections describe the differences.
-
-### Linking to internal content {#sec:thestore:linking:internal}
-
-Internal links are links between store entries themselfes. This means that one
-store entry can link to another. Actually, links are not pointers but rather
-tries between entries, meaning that an link is not directed, but always a
-two-way pointer.
-
-How linking works from the user interface is described in @sec:modules:link.
-
-### Linking to external content {#sec:thestore:linking:external}
-
-Linking to external content means linking to files or directories which do not
-live inside the store itself but outside of it.
-
-Each store entry can store _one link to external content at most_.
-
-External linking should not be used from the user interface but rather the
-`ref` feature (@sec:modules:ref) should be used.
-@sec:modules:ref describes why that is.
-
diff --git a/doc/src/03010-conventions.md b/doc/src/03010-conventions.md
index 7290b23..f56edbc 100644
--- a/doc/src/03010-conventions.md
+++ b/doc/src/03010-conventions.md
@@ -1,6 +1,6 @@
# Conventions, best practices
-This section goes about best practices in the imag codebase. It is mainly
+This section explains conventions used in the imag codebase. It is mainly
focused on developers, but a user may read it for getting to know how imag
works.
@@ -54,24 +54,25 @@ will not write such a library but rather a "libimagentrything" library.
A library should never introduce utility functionality which could be useful for
other libraries as well. If there is no such functionality available, the
-"libimagutil" might be a place where such a function would be put, or, if not
-yet available, a "libimagentryutil" could be created.
+"libimagutil" or "libimagentryutil" might be a place where such a function
+would be put.
If a library has to introduce free functions in its public interface, one should
think hard whether this is really necessary.
### Library error types/kinds
-Libraries must use the "libimagerror" tools to create error types and kinds.
+Libraries must use "error-chain" to create error types and kinds.
Most likely, a library needs some kinds for wrapping the errors from underlying
libraries, such as the store itself.
A library must _never_ introduce multiple error types, but is free to introduce
-as many error kinds as required. Indeed, more kinds is better than fewer.
+as many error kinds as required.
### Libraries with commandline frontends
-Libraries with commandline frontends provide end-user functionality. Normally,
+Libraries with commandline frontends provide end-user functionality.
+Normally,
they depend on one or more "libimagentrything" libraries. They should be named
"libimagthing", though. For example: "libimagdiary", "libimagtimetrack" or
"libimagwiki", whereas the commandline frontends would be "imag-diary",
@@ -80,7 +81,7 @@ they depend on one or more "libimagentrything" libraries. They should be named
If such a library needs to depend on another "libimagthing", for example if
"libimagdiary" needs to depend on "libimagnote", one should think about this and
whether the functionality could be outsourced to a more general
-"libimagentrything". It is not forbidden, though.
+"libimagentrything".
A library which implements a functionality for imag may contain helper functions
for commandline stuff, but that is discouraged.
@@ -92,15 +93,9 @@ possible without a lot of effort, but still: more tests = better!
## Commandline tools
-The next few sections describe how the commandline frontends are implemented.
-Each imag functionality (or module) has its own library and a commandline
-frontend for it.
+The commandline tools are the CLI-frontends for their respective libraries.
+So `libimagdiary` has a CLI frontend `imag-diary`.
-The commandline frontends do contain little to no functionality. They simply
-translate the commandline parameters and options to calls to the appropriate
-library functions.
-
-## Commandline tool testing
-
-## Commandline interface
+Those CLI frontends use functionality from `libimagrt` to build a consistent
+commandline interface.
diff --git a/doc/src/04000-modules.md b/doc/src/04000-modules.md
index 5c8c29a..bc4ca38 100644
--- a/doc/src/04000-modules.md
+++ b/doc/src/04000-modules.md
@@ -3,8 +3,7 @@
A module is a functionality of the program.
There is a huge list of modules available in the imag core distribution.
-From a naming perspective, we do not differ between low-level and high-level
-modules. Some of the modules shipped with imag cover core functionality such as
+Some of the modules shipped with imag cover core functionality such as
linking, tagging or references to files outside of the store or even the store
interface itself.
Others cover things like diary, notes, wiki or bookmarks.
diff --git a/doc/src/04020-module-bibliography.md b/doc/src/04020-module-bibliography.md
deleted file mode 100644
index 07748af..0000000
--- a/doc/src/04020-module-bibliography.md
+++ /dev/null
@@ -1,4 +0,0 @@
-## Bibliography {#sec:modules:bibliography}
-
-The Bibliography module.
-
diff --git a/doc/src/04020-module-borrow.md b/doc/src/04020-module-borrow.md
deleted file mode 100644
index c0b379b..0000000
--- a/doc/src/04020-module-borrow.md
+++ /dev/null
@@ -1,3 +0,0 @@
-## Borrow {#sec:modules:borrow}
-
-The Borrow module.
diff --git a/doc/src/04020-module-calendar.md b/doc/src/04020-module-calendar.md
deleted file mode 100644
index aa2b1c3..0000000
--- a/doc/src/04020-module-calendar.md
+++ /dev/null
@@ -1,11 +0,0 @@
-## Calendar {#sec:modules:calendar}
-
-The calendar module implements a commandline calendar like khal. The calendar data itself is retrieved from icalendar files which should be located outside of the imag store. imag does not handle syncing of these files. `vdirsyncer` may be your tool of choise here.
-
-imag can show events from the calendar(s) like any other commandline calendar tool and of course can also add, delete or edit entries (interactively or via commandline parameters).
-
-### Internals
-
-What imag does internally is described in this section.
-
-imag creates one entry in the store for one `icalendar` file. These entries are basically references to the real data. If an `icalendar` file is removed from the filesystem, imag does not delete it from the sfore if not told explicitely.
diff --git a/doc/src/04020-module-category.md b/doc/src/04020-module-category.md
deleted file mode 100644
index 7748c59..0000000
--- a/doc/src/04020-module-category.md
+++ /dev/null
@@ -1,6 +0,0 @@
-## Category {#sec:modules:category}
-
-The Category module is a plumbing command for setting an entrys category. A category must exist before it can be set for an entry. That, and that each entry may have one or no category is the difference from tags.
-
-Also: Categories may have sub-categories.
-
diff --git a/doc/src/04020-module-contacts.md b/doc/src/04020-module-contacts.md
deleted file mode 100644
index 13e4fe9..0000000
--- a/doc/src/04020-module-contacts.md
+++ /dev/null
@@ -1,7 +0,0 @@
-## Contacts {#sec:modules:contacts}
-
-The Contacts module serves as a vcard viewer which is also able to alter, vcard files (either interactively or via commandline parameters).
-
-The contacts module can also call other programs and pass contact information to them, for example `mutt`.
-
-
diff --git a/doc/src/04020-module-counter.md b/doc/src/04020-module-counter.md
deleted file mode 100644
index f283f4d..0000000
--- a/doc/src/04020-module-counter.md
+++ /dev/null
@@ -1,27 +0,0 @@
-## Counter {#sec:modules:counter}
-
-The Counter module helps you counting things.
-
-In its current state the counter module is capable of simple counting. You can
-create, list and delete counters which are simply numbers and incremet,
-decrement, set and reset them.
-
-Future plans include counting functionality which is able to save date and
-possibly timestamp of your increments/decrements, so you can export this and use
-(for example) R to visualize this data.
-
-Filters for selecting only certain time ranges when listing/exporting your
-counters will be added as well.
-
-### Examples
-
-Here are some examples how to use the counter module:
-
-```bash
-
-imag counter create --name example --initval 42 # or: -n example -i 42
-imag counter --inc example # or -i example
-imag counter --reset example
-imag counter --dec example # or -d example
-```
-
diff --git a/doc/src/04020-module-cuecards.md b/doc/src/04020-module-cuecards.md
deleted file mode 100644
index e44b443..0000000
--- a/doc/src/04020-module-cuecards.md
+++ /dev/null
@@ -1,5 +0,0 @@
-## Cuecards {#sec:modules:cuecards}
-
-The Cuecards module implements "cuacards-learning" like you probably did it in school.
-
-
diff --git a/doc/src/04020-module-filter.md b/doc/src/04020-module-filter.md
deleted file mode 100644
index 667995e..0000000
--- a/doc/src/04020-module-filter.md
+++ /dev/null
@@ -1,4 +0,0 @@
-## Filter {#sec:modules:filter}
-
-The Filter module is only of use when chaining up imag calls via bash pipes. It can be used to filter out entries based on some parameters, like for example whether a certain header field is set or not.
-
diff --git a/doc/src/04020-module-git.md b/doc/src/04020-module-git.md
deleted file mode 100644
index 14f44b4..0000000
--- a/doc/src/04020-module-git.md
+++ /dev/null
@@ -1,5 +0,0 @@
-## Git {#sec:modules:git}
-
-The Git module provises a convenient way to call the git executable on the imag store without having to `cd` to it first. Nothing more.
-
-
diff --git a/doc/src/04020-module-gps.md b/doc/src/04020-module-gps.md
deleted file mode 100644
index 28e444e..0000000
--- a/doc/src/04020-module-gps.md
+++ /dev/null
@@ -1,4 +0,0 @@
-## GPS {#sec:modules:gps}
-
-The GPS module is a plumbing command for attaching a GPS coordinate to an entry.
-
diff --git a/doc/src/04020-module-habit.md b/doc/src/04020-module-habit.md
deleted file mode 100644
index 3fa6f22..0000000
--- a/doc/src/04020-module-habit.md
+++ /dev/null
@@ -1,12 +0,0 @@
-## Habit {#sec:modules:habit}
-
-The Habit module is a habit tracker. One can add habits, specify how often they
-should be done and instantiate them.
-
-Example: After creating a new habit "Sunday Run", which should be done on
-Sundays, one can mark that the habit was done.
-Statistics and number-crunching can be done later on, after there is some habit
-data there.
-
-Exports to CSV are possible.
-
diff --git a/doc/src/04020-module-images.md b/doc/src/04020-module-images.md
deleted file mode 100644
index aba1e36..0000000
--- a/doc/src/04020-module-images.md
+++ /dev/null
@@ -1,4 +0,0 @@
-## Images {#sec:modules:images}
-
-The Images module is for tagging, categorizing and sorting images. GPS coordinates can be attached to image references. Images can be put into collections. Image viewing programs can be called from imag. If an image gets modified (for example via darktable) and a new image file is created, the Image module can be used to group them.
-
diff --git a/doc/src/04020-module-item.md b/doc/src/04020-module-item.md
deleted file mode 100644
index 0c0cae4..0000000
--- a/doc/src/04020-module-item.md
+++ /dev/null
@@ -1,7 +0,0 @@
-## Item {#sec:modules:item}
-
-The Item module is a plumbing command to create entries for items in the imag store.
-
-Items can be anything. For example, one could create a Tomato and a Bread as item to add them later in the shopping list (as in imag-shoppinglist), but also a computer and a printer can be created to use them later in a project (as in imag-project).
-
-
diff --git a/doc/src/04020-module-ledger.md b/doc/src/04020-module-ledger.md
deleted file mode 100644
index d4c6b33..0000000
--- a/doc/src/04020-module-ledger.md
+++ /dev/null
@@ -1,4 +0,0 @@
-## Ledger {#sec:modules:ledger}
-
-The Ledger module implements a ledger like `beancount`.
-
diff --git a/doc/src/04020-module-movies.md b/doc/src/04020-module-movies.md
deleted file mode 100644
index c703ee1..0000000
--- a/doc/src/04020-module-movies.md
+++ /dev/null
@@ -1,4 +0,0 @@
-## Movies {#sec:modules:movies}
-
-The Movies module is for categorizing, rating and tagging movies.
-
diff --git a/doc/src/04020-module-music.md b/doc/src/04020-module-music.md
deleted file mode 100644
index d123f24..0000000
--- a/doc/src/04020-module-music.md
+++ /dev/null
@@ -1,6 +0,0 @@
-## Music {#sec:modules:music}
-
-The Music module is for rating, categorizing, tagging and enjoying music. It offers functionality to fetch lyrics, create automatically linkings from genre entries to music files (music files are represented as a entry jn imag), combining songs in albums and albums in artists, etc.
-
-A scrobble server may be implemented at some point to provide more ways to retrieving data over ones music taste. Suggested songs (from the own library of music or via external tools like musicbrainz) may be a feature that comes aith the scrobble server.
-
diff --git a/doc/src/04020-module-news.md b/doc/src/04020-module-news.md
deleted file mode 100644
index 01341ca..0000000
--- a/doc/src/04020-module-news.md
+++ /dev/null
@@ -1,4 +0,0 @@
-## News {#sec:modules:news}
-
-The News module is an RSS reader.
-
diff --git a/doc/src/04020-module-password.md b/doc/src/04020-module-password.md
deleted file mode 100644
index 76fec19..0000000
--- a/doc/src/04020-module-password.md
+++ /dev/null
@@ -1,4 +0,0 @@
-## Password {#sec:modules:password}
-
-The Password module.
-
diff --git a/doc/src/04020-module-project.md b/doc/src/04020-module-project.md
deleted file mode 100644
index fba9a8d..0000000
--- a/doc/src/04020-module-project.md
+++ /dev/null
@@ -1,8 +0,0 @@
-## Project {#sec:modules:project}
-
-The Project module can be used to plan and organize projects, though does not offer ways to share these plans with others. If that is desired, a new store should be created, put under version controll (possibly git) and shared via this mechanism.
-
-The project tool integrates the timetracking module as well as the todo module.
-
-A project is represented by a single imag entry. Notes, subprojects, todos, timetrackings and other things are linked to the project. A project does not necessarily have to be a programming project, but could be a project for building a house or losing weight for example.
-
diff --git a/doc/src/04020-module-rate.md b/doc/src/04020-module-rate.md
deleted file mode 100644
index 31fe783..0000000
--- a/doc/src/04020-module-rate.md
+++ /dev/null
@@ -1,6 +0,0 @@
-## Rate {#sec:modules:rate}
-
-The Rate module is another plumbing command. It simply offers rating functionality, whereas allowed values are 0-10 (0 beeing equal to no rating).
-
-
-
diff --git a/doc/src/04020-module-read.md b/doc/src/04020-module-read.md
deleted file mode 100644
index b457000..0000000
--- a/doc/src/04020-module-read.md
+++ /dev/null
@@ -1,5 +0,0 @@
-## Read {#sec:modules:read}
-
-The Read module is a plumbing command for reading entries from the store and writing them to stdout for further processing.
-
-
diff --git a/doc/src/04020-module-receipt.md b/doc/src/04020-module-receipt.md
deleted file mode 100644
index 869d201..0000000
--- a/doc/src/04020-module-receipt.md
+++ /dev/null
@@ -1,5 +0,0 @@
-## Receipt {#sec:modules:receipt}
-
-The Receipt module is for tracking, categorizing, tagging, quering and managing receipts.
-
-
diff --git a/doc/src/04020-module-shoppinglists.md b/doc/src/04020-module-shoppinglists.md
deleted file mode 100644
index 1b1c5b5..0000000
--- a/doc/src/04020-module-shoppinglists.md
+++ /dev/null
@@ -1,4 +0,0 @@
-## Shoppinglists {#sec:modules:shoppinglists}
-
-The Shoppinglists module provides functionality for creating shopping lists and organizing them. A shoppinglist can be printed and them be used to go shopping, of course.
-
diff --git a/doc/src/04020-module-summary.md b/doc/src/04020-module-summary.md
deleted file mode 100644
index 98d7e0b..0000000
--- a/doc/src/04020-module-summary.md
+++ /dev/null
@@ -1,5 +0,0 @@
-## Summary {#sec:modules:summary}
-
-The Summary module is a wrapper to call a list (specified in the config file) of imag commands and viewing their outputs.
-
-
diff --git a/doc/src/04020-module-url.md b/doc/src/04020-module-url.md
deleted file mode 100644
index aed78d9..0000000
--- a/doc/src/04020-module-url.md
+++ /dev/null
@@ -1,13 +0,0 @@
-## Url {#sec:modules:url}
-
-The Url module is a plumbing module to put URLs into the imag store.
-
-### Implementation
-
-The implementation of the URL module saves URLs on a per-entry basis. This means that each URL is hashed (with something like SHA512) and the hash is used as filename. The scheme is as follows:
-
- /url/<hash of the domain>/<hash of the full URL>
-
-This scheme results in grouping URLs of the same domain (for example https://imag-pim.org) but distinction of the actual full URL, while still deduplicating URLs. Entering the same URL twice results in the same entry.
-
-This module does nothing more on its own. Its functionality may be used elsewhere (for example a bookmark module).
diff --git a/doc/src/04020-module-weather.md b/doc/src/04020-module-weather.md
deleted file mode 100644
index 3a6fb96..0000000
--- a/doc/src/04020-module-weather.md
+++ /dev/null
@@ -1,4 +0,0 @@
-## Weather {#sec:modules:weather}
-
-The Weather module.
-
diff --git a/doc/src/04020-module-wiki.md b/doc/src/04020-module-wiki.md
deleted file mode 100644
index 019b316..0000000
--- a/doc/src/04020-module-wiki.md
+++ /dev/null
@@ -1,4 +0,0 @@
-## Wiki {#sec:modules:wiki}
-
-The Wiki module provides a personal wiki implementation.
-
diff --git a/doc/src/04020-module-workout.md b/doc/src/04020-module-workout.md
deleted file mode 100644
index f14cfdb..0000000
--- a/doc/src/04020-module-workout.md
+++ /dev/null
@@ -1,11 +0,0 @@
-## Workout {#sec:modules:workout}
-
-The Workout module is for tracking workouts. Burned calories, walked kilometers, lifting sets and all the things can be entered.
-
-### Submodules
-
-Each type of workout can be handled with one subcommand of the module, whereas training seasions can be used to group types of workouts (for example swimming and running).
-
-A step-counter functionality is implemented as first submodule.
-Import functionality for the step-counter submodule is available for importing from (for example) an Android step-counter App.
-
diff --git a/doc/src/04020-module-write.md b/doc/src/04020-module-write.md
deleted file mode 100644
index d3438e4..0000000
--- a/doc/src/04020-module-write.md
+++ /dev/null
@@ -1,5 +0,0 @@
-## Write {#sec:modules:write}
-
-The Write module is a plumbing command for reading a store feom stdin and writing it to the filesystem.
-
-
diff --git a/doc/src/05100-lib-bibliography.md b/doc/src/05100-lib-bibliography.md
deleted file mode 100644
index 8b88641..0000000
--- a/doc/src/05100-lib-bibliography.md
+++ /dev/null
@@ -1,2 +0,0 @@
-## libimagbibliography
-
diff --git a/doc/src/05100-lib-borrow.md b/doc/src/05100-lib-borrow.md
deleted file mode 100644
index bcfb1e0..0000000
--- a/doc/src/05100-lib-borrow.md
+++ /dev/null
@@ -1,2 +0,0 @@
-## libimagborrow
-
diff --git a/doc/src/05100-lib-calendar.md b/doc/src/05100-lib-calendar.md
deleted file mode 100644
index 02dd65c..0000000
--- a/doc/src/05100-lib-calendar.md
+++ /dev/null
@@ -1,2 +0,0 @@
-## libimagcalendar
-
diff --git a/doc/src/05100-lib-cuecards.md b/doc/src/05100-lib-cuecards.md
deleted file mode 100644
index 40fdb90..0000000
--- a/doc/src/05100-lib-cuecards.md
+++ /dev/null
@@ -1,2 +0,0 @@
-## libimagcuecards
-
diff --git a/doc/src/05100-lib-images.md b/doc/src/05100-lib-images.md
deleted file mode 100644
index cf8878e..0000000
--- a/doc/src/05100-lib-images.md
+++ /dev/null
@@ -1,2 +0,0 @@
-## libimagimages
-
diff --git a/doc/src/05100-lib-ledger.md b/doc/src/05100-lib-ledger.md
deleted file mode 100644
index c6eba20..0000000
--- a/doc/src/05100-lib-ledger.md
+++ /dev/null
@@ -1,2 +0,0 @@
-## libimagledger
-
diff --git a/doc/src/05100-lib-movies.md b/doc/src/05100-lib-movies.md
deleted file mode 100644
index 76f95a9..0000000
--- a/doc/src/05100-lib-movies.md
+++ /dev/null
@@ -1,2 +0,0 @@
-## libimagmovies
-
diff --git a/doc/src/05100-lib-music.md b/doc/src/05100-lib-music.md
deleted file mode 100644
index 39fb625..0000000
--- a/doc/src/05100-lib-music.md
+++ /dev/null
@@ -1,2 +0,0 @@
-## libimagmusic
-
diff --git a/doc/src/05100-lib-news.md b/doc/src/05100-lib-news.md
deleted file mode 100644
index 37a99bf..0000000
--- a/doc/src/05100-lib-news.md
+++ /dev/null
@@ -1,7 +0,0 @@
-## libimagnews
-
-The library for the news module implements a RSS reader.
-
-Details, for example where the feeds are stored (inside or outside the imag store) have to be evaluated.
-
-
diff --git a/doc/src/05100-lib-password.md b/doc/src/05100-lib-password.md
deleted file mode 100644
index e746941..0000000
--- a/doc/src/05100-lib-password.md
+++ /dev/null
@@ -1,2 +0,0 @@
-## libimagpassword
-
diff --git a/doc/src/05100-lib-project.md b/doc/src/05100-lib-project.md
deleted file mode 100644
index 9b22de5..0000000
--- a/doc/src/05100-lib-project.md
+++ /dev/null
@@ -1,2 +0,0 @@
-## libimagproject
-
diff --git a/doc/src/05100-lib-read.md b/doc/src/05100-lib-read.md
deleted file mode 100644
index 1b5cd9f..0000000
--- a/doc/src/05100-lib-read.md
+++ /dev/null
@@ -1,10 +0,0 @@
-## libimagread
-
-This library is for the plumbing command `imag-read`.
-
-It extends the `Runtime` object and adds a `write_store_to(writer)` function (amongst others). After calling this function, the calling program cannot continue to do things, so this consumes the `Runtime` object and the calling program is expected to exit with the returned error code.
-
-The calling program is expected to _not_ print anything to stdout before or after calling this function.
-
-This library is intended for use with the `imag-read` command only.
-
diff --git a/doc/src/05100-lib-receipt.md b/doc/src/05100-lib-receipt.md
deleted file mode 100644
index 71de530..0000000
--- a/doc/src/05100-lib-receipt.md
+++ /dev/null
@@ -1,2 +0,0 @@
-## libimagreceipt
-
diff --git a/doc/src/05100-lib-shoppinglists.md b/doc/src/05100-lib-shoppinglists.md
deleted file mode 100644
index 7956bae..0000000
--- a/doc/src/05100-lib-shoppinglists.md
+++ /dev/null
@@ -1,2 +0,0 @@
-## libimagshoppinglists
-
diff --git a/doc/src/05100-lib-weather.md b/doc/src/05100-lib-weather.md
deleted file mode 100644
index 7ea737e..0000000
--- a/doc/src/05100-lib-weather.md
+++ /dev/null
@@ -1,2 +0,0 @@
-## libimagweather
-
diff --git a/doc/src/05100-lib-wiki.md b/doc/src/05100-lib-wiki.md
deleted file mode 100644
index 23f0a6e..0000000
--- a/doc/src/05100-lib-wiki.md
+++ /dev/null
@@ -1,7 +0,0 @@
-## libimagwiki
-
-The wiki library implements a complete wiki for personal use.
-
-This basically is a note-taking functionality combined with linking.
-
-
diff --git a/doc/src/05100-lib-workout.md b/doc/src/05100-lib-workout.md
deleted file mode 100644
index 75398bd..0000000
--- a/doc/src/05100-lib-workout.md
+++ /dev/null
@@ -1,2 +0,0 @@
-## libimagworkout
-
diff --git a/doc/src/05100-lib-write.md b/doc/src/05100-lib-write.md
deleted file mode 100644
index bd837e3..0000000
--- a/doc/src/05100-lib-write.md
+++ /dev/null
@@ -1,11 +0,0 @@
-## libimagwrite
-
-This library is for the plumbing command `imag-write`.
-
-It extends the `Runtime` object and adds a `read_store_from(reader)` function (amongst others). After calling this function, the calling program cannot continue to do things, so this consumes the `Runtime` object and the calling program is expected to exit with the returned error code.
-
-The calling program is expected to _not_ print or read anything to/from stdout/stdin before or after calling this function.
-
-This library is intended for use with the `imag-write` command only.
-
-
diff --git a/doc/templates/default.latex b/doc/templates/default.latex
index 761c232..a58284c 100644
--- a/doc/templates/default.latex
+++ b/doc/templates/default.latex
@@ -45,6 +45,8 @@ $endfor$
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
+\newcommand{\passthrough}[1]{#1}
+
\begin{document}
\thispagestyle{empty}
diff --git a/scripts/find-dead-symlinks b/scripts/find-dead-symlinks
new file mode 100755
index 0000000..b1dff84
--- /dev/null
+++ b/scripts/find-dead-symlinks
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+[[ 0 == "$(find . -xtype l | wc -l)" ]] || {
+ echo >2 "DEAD SYMLINKS FOUND"
+ exit 1
+}
+