diff options
| author | Elena ``of Valhalla'' Grandi <valhalla@trueelena.org> | 2020-10-01 23:30:04 +0200 | 
|---|---|---|
| committer | Elena ``of Valhalla'' Grandi <valhalla@trueelena.org> | 2020-10-01 23:30:04 +0200 | 
| commit | ea9af6f5521c86a8529d75db91455e8982e1d77f (patch) | |
| tree | cb21c405b0ca6d425a966660be5b02a0c3c97469 /docs/source | |
| parent | 5e045d665f5057d3111939c1fa13133e53d7fb8d (diff) | |
| parent | e3e1aac99ff15ef99ac6d3fd8539492a2c4801be (diff) | |
Merge branch 'master' into types
Diffstat (limited to 'docs/source')
| -rw-r--r-- | docs/source/conf.py | 73 | ||||
| -rw-r--r-- | docs/source/getting_started_command_line.rst | 62 | ||||
| -rw-r--r-- | docs/source/index.rst | 28 | ||||
| -rw-r--r-- | docs/source/man/Makefile | 12 | ||||
| -rw-r--r-- | docs/source/man/index.rst | 17 | ||||
| -rw-r--r-- | docs/source/man/lesana-edit.rst | 35 | ||||
| -rw-r--r-- | docs/source/man/lesana-export.rst | 32 | ||||
| -rw-r--r-- | docs/source/man/lesana-index.rst | 30 | ||||
| -rw-r--r-- | docs/source/man/lesana-init.rst | 40 | ||||
| -rw-r--r-- | docs/source/man/lesana-new.rst | 37 | ||||
| -rw-r--r-- | docs/source/man/lesana-rm.rst | 30 | ||||
| -rw-r--r-- | docs/source/man/lesana-search.rst | 37 | ||||
| -rw-r--r-- | docs/source/man/lesana-show.rst | 45 | ||||
| -rw-r--r-- | docs/source/man/lesana.rst | 76 | ||||
| -rw-r--r-- | docs/source/moving_data_between_collections.rst | 41 | ||||
| -rw-r--r-- | docs/source/promises.rst | 36 | ||||
| -rw-r--r-- | docs/source/reference/lesana.collection.rst | 7 | ||||
| -rw-r--r-- | docs/source/reference/lesana.command.rst | 7 | ||||
| -rw-r--r-- | docs/source/reference/lesana.data.rst | 7 | ||||
| -rw-r--r-- | docs/source/reference/lesana.rst | 24 | ||||
| -rw-r--r-- | docs/source/reference/modules.rst | 7 | 
21 files changed, 683 insertions, 0 deletions
| diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..3274a8a --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,73 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + + +# -- Project information ----------------------------------------------------- + +project = 'lesana' +copyright = "2020, Elena Grandi" +author = "Elena ``of Valhalla''" + +# The full version, including alpha/beta/rc tags +release = '0.6.0' +# The major project version +version = '0.6' + +# compatibility with sphinx 1.8 on buster +master_doc = 'index' + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ +    'sphinx.ext.autodoc', +    'sphinx.ext.viewcode', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages.  See the documentation for +# a list of builtin themes. +# +html_theme = 'alabaster' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +man_pages = [ +    ('man/lesana-edit', 'lesana-edit', '', '', 1), +    ('man/lesana-export', 'lesana-export', '', '', 1), +    ('man/lesana-index', 'lesana-index', '', '', 1), +    ('man/lesana-init', 'lesana-init', '', '', 1), +    ('man/lesana-new', 'lesana-new', '', '', 1), +    ('man/lesana-rm', 'lesana-rm', '', '', 1), +    ('man/lesana', 'lesana', '', '', 1), +    ('man/lesana-search', 'lesana-search', '', '', 1), +    ('man/lesana-show', 'lesana-show', '', '', 1), +] diff --git a/docs/source/getting_started_command_line.rst b/docs/source/getting_started_command_line.rst new file mode 100644 index 0000000..0c4d507 --- /dev/null +++ b/docs/source/getting_started_command_line.rst @@ -0,0 +1,62 @@ +****************************** +Getting Started (Command Line) +****************************** + +lesana can be used from the command line through the ``lesana`` command; +for more details run ``lesana help``. + +Many commands will try to open some file in an editor: they will attempt +to use, in this order, ``$EDITOR``, ``sensible-editor`` or as a fallback +``vi``, which should be installed on any POSIX-like system. + +To start a new collection, create a directory and run ``lesana +init`` into it:: + +    mkdir $DIRECTORY +    cd $DIRECTORY +    lesana init + +It will create the basic file structure of a lesana collection, +including a ``settings.yaml`` skeleton and it will initialize a git +repository (use ``--no-git`` to skip this part and ignore all further +git commands). + +It will then open ``settings.yaml`` in an editor: fill in your list of +fields and all other data, save and exit. +You are now ready to commit the configuration for your new collection:: + +    git commit -m 'Collection settings' + +An empty collection is not very interesting: let us start adding new +entries:: + +   lesana new + +It will again open an editor on a skeleton of entry where you can fill +in the values. When you close the editor it will print the entry id, +that you can use e.g. to edit again the same entry:: + +   lesana edit $ENTRY_ID + +After you've added a few entries, you can now search for some word that +you entered in one of the indexed fields:: + +   lesana search some words + +this will also print the entry ids of matching items, so that you can +open them with ``lesana edit``. + +If you're using git, entries will be autoadded to the staging area, but +you need to commit them, so that you can choose how often you do so. + +Search results are limited by default to 12 matches; to get all results +for your query you can use the option ``--all``. This is especially +useful when passing the results to a template:: + +   lesana search --template templates/my_report.html --all \ +       some search terms \ +       > some_search_terms-report.html + +will generate an html file based on the jinja2 template +``templates/my_report.html`` with all the entries found for those search +terms. diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 0000000..292a0ce --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,28 @@ +.. lesana documentation master file, created by +   sphinx-quickstart on Thu Oct  1 22:28:26 2020. +   You can adapt this file completely to your liking, but it should at least +   contain the root `toctree` directive. + +Welcome to lesana's documentation! +================================== + +.. toctree:: +   :maxdepth: 2 +   :caption: Contents: + +   getting_started_command_line +   moving_data_between_collections +   promises + +   man/index + +   reference/modules + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/source/man/Makefile b/docs/source/man/Makefile new file mode 100644 index 0000000..0369f59 --- /dev/null +++ b/docs/source/man/Makefile @@ -0,0 +1,12 @@ + +MAN_TARGETS = $(patsubst %.rst,%.1,$(wildcard *.rst)) + +all: $(MAN_TARGETS) + +%.1: %.rst +	rst2man $< > $@ + +clean: +	rm *.1 + +.PHONY: all clean diff --git a/docs/source/man/index.rst b/docs/source/man/index.rst new file mode 100644 index 0000000..65d92a1 --- /dev/null +++ b/docs/source/man/index.rst @@ -0,0 +1,17 @@ +********* +Man Pages +********* + +.. toctree:: +   :maxdepth: 2 +   :caption: Contents: + +   lesana-edit +   lesana-export +   lesana-index +   lesana-init +   lesana-new +   lesana-rm +   lesana +   lesana-search +   lesana-show diff --git a/docs/source/man/lesana-edit.rst b/docs/source/man/lesana-edit.rst new file mode 100644 index 0000000..75bcaeb --- /dev/null +++ b/docs/source/man/lesana-edit.rst @@ -0,0 +1,35 @@ +=========== +lesana-edit +=========== + +------------------------------ +edits an existing lesana entry +------------------------------ + +:Author: valhalla@trueelena.org +:Manual section: 1 + +SYNOPSIS +======== + +lesana edit [--help] [--collection <collection>] [--no-git] <entry> + +DESCRIPTION +=========== + +Lesana edit will open an existing entry (specified by id or partial id) +in an editor, so that it can be changed. + +If the collection is configured to use git, after the editor has been +closed, it will add the file to the git staging area, unless +``--no-git`` is given. + +OPTIONS +======= + +-h, --help +   Prints an help message and exits. +--collection COLLECTION, -c COLLECTION +   The collection to work on. Default is ``.`` +--no-git +   Don't add the new entry to git. diff --git a/docs/source/man/lesana-export.rst b/docs/source/man/lesana-export.rst new file mode 100644 index 0000000..6088dbf --- /dev/null +++ b/docs/source/man/lesana-export.rst @@ -0,0 +1,32 @@ +============= +lesana-export +============= + +------------------------------------------------- +export data from one lesana collection to another +------------------------------------------------- + +:Author: valhalla@trueelena.org +:Manual section: 1 + +SYNOPSIS +======== + +lesana export [-h] [--collection COLLECTION] [--query QUERY] destination template + +DESCRIPTION +=========== + +Lesana export converts entries from one lesana collection to another, +using a jinja2 template. + +OPTIONS +======= + +-h, --help +   Prints an help message and exits. +--collection COLLECTION, -c COLLECTION +   The collection to work on. Default is ``.`` +--query QUERY, -q QUERY +   Xapian query to search in the collection + diff --git a/docs/source/man/lesana-index.rst b/docs/source/man/lesana-index.rst new file mode 100644 index 0000000..d535c02 --- /dev/null +++ b/docs/source/man/lesana-index.rst @@ -0,0 +1,30 @@ +============ +lesana-index +============ + +------------------ +Index some entries +------------------ + +:Author: valhalla@trueelena.org +:Manual section: 1 + +SYNOPSIS +======== + +lesana index [--help] [--collection COLLECTION] [files [files ...]] + +DESCRIPTION +=========== + +Lesana index adds some entries to the xapian cache, listed by filename +(by default all of the files found in the items directory). + +OPTIONS +======= + +-h, --help +   Prints an help message and exits. +--collection COLLECTION, -c COLLECTION +   The collection to work on. Default is ``.`` + diff --git a/docs/source/man/lesana-init.rst b/docs/source/man/lesana-init.rst new file mode 100644 index 0000000..92527c0 --- /dev/null +++ b/docs/source/man/lesana-init.rst @@ -0,0 +1,40 @@ +=========== +lesana-init +=========== + +------------------------------ +initialize a lesana collection +------------------------------ + +:Author: valhalla@trueelena.org +:Manual section: 1 + +SYNOPSIS +======== + +lesana init [--help] [--collection <collection>] [--no-git] + +DESCRIPTION +=========== + +lesana init initializes a new lesana collection. + +It will create the directory (if it does not exist) and, unless +``--no-git`` is specified it will initialize it as a git repository and +create a ``.gitignore`` file with some relevant contents. + +It will then create a skeleton ``settings.yaml`` file and open it in an +editor to start configuring the collection. + +When leaving the editor, again unless ``--no-git`` is used, it will add +this file to the git staging area, but not commit it. + +OPTIONS +======= + +--help, -h +   Prints an help message and exits. +--collection COLLECTION, -c COLLECTION +   The directory where the collection will be initialized. Default is . +--no-git +   Do not use git in the current collection. diff --git a/docs/source/man/lesana-new.rst b/docs/source/man/lesana-new.rst new file mode 100644 index 0000000..4c7a10d --- /dev/null +++ b/docs/source/man/lesana-new.rst @@ -0,0 +1,37 @@ +========== +lesana-new +========== + +------------------------- +create a new lesana entry +------------------------- + +:Author: valhalla@trueelena.org +:Manual section: 1 + +SYNOPSIS +======== + +lesana new [--help] [--collection <collection>] [--no-git] + +DESCRIPTION +=========== + +Lesana new creates a new lesana entry. + +It will create an empty entry and open an editor so that it can be +filled. + +If the collection is configured to use git, after the editor has been +closed, it will add the file to the git staging area, unless +``--no-git`` is given. + +OPTIONS +======= + +-h, --help +   Prints an help message and exits. +--collection COLLECTION, -c COLLECTION +   The collection to work on. Default is ``.`` +--no-git +   Don't add the new entry to git. diff --git a/docs/source/man/lesana-rm.rst b/docs/source/man/lesana-rm.rst new file mode 100644 index 0000000..4f765a5 --- /dev/null +++ b/docs/source/man/lesana-rm.rst @@ -0,0 +1,30 @@ +========= +lesana-rm +========= + +---------------------------------------- +remove an entry from a lesana collection +---------------------------------------- + +:Author: valhalla@trueelena.org +:Manual section: 1 + +SYNOPSIS +======== + +lesana rm [-h] [--collection COLLECTION] entries [entries ...] + +DESCRIPTION +=========== + +Lesana rm removes an entry from the collection, removing both the file +and the cached entry. + +OPTIONS +======= + +-h, --help +   Prints an help message and exits. +--collection COLLECTION, -c COLLECTION +   The collection to work on. Default is ``.`` + diff --git a/docs/source/man/lesana-search.rst b/docs/source/man/lesana-search.rst new file mode 100644 index 0000000..9375541 --- /dev/null +++ b/docs/source/man/lesana-search.rst @@ -0,0 +1,37 @@ +============= +lesana-search +============= + +--------------------------------- +search inside a lesana collection +--------------------------------- + +:Author: valhalla@trueelena.org +:Manual section: 1 + +SYNOPSIS +======== + +lesana search [--help] [--collection COLLECTION] [--template TEMPLATE] \ +[--offset OFFSET] [--pagesize PAGESIZE] [--all] query [query ...] + +DESCRIPTION +=========== + + +OPTIONS +======= + +-h, --help +   Prints an help message and exits. +--collection COLLECTION, -c COLLECTION +   The collection to work on. Default is ``.`` +--template TEMPLATE, -t TEMPLATE +   Template to use when displaying results +--offset OFFSET +   . +--pagesize PAGESIZE +   . +--all +   Return all available results + diff --git a/docs/source/man/lesana-show.rst b/docs/source/man/lesana-show.rst new file mode 100644 index 0000000..516f9de --- /dev/null +++ b/docs/source/man/lesana-show.rst @@ -0,0 +1,45 @@ +=========== +lesana-show +=========== + +------------------- +show a lesana entry +------------------- + +:Author: valhalla@trueelena.org +:Manual section: 1 + +SYNOPSIS +======== + +lesana show [--help] [--collection COLLECTION] [--template TEMPLATE] <entry> + +DESCRIPTION +=========== + +``lesana show`` will print an entry (specified by id or partial id) to +stdout. + +A template can be specified with ``--template <template>`` to pretty +print entries. + +OPTIONS +======= + +-h, --help +   Prints an help message and exits. +--collection COLLECTION, -c COLLECTION +   The collection to work on. Default is ``.`` +--template TEMPLATE, -t TEMPLATE +   Use the specified template to display results. + +TEMPLATES +========= + +The templates used by ``lesana show`` are jinja2 templates. + +The entry fields are available as variables, and the full entry is +available as the variable ``entry`` and can be used to give access to +fields with names that aren't valid jinja2 variables e.g. as +``entry.data[<field-name>]``. + diff --git a/docs/source/man/lesana.rst b/docs/source/man/lesana.rst new file mode 100644 index 0000000..0d60e4f --- /dev/null +++ b/docs/source/man/lesana.rst @@ -0,0 +1,76 @@ +====== +lesana +====== + +------------------------------ +manages collection inventories +------------------------------ + +:Author: valhalla@trueelena.org +:Manual section: 1 + +SYNOPSIS +======== + +lesana [--help] <command> + +DESCRIPTION +=========== + +lesana is a tool to organize collections of various kinds.  It is +designed to have a data storage / serialization format that is friendly +to git and other VCSs, but decent performances. + +To reach this aim it uses yaml_ as its serialization format, which is +easy to store in a VCS, share between people and syncronize between +different computers, but it also keeps an index of this data in a local +xapian_ database in order to allow for fast searches. + +.. _yaml: http://yaml.org/ +.. _xapian: https://xapian.org/ + +lesana supports collections of any kind, as long as their entries can be +described with a mostly flat dictionary of fields of the types described +in the documentation file ``field_types``. + +Some example collection schemas are provided, but one big strenght of +lesana is the ability to customize your collection with custom fields +either by simply writing a personalized ``settings.yaml``. + +OPTIONS +======= + +-h, --help +   Prints an help message and exits. + +COMMANDS +======== + +new(1) +   Creates a new entry. +edit(1) +   Edits an existing entry. +show(1) +   Shows an existing entry. +index(1) +   Index some entries in the xapian cache. +search(1) +   Searches for entries in the xapian cache. +export(1) +   Exports entries from one lesana collection to another +init(1) +   Initialize a new lesana collection +rm(1) +   Removes an entry. + +TEXT EDITOR +=========== + +Many lesana subcommands will try to open files in a text editor choosen +as follows: + +* first, the value of $EDITOR is tried +* then the command ``sensible-editor``, as available under e.g. Debian +  and its derivatives +* lastly, it will try to fallback to ``vi``, which should be available +  under any posix system. diff --git a/docs/source/moving_data_between_collections.rst b/docs/source/moving_data_between_collections.rst new file mode 100644 index 0000000..23c693e --- /dev/null +++ b/docs/source/moving_data_between_collections.rst @@ -0,0 +1,41 @@ +******************************* +Moving Data between Collections +******************************* + +Entries can be exported from a lesana collection to another using the +``lesana export`` command and a jinja2 template. + +The template should generate a yaml file that is a valid lesana entry +for the destination collection and it can use the fields of the starting +collection as variables. The variable ``entry`` is also available and +gives complete access to the entry of the original collection, so fields +with names that aren't valid jinja templates can be accessed as +``entry.data[<field-name>]``. + +E.g. to convert between a collection with fields ``name``, +``short-desc``, ``desc`` to a collection with fields ``name``, +``description`` one could use the following template:: + +   name: {{ name }} +   description: | +       {{ entry.data.[short-desc] }} + +       {{ desc | indent(width=4, first=False) }} + +From the origin collection you can then run the command:: + +   lesana export <path/to/destination/collection> <path/to/template> + +to export all entries. + +You can also export just a subset of entries by adding a xapian query +with the parameter ``--query``; you can test the search using:: + +   lesana search --all <some search terms> + +and then actually run the export with:: + +   lesana search --query '<some search terms>' <destination> <template> + +note that in this second command the spaces in the search query have to +be protected from the shell. diff --git a/docs/source/promises.rst b/docs/source/promises.rst new file mode 100644 index 0000000..6a3b04e --- /dev/null +++ b/docs/source/promises.rst @@ -0,0 +1,36 @@ +******** +Promises +******** + +Semantic versioning +=================== + +This project uses semver_. + +.. _semver: http://semver.org/ + +Collection format stability +=========================== + +Future versions of lesana will be able to read collections written by +older versions. + +Older versions in the same mayor release will also be able to work +concurrently on the same repository. + +If in the future a change of formats will be required, conversions +scripts will be written in a way that will make them as stable as +possibile, and will have enought test data to keep them maintained for +the time being. + +Disposable cache +================ + +Contrary to the yaml files, the xapian cache is considered disposable: +from time to time there may be a need to delete the cache and reindex +everything, either because of an upgrade or to perform repository +mainteinance. + +Of course, effort will be made to reduce the need for this so that it +only happens sporadically, but it will probably never completely +disappear. diff --git a/docs/source/reference/lesana.collection.rst b/docs/source/reference/lesana.collection.rst new file mode 100644 index 0000000..e00613c --- /dev/null +++ b/docs/source/reference/lesana.collection.rst @@ -0,0 +1,7 @@ +lesana.collection module +======================== + +.. automodule:: lesana.collection +   :members: +   :undoc-members: +   :show-inheritance: diff --git a/docs/source/reference/lesana.command.rst b/docs/source/reference/lesana.command.rst new file mode 100644 index 0000000..729ec1d --- /dev/null +++ b/docs/source/reference/lesana.command.rst @@ -0,0 +1,7 @@ +lesana.command module +===================== + +.. automodule:: lesana.command +   :members: +   :undoc-members: +   :show-inheritance: diff --git a/docs/source/reference/lesana.data.rst b/docs/source/reference/lesana.data.rst new file mode 100644 index 0000000..fdbd552 --- /dev/null +++ b/docs/source/reference/lesana.data.rst @@ -0,0 +1,7 @@ +lesana.data package +=================== + +.. automodule:: lesana.data +   :members: +   :undoc-members: +   :show-inheritance: diff --git a/docs/source/reference/lesana.rst b/docs/source/reference/lesana.rst new file mode 100644 index 0000000..bab9655 --- /dev/null +++ b/docs/source/reference/lesana.rst @@ -0,0 +1,24 @@ +lesana package +============== + +.. automodule:: lesana +   :members: +   :undoc-members: +   :show-inheritance: + +Subpackages +----------- + +.. toctree:: +   :maxdepth: 4 + +   lesana.data + +Submodules +---------- + +.. toctree:: +   :maxdepth: 4 + +   lesana.collection +   lesana.command diff --git a/docs/source/reference/modules.rst b/docs/source/reference/modules.rst new file mode 100644 index 0000000..1ce51bd --- /dev/null +++ b/docs/source/reference/modules.rst @@ -0,0 +1,7 @@ +lesana reference +================ + +.. toctree:: +   :maxdepth: 4 + +   lesana | 
