docs: add some narrative docs to explain basic concepts
still needs a lot of work i'm sure..gotta start somewhere
This commit is contained in:
parent
ba8f57ddc1
commit
b3e4e91df8
11 changed files with 522 additions and 14 deletions
27
docs/narr/cli/builtin.rst
Normal file
27
docs/narr/cli/builtin.rst
Normal file
|
@ -0,0 +1,27 @@
|
|||
|
||||
===================
|
||||
Built-in Commands
|
||||
===================
|
||||
|
||||
Below are the :term:`subcommands <subcommand>` which come with
|
||||
WuttaSync.
|
||||
|
||||
It is fairly simple to add more; see :doc:`custom`.
|
||||
|
||||
|
||||
.. _wutta-import-csv:
|
||||
|
||||
``wutta import-csv``
|
||||
--------------------
|
||||
|
||||
Import data from CSV file(s) to the Wutta :term:`app database`.
|
||||
|
||||
This *should* be able to automatically target any table mapped in the
|
||||
:term:`app model`. The only caveat is that it is "dumb" and does not
|
||||
have any special field handling. This means the column headers in the
|
||||
CSV file must be named the same as in the target table, and some data
|
||||
types may not behave as expected etc.
|
||||
|
||||
Defined in: :mod:`wuttasync.cli.import_csv`
|
||||
|
||||
.. program-output:: wutta import-csv --help
|
64
docs/narr/cli/custom.rst
Normal file
64
docs/narr/cli/custom.rst
Normal file
|
@ -0,0 +1,64 @@
|
|||
|
||||
=================
|
||||
Custom Commands
|
||||
=================
|
||||
|
||||
This section describes how to add a custom :term:`subcommand` which
|
||||
wraps a particular :term:`import handler`.
|
||||
|
||||
See also :doc:`wuttjamaican:narr/cli/custom` for more information
|
||||
on the general concepts etc.
|
||||
|
||||
|
||||
Basic Import/Export
|
||||
-------------------
|
||||
|
||||
Here we'll assume you have a typical "Poser" app based on Wutta
|
||||
Framework, and the "Foo → Poser" (``FromFooToPoser`` handler) import
|
||||
logic is defined in the ``poser.importing.foo`` module.
|
||||
|
||||
We'll also assume you already have a ``poser`` top-level
|
||||
:term:`command` (in ``poser.cli``), and our task now is to add the
|
||||
``poser import-foo`` subcommand to wrap the import handler.
|
||||
|
||||
And finally we'll assume this is just a "typical" import handler and
|
||||
we do not need any custom CLI params exposed.
|
||||
|
||||
Here is the code and we'll explain below::
|
||||
|
||||
from poser.cli import poser_typer
|
||||
from wuttasync.cli import import_command, ImportCommandHandler
|
||||
|
||||
@poser_typer.command()
|
||||
@import_command
|
||||
def import_foo(ctx, **kwargs):
|
||||
"""
|
||||
Import data from Foo API to Poser DB
|
||||
"""
|
||||
config = ctx.parent.wutta_config
|
||||
handler = ImportCommandHandler(
|
||||
config, import_handler='poser.importing.foo:FromFooToPoser')
|
||||
handler.run(ctx.params)
|
||||
|
||||
Hopefully it's straightforward but to be clear:
|
||||
|
||||
* subcommand is really just a function, **with desired name**
|
||||
* wrap with ``@poser_typer.command()`` to register as subcomand
|
||||
* wrap with ``@import_command`` to get typical CLI params
|
||||
* call ``ImportCommandHandler.run()`` with import handler spec
|
||||
|
||||
So really - in addition to
|
||||
:func:`~wuttasync.cli.base.import_command()` - the
|
||||
:class:`~wuttasync.cli.base.ImportCommandHandler` is doing the heavy
|
||||
lifting for all import/export subcommands, it just needs to know which
|
||||
:term:`import handler` to use.
|
||||
|
||||
.. note::
|
||||
|
||||
If your new subcommand is defined in a different module than is the
|
||||
top-level command (e.g. as in example above) then you may need to
|
||||
"eagerly" import the subcommand module. (Otherwise auto-discovery
|
||||
may not find it.)
|
||||
|
||||
This is usually done from within the top-level command's module,
|
||||
since it is always imported early due to the entry point.
|
23
docs/narr/cli/index.rst
Normal file
23
docs/narr/cli/index.rst
Normal file
|
@ -0,0 +1,23 @@
|
|||
|
||||
========================
|
||||
Command Line Interface
|
||||
========================
|
||||
|
||||
The primary way of using the import/export framework day to day is via
|
||||
the command line.
|
||||
|
||||
WuttJamaican defines the ``wutta`` :term:`command` and WuttaSync comes
|
||||
with some extra :term:`subcommands <subcommand>` for importing to /
|
||||
exporting from the Wutta :term:`app database`.
|
||||
|
||||
It is fairly simple to add a dedicated subcommand for any
|
||||
:term:`import handler`; see below.
|
||||
|
||||
And for more general info about CLI see
|
||||
:doc:`wuttjamaican:narr/cli/index`.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
builtin
|
||||
custom
|
Loading…
Add table
Add a link
Reference in a new issue