def insert_volume(language, filepath, notes, metadata):
    '''
    Add a new volume to libreant.

    The metadata of the volume are taken from a json file whose path must be
    passed as argument. Passing "-" as argument will read the file from stdin.
    language is an exception, because it must be set using --language

    For every attachment you must add a --file AND a --notes.

    \b
    Examples:
        Adds a volume with no metadata. Yes, it makes no sense but you can
          libreant-db insert-volume -l en - <<<'{}'
        Adds a volume with no files attached
          libreant-db insert-volume -l en - <<EOF
          {
            "title": "How to create volumes",
            "actors": ["libreant devs", "open access conspiration"]
          }
          EOF
        Adds a volume with one attachment but no metadata
          libreant-db insert-volume -l en -f /path/book.epub --notes 'poor quality'
        Adds a volume with two attachments but no metadata
          libreant-db insert-volume -l en -f /path/book.epub --notes 'poor quality' -f /path/someother.epub --notes 'preprint'

    '''
    meta = {"_language": language}
    if metadata:
        meta.update(json.load(metadata))
    attachments = attach_list(filepath, notes)
    try:
        out = arc.insert_volume(meta, attachments)
    except Exception:
        die('An upload error have occurred!', exit_code=4)
    click.echo(out)
Add a new volume to libreant.

    The metadata of the volume are taken from a json file whose path must be
    passed as argument. Passing "-" as argument will read the file from stdin.
    language is an exception, because it must be set using --language

    For every attachment you must add a --file AND a --notes.

    \b
    Examples:
        Adds a volume with no metadata. Yes, it makes no sense but you can
          libreant-db insert-volume -l en - <<<'{}'
        Adds a volume with no files attached
          libreant-db insert-volume -l en - <<EOF
          {
            "title": "How to create volumes",
            "actors": ["libreant devs", "open access conspiration"]
          }
          EOF
        Adds a volume with one attachment but no metadata
          libreant-db insert-volume -l en -f /path/book.epub --notes 'poor quality'
        Adds a volume with two attachments but no metadata
          libreant-db insert-volume -l en -f /path/book.epub --notes 'poor quality' -f /path/someother.epub --notes 'preprint'