doc: documentation first draft:
this patch starts the local documentation, existing documentation will be imported from wiki/other places to this folder and updated. This doc is using reStructuredText format and will be generated with Sphinx.
This commit is contained in:
parent
d694599d69
commit
31a16d1fab
9 changed files with 1097 additions and 0 deletions
19
doc/Makefile
Normal file
19
doc/Makefile
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# Minimal makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXOPTS =
|
||||
SPHINXBUILD = sphinx-build
|
||||
SOURCEDIR = .
|
||||
BUILDDIR = .build
|
||||
|
||||
# Put it first so that "make" without argument is like "make help".
|
||||
help:
|
||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
||||
.PHONY: help Makefile
|
||||
|
||||
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||
%: Makefile
|
||||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
184
doc/conf.py
Normal file
184
doc/conf.py
Normal file
|
|
@ -0,0 +1,184 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Configuration file for the Sphinx documentation builder.
|
||||
#
|
||||
# This file does only contain a selection of the most common options. For a
|
||||
# full list see the documentation:
|
||||
# http://www.sphinx-doc.org/en/master/config
|
||||
|
||||
# -- 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('.'))
|
||||
import os.path
|
||||
import re
|
||||
|
||||
|
||||
# -- Project information -----------------------------------------------------
|
||||
|
||||
project = u'Salut à Toi'
|
||||
copyright = u'2019, Salut à Toi'
|
||||
author = u'Salut à Toi team'
|
||||
|
||||
doc_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
version_path = os.path.join(doc_dir, '../sat/VERSION')
|
||||
with open(version_path) as f:
|
||||
version_full = f.read()
|
||||
|
||||
# The short X.Y version
|
||||
version = re.match(r'[0-9.]+', version_full).group()
|
||||
|
||||
# The full version, including alpha/beta/rc tags
|
||||
release = version_full
|
||||
|
||||
|
||||
# -- General configuration ---------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
#
|
||||
# needs_sphinx = '1.0'
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
extensions = [
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['.templates']
|
||||
|
||||
# The suffix(es) of source filenames.
|
||||
# You can specify multiple suffix as a list of string:
|
||||
#
|
||||
# source_suffix = ['.rst', '.md']
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
language = None
|
||||
|
||||
# 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 = [u'.build', 'Thumbs.db', '.DS_Store']
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = None
|
||||
|
||||
|
||||
# -- 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'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
#
|
||||
# html_theme_options = {}
|
||||
|
||||
# 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']
|
||||
|
||||
# Custom sidebar templates, must be a dictionary that maps document names
|
||||
# to template names.
|
||||
#
|
||||
# The default sidebars (for documents that don't match any pattern) are
|
||||
# defined by theme itself. Builtin themes are using these templates by
|
||||
# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
|
||||
# 'searchbox.html']``.
|
||||
#
|
||||
# html_sidebars = {}
|
||||
|
||||
|
||||
# -- Options for HTMLHelp output ---------------------------------------------
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'SalutToidoc'
|
||||
|
||||
|
||||
# -- Options for LaTeX output ------------------------------------------------
|
||||
|
||||
latex_elements = {
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
#
|
||||
# 'papersize': 'letterpaper',
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#
|
||||
# 'pointsize': '10pt',
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#
|
||||
# 'preamble': '',
|
||||
|
||||
# Latex figure (float) alignment
|
||||
#
|
||||
# 'figure_align': 'htbp',
|
||||
}
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
(master_doc, 'SalutToi.tex', u'Salut à Toi Documentation',
|
||||
u'Salut à Toi team', 'manual'),
|
||||
]
|
||||
|
||||
|
||||
# -- Options for manual page output ------------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
(master_doc, 'saluttoi', u'Salut à Toi Documentation',
|
||||
[author], 1)
|
||||
]
|
||||
|
||||
|
||||
# -- Options for Texinfo output ----------------------------------------------
|
||||
|
||||
# Grouping the document tree into Texinfo files. List of tuples
|
||||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
(master_doc, 'SalutToi', u'Salut à Toi Documentation',
|
||||
author, 'SalutToi', 'One line description of project.',
|
||||
'Miscellaneous'),
|
||||
]
|
||||
|
||||
|
||||
# -- Options for Epub output -------------------------------------------------
|
||||
|
||||
# Bibliographic Dublin Core info.
|
||||
epub_title = project
|
||||
|
||||
# The unique identifier of the text. This can be a ISBN number
|
||||
# or the project homepage.
|
||||
#
|
||||
# epub_identifier = ''
|
||||
|
||||
# A unique identification for the text.
|
||||
#
|
||||
# epub_uid = ''
|
||||
|
||||
# A list of files that should not be packed into the epub file.
|
||||
epub_exclude_files = ['search.html']
|
||||
|
||||
|
||||
# -- Extension configuration -------------------------------------------------
|
||||
34
doc/index.rst
Normal file
34
doc/index.rst
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
=========================
|
||||
Salut à Toi documentation
|
||||
=========================
|
||||
|
||||
Welcome to Salut à Toi's documentation. You'll find here both end-user and developer documentations.
|
||||
|
||||
Salut à Toi (or SàT) is a Libre communication ecosystem based on XMPP standard. It allows you to do many things such as:
|
||||
|
||||
- instant messaging
|
||||
- (micro)blogging
|
||||
- file sharing
|
||||
- managing photo albums
|
||||
- organizing/managing events
|
||||
- handling tasks
|
||||
- etc.
|
||||
|
||||
It features many interfaces (desktop, mobile, web, command line, console), and is multi-platforms.
|
||||
|
||||
You can follow this documentation to learn more on it, or join our official XMPP room at `sat@chat.jabberfr.org <xmpp:sat@chat.jabberfr.org?join>`_ (also available via a `web link <https://chat.jabberfr.org/converse.js/sat@chat.jabberfr.org>`_)
|
||||
|
||||
|
||||
.. toctree::
|
||||
:caption: Contents:
|
||||
:maxdepth: 3
|
||||
|
||||
installation.rst
|
||||
/jp/index.rst
|
||||
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`search`
|
||||
188
doc/installation.rst
Normal file
188
doc/installation.rst
Normal file
|
|
@ -0,0 +1,188 @@
|
|||
============
|
||||
Installation
|
||||
============
|
||||
|
||||
This are the instructions to install SàT using Python.
|
||||
Note that if you are using GNU/Linux, Salut à Toi may already be present on your distribution.
|
||||
|
||||
Salut à Toi is made of one backend, and several frontends. To use it, the first thing to do is to install the backend.
|
||||
|
||||
We recommand to use development version for now, until the release of
|
||||
0.7 version which will be "general public" version.
|
||||
|
||||
Also note that SàT is still using Python 2 (this will change for 0.8 version which will be Python 3 only), so all instructions below have to be made using python 2.
|
||||
|
||||
Development version
|
||||
-------------------
|
||||
|
||||
*Note for Arch users: a pkgbuild is available for your distribution on
|
||||
AUR, check sat-xmpp-hg (as well as other sat-\* packages).*
|
||||
|
||||
You can install the latest development version using pip. You need to
|
||||
have the following dependencies installed first:
|
||||
|
||||
- Python 2 with development headers
|
||||
- Mercurial
|
||||
- VirtualEnv
|
||||
- libcairo 2 with development headers
|
||||
- libjpeg with development headers
|
||||
- libgirepository 1.0 with development headers
|
||||
- libdbus-1 with development headers
|
||||
- libdbus-glib-1 with development headers
|
||||
- libxml2 with development headers
|
||||
- libxlt2 with development headers
|
||||
- D-Bus x11 tools (this doesn't needs X11, it is just needed for dbus-launch)
|
||||
- cmake
|
||||
|
||||
On Debian and derivatives, you can get all this with following command::
|
||||
|
||||
$ sudo apt-get install python-dev mercurial virtualenv libxml2-dev libxslt-dev libcairo2-dev libjpeg-dev libgirepository1.0-dev libdbus-1-dev libdbus-glib-1-dev dbus-x11 cmake
|
||||
|
||||
Now go in a location where you can install Salut à Toi, for
|
||||
instance your home directory::
|
||||
|
||||
$ cd
|
||||
|
||||
And enter the following commands (note that *virtualenv2* may be named
|
||||
*virtualenv* on some distributions, just be sure it's Python **2** version)::
|
||||
|
||||
$ virtualenv2 env
|
||||
$ source env/bin/activate
|
||||
$ pip install hg+https://repos.goffi.org/sat
|
||||
|
||||
Don't worry if you see the following message, SàT should work anyway::
|
||||
|
||||
Failed building wheel for pygobject
|
||||
|
||||
After installing SàT, you need to install the media::
|
||||
|
||||
$ cd
|
||||
$ hg clone https://repos.goffi.org/sat_media
|
||||
|
||||
then, create the file ~/.config/sat/sat.conf containing:
|
||||
|
||||
.. sourcecode:: cfg
|
||||
|
||||
[DEFAULT]
|
||||
media_dir = ~/sat_media
|
||||
|
||||
Of course, replace ``~/sat_media`` with the actual path you have used.
|
||||
|
||||
.. following part is currently hidden until v0.7 is released
|
||||
|
||||
Last release
|
||||
------------
|
||||
|
||||
This release is really old and code has changed a lot since it.
|
||||
Furthermore, stable version is currently not maintained. We recommend to use current dev version until version 0.7 is released.
|
||||
|
||||
If you are willing to install last release anyway, here are the instructions.
|
||||
|
||||
You can automatically install SàT and its dependencies using
|
||||
easy_install or pip. You will however need to install Python's headers
|
||||
(needed to build some packages),
|
||||
`PyGObject <http://ftp.gnome.org/pub/GNOME/sources/pygobject/>`__ and
|
||||
developments version of libxml2 and libxslt (to compile lxml python
|
||||
library). On some ARM systems like Raspberry Pi or OLinuXino, it is also
|
||||
required to install libjpeg-dev and libffi-dev beforehand.
|
||||
|
||||
The environment variable SAT_INSTALL customises the installation, it
|
||||
contains flags separated by spaces:
|
||||
|
||||
- "nopreinstall" skip all preinstallation checks
|
||||
- "autodeb" automatically install missing packages on Debian based
|
||||
distributions
|
||||
|
||||
PyGobject is automatically installed on Debian based distributions if
|
||||
"autodeb" option is set. Indeed, on Debian based distribution, you can
|
||||
type:
|
||||
|
||||
| ``sudo apt-get install python-pip python-virtualenv python-dev libxml2-dev libxslt-dev libjpeg-dev libffi-dev zlib1g-dev``
|
||||
| ``virtualenv --system-site-packages sat``
|
||||
| ``source sat/bin/activate``
|
||||
| ``pip2 install -U setuptools``
|
||||
| ``SAT_INSTALL="autodeb" pip2 install sat``
|
||||
|
||||
After installing SàT, you need to install the media:
|
||||
|
||||
| ``mkdir -p /path/to/sat_media``
|
||||
| ``cd /path/to/sat_media``
|
||||
| ``wget ``\ ```ftp://ftp.goffi.org/sat_media/sat_media.tar.bz2`` <ftp://ftp.goffi.org/sat_media/sat_media.tar.bz2>`__
|
||||
| ``tar -jxvf sat_media.tar.bz2``
|
||||
|
||||
then, create a ~/.sat.conf file which contains:
|
||||
|
||||
| ``[DEFAULT]``
|
||||
| ``media_dir=/path/to/sat_media``
|
||||
|
||||
Of course, replace /path/to/sat_media with the actual path you want to
|
||||
use.
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
To launch the sat backend, enter::
|
||||
|
||||
$ sat
|
||||
|
||||
…or, if you want to launch it in foreground::
|
||||
|
||||
$ sat fg
|
||||
|
||||
You can stop it with::
|
||||
|
||||
$ sat stop
|
||||
|
||||
To know if backend is launched or not::
|
||||
|
||||
$ sat status
|
||||
|
||||
**NOTE**: since SàT v0.5.0, the backend is automatically launched when a frontend needs it.
|
||||
|
||||
You can check that SàT is installed correctly by trying jp (the backend need to be launched first, check below)::
|
||||
|
||||
$ jp --version
|
||||
jp 0.7.0D « La Commune » (rev 2dd53ffa4781 (default 2019-02-22 18:58 +0100) +110) Copyright (C) 2009-2019 Jérôme Poisson, Adrien Cossa
|
||||
This program comes with ABSOLUTELY NO WARRANTY;
|
||||
This is free software, and you are welcome to redistribute it under certain conditions.
|
||||
|
||||
If you have a similar output, SàT is working.
|
||||
|
||||
Frontends
|
||||
=========
|
||||
|
||||
So far, the following frontends exist and are actively maintained:
|
||||
|
||||
Cagou
|
||||
desktop/mobile (Android) frontend
|
||||
|
||||
Libervia
|
||||
the web frontend
|
||||
|
||||
Primitivus
|
||||
Text User Interface
|
||||
|
||||
jp
|
||||
Command Line Interface
|
||||
|
||||
To launch Primitivus, just type::
|
||||
|
||||
$ primitivus
|
||||
|
||||
then create a profile (XMPP account must already exist).
|
||||
|
||||
To use jp, follow its help::
|
||||
|
||||
$ jp --help
|
||||
|
||||
|
||||
There are some other frontends:
|
||||
|
||||
Bellaciao
|
||||
based on Qt, a rich desktop frontend (currently on hold)
|
||||
|
||||
Wix
|
||||
former desktop frontend based on WxWidgets (deprecated with version 0.6.0)
|
||||
|
||||
Sententia
|
||||
Emacs frontend developed by a third party (development is currently stalled)
|
||||
286
doc/jp/blog.rst
Normal file
286
doc/jp/blog.rst
Normal file
|
|
@ -0,0 +1,286 @@
|
|||
.. highlight:: sh
|
||||
|
||||
================================
|
||||
blog: (micro)blogging management
|
||||
================================
|
||||
|
||||
Blog commands are high level tools to handle an XMPP blog.
|
||||
They are using the generic pubsub arguments
|
||||
|
||||
set
|
||||
===
|
||||
|
||||
publish a blog item.
|
||||
|
||||
:ref:`pubsub_common` commands are used to specify the destination item.
|
||||
|
||||
``stdin`` is used to get the body of the blog post.
|
||||
|
||||
examples
|
||||
--------
|
||||
|
||||
Create a blog post with a body, a subject, 2 tags, and with comments allowed::
|
||||
|
||||
$ echo "This is post body" | jp blog set -T "This is a test message" -t test -t jp -C
|
||||
|
||||
Create a blog post with rich content using `markdown` syntax, and no subject::
|
||||
|
||||
$ echo "This is a **rich** body" | jp blog set -S markdown
|
||||
|
||||
get
|
||||
===
|
||||
|
||||
get command retrieves one or move blog post from specified location (by default the
|
||||
personal blog of the profile).
|
||||
|
||||
output can be customised to only retrieve some keys, or to use a specific template.
|
||||
|
||||
:ref:`pubsub_common` commands are used to specify the blog location.
|
||||
|
||||
examples
|
||||
--------
|
||||
|
||||
Retrieve personal blog of the profile using `fancy` output with a verbosity of 1 (to show
|
||||
publication date)::
|
||||
|
||||
$ jp blog get -O fancy -v
|
||||
|
||||
Retrieve *title* and *publication date* of last 3 blog posts from the blog at
|
||||
https://www.goffi.org::
|
||||
|
||||
$ jp blog get -m 3 -u https://www.goffi.org -k title -k published
|
||||
|
||||
Retrieve last 2 posts of personal blog, and output them in browser using default
|
||||
template::
|
||||
|
||||
$ jp blog get -m 2 -O template --oo browser
|
||||
|
||||
edit
|
||||
====
|
||||
|
||||
With edit command you can create a new blog post or modify an existing one using your
|
||||
local editor (the one set in ``$EDITOR``). You'll edit 2 things: the body of the post, and
|
||||
the metadata which contain things like title, comments infos, or tags.
|
||||
|
||||
For some common editors (like **vim** or **Emacs**), the editor will be automatially
|
||||
opened using a split screen with *body* in one side, and metadata on the other. If the
|
||||
editor is not supported or doesn't support split screen, you'll edit first the *body*, then
|
||||
the *metadata*. You can also specify editor and arguments in ``sat.conf``, see
|
||||
`configuration <edit_conf_>`_ below
|
||||
|
||||
If you don't change anything or publish an empty blog post, the edition will be cancelled.
|
||||
|
||||
In the metadata (see `below <edit_metadata_>`_ for details), you can use
|
||||
``"publish": false`` to forbid the publication. In this case, when you'll save
|
||||
your modification and quit your editor, the blog post will not be published but
|
||||
saved locally in a draft. To continue your work later, just start your edition with the
|
||||
``-D, --current`` option like this::
|
||||
|
||||
$ jp blog edit -D
|
||||
|
||||
Note that item location must be re-specified if it has been used to create the draft, so
|
||||
you'll have to reproduce the arguments to specify service, node or item (or the URL),
|
||||
other data like tags will be restored from draft file of metadata.
|
||||
|
||||
You can specify the syntax by using ``-S SYNTAX, --syntax SYNTAX``. If not specified, the
|
||||
syntax set in your parameters will be used.
|
||||
|
||||
When you edit a blog post, it is often useful to activate the ``-P, --preview`` option,
|
||||
this will launch a web browser and refresh the page each time you save a modification in
|
||||
your editor. By default, the browser registered as default in your system will be used,
|
||||
and a new tab will be opened on each modification. This is not ideal, and we recommand to
|
||||
set you configuration to activate automatic refreshing of the page instead, see `preview
|
||||
configuration <edit_preview_>`_ below to see how to do.
|
||||
|
||||
examples
|
||||
--------
|
||||
|
||||
Edit a new blog post with comments on your personal blog, using default syntax and preview::
|
||||
|
||||
$ jp blog edit -P --comments
|
||||
|
||||
Modifiy a draft previously saved using the ``"publish": false`` metadata::
|
||||
|
||||
$ jp blog edit -D
|
||||
|
||||
Correct a typo in your last published blog post::
|
||||
|
||||
$ jp blog edit --last-item
|
||||
|
||||
Edit the blog item at an HTTPS URL using XHTML syntax::
|
||||
|
||||
$ jp blog edit -u https://www.example.net/some_xmpp_blog_article.html -S xhtml
|
||||
|
||||
Create a new blog post on a XMPP blog node using its HTTPS URL (supposing here that
|
||||
https://example.net is a XMPP blog node)::
|
||||
|
||||
$ jp blog edit -u https://www.example.net
|
||||
|
||||
.. _edit_metadata:
|
||||
|
||||
metadata
|
||||
--------
|
||||
|
||||
Metadata is set using a JSON object. The key you can use are:
|
||||
|
||||
publish
|
||||
boolean indicating if item can be published. Set to ``false`` if you want to work on a
|
||||
draft and to avoid accidental publication.
|
||||
|
||||
atom_id
|
||||
atom entry identifier. This should not be modified manually.
|
||||
|
||||
published
|
||||
time of initial publication (unix time). This should not be modified manually.
|
||||
|
||||
language
|
||||
language of the content
|
||||
|
||||
comments
|
||||
array of URIs to the comments node, if any.
|
||||
|
||||
tag
|
||||
array of tags, if any
|
||||
|
||||
author
|
||||
human readable name of the entry author
|
||||
|
||||
author_jid
|
||||
jid of the author. This should notbe modified manually.
|
||||
|
||||
author_jid_verified
|
||||
true if the pubsub service confirmed that author_jid is the one of the publisher. It is
|
||||
useless to modify this variable.
|
||||
|
||||
title
|
||||
the title of the message
|
||||
|
||||
title_rich
|
||||
the rich title of the message, in current text syntax. It will be automatically
|
||||
converted to xhtml.
|
||||
|
||||
.. _edit_conf:
|
||||
|
||||
configuration
|
||||
-------------
|
||||
|
||||
editor
|
||||
^^^^^^
|
||||
|
||||
Local editor used is by default the one set in ``$EDITOR`` environment variable, but you
|
||||
can specify one in ``sat.conf``. To do so, you have to set the name of an editor
|
||||
executable in the ``editor`` option in ``[jp]`` section.
|
||||
|
||||
You can specify the args to use by using ``blog_editor_args`` option. Use
|
||||
``{content_file}`` to get the path of the main content file (the body of the blog post),
|
||||
and ``{metadata_file}`` to get the path of the json metadata.
|
||||
|
||||
.. sourcecode:: cfg
|
||||
|
||||
[jp]
|
||||
editor = kate
|
||||
blog_editor_args = {content_file} {metadata_file}
|
||||
|
||||
.. _edit_preview:
|
||||
|
||||
preview
|
||||
^^^^^^^
|
||||
|
||||
To set the preview, you can use the options ``blog_preview_open_cmd`` and
|
||||
``blog_preview_update_cmd`` in your ``[jp]`` section. the former is the command to use to
|
||||
open your browser when edition starts, and the later is the command to use when a
|
||||
modification is saved. In both cases you may use ``{url}`` to set the location of local HTML file.
|
||||
|
||||
This can be use to activate automatic refreshing of the page.
|
||||
|
||||
For **Konqueror**, you can use its D-Bus API to do refreshing. Ensure that ``qdbus`` is
|
||||
installed on your system, and enter the following lines in your ``sat.conf``:
|
||||
|
||||
.. sourcecode:: cfg
|
||||
|
||||
[jp]
|
||||
blog_preview_open_cmd = konqueror {url}
|
||||
blog_preview_update_cmd = /bin/sh -c "qdbus $(qdbus org.kde.konqueror\*) /konqueror/MainWindow_1 reload"
|
||||
|
||||
For **Firefox**, you may use ``xdotool`` on X11. Once you have installed this tool, enter the
|
||||
following lines in your ``sat.conf``:
|
||||
|
||||
.. sourcecode:: cfg
|
||||
|
||||
[jp]
|
||||
blog_preview_open_cmd = firefox -new-tab {url}
|
||||
blog_preview_update_cmd = /bin/sh -c "WID=$(xdotool search --name 'Mozilla Firefox' | head -1); xdotool windowactivate $WID; xdotool key F5"
|
||||
|
||||
This *xdotool* technique can be adapted to other browsers.
|
||||
|
||||
syntax extensions
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
A dictionary with a mapping from syntax name to file extension can be used. This can be
|
||||
useful to activate the right syntax highlighting in your editor. There is a default
|
||||
mapping which can be overriden.
|
||||
|
||||
The mapping is set in the ``syntax_ext_dict`` option of the ``[jp]`` section of your
|
||||
``sat.conf`` file. For instance, if your prefer do your ``.markdown`` for temp files
|
||||
instead of the default ``.md``, you can use this:
|
||||
|
||||
.. sourcecode:: cfg
|
||||
|
||||
[jp]
|
||||
syntax_ext_dict = {"markdown": "markdown"}
|
||||
|
||||
the first ``markdown`` is the name of the syntax (could an other syntax like ``xhtml``),
|
||||
while the second if the file extension.
|
||||
|
||||
preview
|
||||
=======
|
||||
|
||||
This command will show the specified file in browser, and refresh it when changes are
|
||||
detected. Configuration is the same as for `edit preview <edit_preview_>`_. This is can be
|
||||
used if you have already started an edition with ``jp blog edit`` but forgot to use the ``-P, --preview`` arguments.
|
||||
|
||||
example:
|
||||
--------
|
||||
|
||||
Preview the draft at ``~/local/sat/blog/some_name/blog_something.md``::
|
||||
|
||||
$ jp blog preview ~/local/sat/blog/some_name/blog_something.md
|
||||
|
||||
import
|
||||
======
|
||||
|
||||
With this command you can import an external blog in a XMPP blog at the specified pubsub
|
||||
location.
|
||||
|
||||
The import is done using an *importer* name and a *location* which depends of the importer
|
||||
(it can be a path to a file, an URL to a blog, or something else). Use empty nothing to
|
||||
get list of importers, and specify only importer name to get its description.
|
||||
|
||||
By default, found images are re-uploaded to XMPP server, if you want to keep original
|
||||
URLs, use the ``--no-images-upload`` option.
|
||||
|
||||
Alternatively, you can re-upload images except for a specific host with ``--upload-ignore-host UPLOAD_IGNORE_HOST``. The images for the specified host will keep there original URLs while other will be uploaded to XMPP server.
|
||||
|
||||
You shoud specify original blog host using ``--host HOST`` argument, this is used notably
|
||||
to reconstruct relative URLs of media.
|
||||
|
||||
Importers may have specific options, you can set them using the ``-o NAME VALUE, --option NAME VALUE`` argument. Check the importer description for details.
|
||||
|
||||
examples:
|
||||
---------
|
||||
|
||||
List available importers::
|
||||
|
||||
$ jp blog import
|
||||
|
||||
Get description of ``dotclear`` importer::
|
||||
|
||||
$ jp blog import dotclear
|
||||
|
||||
Import a Dotclear blog::
|
||||
|
||||
$ jp blog import dotclear /path/to/dotclear.dump
|
||||
|
||||
Import a Dotclear blog without uploading images::
|
||||
|
||||
$ jp blog import --no-images-upload dotclear /path/to/dotclear.dump
|
||||
207
doc/jp/common_arguments.rst
Normal file
207
doc/jp/common_arguments.rst
Normal file
|
|
@ -0,0 +1,207 @@
|
|||
================
|
||||
common arguments
|
||||
================
|
||||
|
||||
Some arguments are used in many commands. This page describe them.
|
||||
|
||||
profile
|
||||
=======
|
||||
|
||||
profile arguments are really common, they allow you to select your profile.
|
||||
If you don't select any, the default profile is used, which is the first
|
||||
profile created or the one you have explicitly set. You can check which profile
|
||||
is used by default with ``jp profile default``.
|
||||
|
||||
The common arguments for profile are:
|
||||
|
||||
``-p PROFILE, --profile PROFILE``
|
||||
to select the name of your profile. It can be a profile key like ``@DEFAULT@``
|
||||
|
||||
``-c, --connect``
|
||||
connect the profile to the XMPP server before doing anything else. If your
|
||||
profile is already connected, nothing happen. This is specially useful in scripts.
|
||||
|
||||
``--start-session``
|
||||
starts a session without connecting, this can be needed if you can't connect but
|
||||
you need to access your session e.g. to change parameters.
|
||||
This is advanced used and is not need in most common cases.
|
||||
|
||||
``--pwd PASSWORD``
|
||||
the password of your profile, needed if the session is not started yet.
|
||||
|
||||
.. note::
|
||||
|
||||
jp does not yet prompt for password when needed, this mean that using the ``--pwd``
|
||||
option is not secure if you are not the only user of your machine: the password will
|
||||
appear **IN CLEAR** in the list of launched process, or in the history of your shell.
|
||||
If you are on a shared machine or if anybody can access your shell history at some
|
||||
point, you should connect first your profile with an other frontend (Primitivus for
|
||||
instance). This will be fixed in a future version of jp.
|
||||
|
||||
.. _pubsub_common:
|
||||
|
||||
pubsub
|
||||
======
|
||||
|
||||
pubsub arguments are used in many commands, they allow you to select a service, node and
|
||||
items. Depending on the command, you may only not be able to select an item, or you may
|
||||
select one or multiple items.
|
||||
|
||||
The common arguments for pubsub are:
|
||||
|
||||
``-u PUBSUB_URL, --pubsub-url PUBSUB_URL``
|
||||
retrieve pubsub information from an URL. You can use either and ``xmpp:`` scheme or an
|
||||
``https:`` (or ``http:``) scheme. In the later case, the HTML page will be downloaded to
|
||||
retrieve the location of the XMPP node/item, if available.
|
||||
Note that you can override parts of the location in the URL if you specify service, node
|
||||
or item.
|
||||
|
||||
e.g.::
|
||||
|
||||
$ jp blog get -u https://www.goffi.org
|
||||
|
||||
``-s SERVICE, --service``
|
||||
used to specifiy the JID of the pubsub service
|
||||
|
||||
``-n NODE, --node NODE``
|
||||
used to specifiy the pubsub node
|
||||
|
||||
``-i ITEM, --item ITEM``
|
||||
for commands where an item can be specified, you do it with this option. In some
|
||||
commands, multiple items can be specified, in this case just use this arguments several
|
||||
times.
|
||||
|
||||
``-L, --last-item``
|
||||
when an item id is needed, you can use this option to retrieve the last published item.
|
||||
e.g.::
|
||||
|
||||
$ jp blog edit --last-item
|
||||
|
||||
``-M, --max-items``
|
||||
use to specify a maxium number of items to retrieve, when it makes sense.
|
||||
Note that this is using the pubsub max (i.e. defined in
|
||||
`XEP-0060 <https://xmpp.org/extensions/xep-0060.html>`_). Modern pubsub services should
|
||||
implement `Result Set Management <https://xmpp.org/extensions/xep-0059.html>`_ (RSM) and in
|
||||
this case the ``-m, --max`` argument should be prefered. See below for RSM common
|
||||
arguments.
|
||||
|
||||
result set management
|
||||
=====================
|
||||
|
||||
Result Set Management (RSM) common arguments are used to navigate into pages of results
|
||||
when lot of elements may be expected. Given a result with a large number of arguments, a
|
||||
*page* is set of elements which correspond to an *index* (a page number). For instance if
|
||||
you have 123 elements, you can ask them 10 by 10, and *index 1* match elements from 11 to
|
||||
20 included.
|
||||
|
||||
|
||||
``-a ITEM_ID, --after ITEM_ID``
|
||||
find page after this item. You usually use the last item id of the latest page you got.
|
||||
|
||||
``-b ITEM_ID, --before ITEM_ID``
|
||||
find page before this item. This this usually used when you check items backwards
|
||||
|
||||
``--index RSM_INDEX``
|
||||
index of the page to retrieve. Note that first page has index **0**.
|
||||
|
||||
``-m RSM_MAX, --max RSM_MAX``
|
||||
used to specify a maxium number of items to retrieve per page. Note that the actual
|
||||
maximum number of items per page used may be lower if the service used consider that
|
||||
your request is too big.
|
||||
|
||||
message archive management
|
||||
==========================
|
||||
|
||||
Message Archive Management (MAM) argument is used by some commands (related to instant message or
|
||||
pubsub) to filter results.
|
||||
|
||||
There is currently only one argument in this group:
|
||||
|
||||
``-f FILTER_NAME VALUE, --filter FILTER_NAME VALUE``
|
||||
specify a MAM filter to use. Depending on the service supporting MAM, some filters can
|
||||
be used to do things like full text search. The available filters depend on the service
|
||||
you use, please check documentation of your service.
|
||||
|
||||
order-by
|
||||
========
|
||||
|
||||
Order-By argument specify or the returned elements are sorted.
|
||||
|
||||
There is currently only one argument in this group:
|
||||
|
||||
``-o {creation,modification}, --order-by {creation,modification}``
|
||||
specify how result is sorted. with ``creation``, first created element is returned
|
||||
first. There is no notion of *creation* of *modification* in original
|
||||
`pubsub XEP <https://xmpp.org/extensions/xep-0060.html>`_, as publishing an item with an
|
||||
existing id will overwrite the older one, creating a new item. With this option, we use
|
||||
the terms defined in `XEP-0413 <https://xmpp.org/extensions/xep-0413.html>`_, and
|
||||
*creation* time is the time when the first item has been published, before being
|
||||
overwritten.
|
||||
|
||||
In the case of ``modification``, if an item is overwritten, it reappears on top, this is
|
||||
the default pubsub sorting order.
|
||||
|
||||
progress
|
||||
========
|
||||
|
||||
This single option may be used when a long operation is happening, like a file transfer.
|
||||
|
||||
``-P, --progress``
|
||||
Show progress bar.
|
||||
|
||||
verbose
|
||||
=======
|
||||
|
||||
``--verbose, -v``
|
||||
Add a verbosity level (can be used multiple times). Use to have more concise output by
|
||||
default when it makes sense.
|
||||
|
||||
draft
|
||||
=====
|
||||
|
||||
Common arguments used when an edition is potentially long to do, and a file may be kept
|
||||
until publication.
|
||||
|
||||
|
||||
``-D, --current``
|
||||
Used when you have started to edit something (e.g. a blog post), which is not yet
|
||||
published, and you want to continue your work.
|
||||
|
||||
e.g.::
|
||||
|
||||
$ jp blog edit -D
|
||||
|
||||
``-F DRAFT_PATH, --draft-path DRAFT_PATH``
|
||||
Used when you have started to edit something and want to continue your work from this
|
||||
file. In other words, it's similar to ``-D, --current`` except that you specify the file
|
||||
to use instead of using the last available draft.
|
||||
|
||||
output
|
||||
======
|
||||
|
||||
Output is used when you want to get the result of the command in a specific way. It may be
|
||||
used, for instance, to retrieve the result formatted in JSON so the data can be easily
|
||||
manipulated by a script, or if you want only a specific element of the result.
|
||||
|
||||
``-O {…}, --output {…}``
|
||||
specifiy the output to use. Available options depends of the command you are using,
|
||||
check ``jp [your command] --help`` to know them.
|
||||
|
||||
e.g.::
|
||||
|
||||
$ jp blog get -O json
|
||||
|
||||
``--output-option OUTPUT_OPTS, --oo OUTPUT_OPTS``
|
||||
depending of the output selected, you may have options to customise the output.
|
||||
For instance, if you use the ``template`` output, you may use an option to display the
|
||||
result in a browser.
|
||||
|
||||
e.g.::
|
||||
|
||||
$ jp blog
|
||||
|
||||
Some options expect parameters, in this case they can be specified using ``=``.
|
||||
|
||||
e.g. specifiying a template to use::
|
||||
|
||||
$ jp blog get -O template --oo browser --oo template=/tmp/my_template.html
|
||||
87
doc/jp/index.rst
Normal file
87
doc/jp/index.rst
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
==
|
||||
jp
|
||||
==
|
||||
|
||||
``jp`` is the CLI (Command Line Interface) frontend of Salut à Toi
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
``jp`` is a powerful tool to work with Salut à Toi/XMPP.
|
||||
With it you can send chat messages, share files, retrieve avatars, write blog entries, etc.
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
To get help on commands or their options, use::
|
||||
|
||||
$ jp --help
|
||||
|
||||
which can be used on any command, so if you need help on ``message send`` command, just do::
|
||||
|
||||
$ jp message send --help
|
||||
|
||||
With jp, you always enter commands first, then options and arguments.
|
||||
|
||||
There are several levels of commands: first one is the main categorie (``message``,
|
||||
``blog``, ``avatar``, etc.), then there are often subcommands (e.g. ``message send``).
|
||||
|
||||
After the commands come the options. For instance if you want to send a message, you can
|
||||
get the available options with ``--help`` as explained above::
|
||||
|
||||
$ jp message send --help
|
||||
usage: jp message send [-h] [-p PROFILE] [--pwd PASSWORD] [-c] [-l LANG] [-s]
|
||||
[-n] [-S SUBJECT] [-L SUBJECT_LANG]
|
||||
[-t {chat,error,groupchat,headline,normal,auto}]
|
||||
[-e ALGORITHM] [--encrypt-noreplace] [-x | -r]
|
||||
jid
|
||||
|
||||
positional arguments:
|
||||
jid the destination jid
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
-p PROFILE, --profile PROFILE
|
||||
Use PROFILE profile key (default: @DEFAULT@)
|
||||
--pwd PASSWORD Password used to connect profile, if necessary
|
||||
-c, --connect Connect the profile before doing anything else
|
||||
-l LANG, --lang LANG language of the message
|
||||
-s, --separate separate xmpp messages: send one message per line
|
||||
instead of one message alone.
|
||||
-n, --new-line add a new line at the beginning of the input (usefull
|
||||
for ascii art ;))
|
||||
-S SUBJECT, --subject SUBJECT
|
||||
subject of the message
|
||||
-L SUBJECT_LANG, --subject_lang SUBJECT_LANG
|
||||
language of subject
|
||||
-t {chat,error,groupchat,headline,normal,auto}, --type {chat,error,groupchat,headline,normal,auto}
|
||||
type of the message
|
||||
-e ALGORITHM, --encrypt ALGORITHM
|
||||
encrypt message using given algorithm
|
||||
--encrypt-noreplace don't replace encryption algorithm if an other one is
|
||||
already used
|
||||
-x, --xhtml XHTML body
|
||||
|
||||
If you want to send a message to, say, ``pierre@example.net``, and encrypt it with OMEMO,
|
||||
just do the following::
|
||||
|
||||
echo "hi, I'm writing with jp" | jp message send -e omemo pierre@example.net
|
||||
|
||||
(note that with OMEMO, you need to have previously validated fingerprint of your contact
|
||||
for this to work).
|
||||
|
||||
The different commands are explained in dedicated sections.
|
||||
|
||||
.. toctree::
|
||||
:caption: jp commands:
|
||||
:glob:
|
||||
:maxdepth: 2
|
||||
|
||||
common_arguments
|
||||
*
|
||||
|
||||
|
||||
Tutorial
|
||||
========
|
||||
|
||||
You can check this third party tutorial: https://blog.agayon.be/sat_jp.html
|
||||
57
doc/jp/message.rst
Normal file
57
doc/jp/message.rst
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
.. highlight:: sh
|
||||
|
||||
================================
|
||||
message: chat message management
|
||||
================================
|
||||
|
||||
Message commands let you send chat messages or manage your server message archives.
|
||||
|
||||
send
|
||||
====
|
||||
|
||||
send a message to a contact or a chat room.
|
||||
``stdin`` is used as message source.
|
||||
You can encrypt your message using ``--encrypt [ALGORITHM]`` argument, this will create an encrypted session and replace existing one if needed.
|
||||
You can manage your encrypted session using ``encryption`` command.
|
||||
|
||||
examples
|
||||
--------
|
||||
|
||||
Send a message to a contact::
|
||||
|
||||
$ echo 'Salut à Toi!' | jp message send louise@example.net
|
||||
|
||||
Send a message encrypted with OMEMO::
|
||||
|
||||
$ echo 'pssst, this message is encrypted' | jp message send -o omemo louise@example.net
|
||||
|
||||
.. note::
|
||||
|
||||
Fingerprints of your destinee must have been accepted before using OMEMO, else message can't be encrypted
|
||||
|
||||
Send a ``normal`` message marked as French with a subject::
|
||||
|
||||
$ echo 'Bonjour, je vous écris avec « Salut à Toi »' | jp message send -l fr -t normal -S 'Ceci est un message de test'
|
||||
|
||||
mam
|
||||
===
|
||||
|
||||
query archives using MAM.
|
||||
This command allows you to check message archive kept on the server (i.e. not the local copy).
|
||||
You usually want to specify a starting point, and a number of message to retrieve. If too many messages
|
||||
are available, you'll have to use RSM commands to navigate through the results.
|
||||
|
||||
examples
|
||||
--------
|
||||
|
||||
Retrieve messages from last 2 days::
|
||||
|
||||
$ jp message mam -S "2 days ago"
|
||||
|
||||
Retrieve messages from last 5 hours on SàT official chat room::
|
||||
|
||||
$ jp message mam -S "2 hours ago" -s sat@chat.jabberfr.org
|
||||
|
||||
Retrieve 2 first messages of 2019 on SàT official chat room::
|
||||
|
||||
$ jp message mam -S 2019-01-01 -s sat@chat.jabberfr.org -m 2
|
||||
35
doc/make.bat
Normal file
35
doc/make.bat
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
@ECHO OFF
|
||||
|
||||
pushd %~dp0
|
||||
|
||||
REM Command file for Sphinx documentation
|
||||
|
||||
if "%SPHINXBUILD%" == "" (
|
||||
set SPHINXBUILD=sphinx-build
|
||||
)
|
||||
set SOURCEDIR=.
|
||||
set BUILDDIR=.build
|
||||
|
||||
if "%1" == "" goto help
|
||||
|
||||
%SPHINXBUILD% >NUL 2>NUL
|
||||
if errorlevel 9009 (
|
||||
echo.
|
||||
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
||||
echo.installed, then set the SPHINXBUILD environment variable to point
|
||||
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
||||
echo.may add the Sphinx directory to PATH.
|
||||
echo.
|
||||
echo.If you don't have Sphinx installed, grab it from
|
||||
echo.http://sphinx-doc.org/
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
|
||||
goto end
|
||||
|
||||
:help
|
||||
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
|
||||
|
||||
:end
|
||||
popd
|
||||
Loading…
Reference in a new issue