1. 16 3月, 2017 4 次提交
    • M
      qapi: Avoid unwanted blank lines in QAPIDoc · b116fd8e
      Markus Armbruster 提交于
      We silently fix missing #optional tags for QAPIDoc by appending a line
      "#optional" to the section's .content.  However, this interferes with
      .__repr__ stripping trailing blank lines from .content.
      
      Use new ArgSection instance variable .optional instead, and leave
      .content alone.
      
      To permit testing .optional in texi_body(), clean up texi_enum()'s
      hack to add empty documentation for undocumented enum values: add an
      ArgSection instead of ''.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <1489582656-31133-12-git-send-email-armbru@redhat.com>
      b116fd8e
    • M
      qapi2texi: Fix up output around #optional · 42bebcc1
      Markus Armbruster 提交于
      We use tag #optional to mark optional members, like this:
      
          # @name: #optional The name of the guest
      
      texi_body() strips #optional, but not whitespace around it.  For the
      above, we get in qemu-qmp-qapi.texi
      
          @item @code{'name'} (optional)
           The name of the guest
          @end table
      
      The extra space can lead to artifacts in output, e.g in
      qemu-qmp-ref.7.pod
      
          =item C<'name'> (optional)
      
           The name of the guest
      
      and then in qemu-qmp-ref.7
      
          .IX Item "name (optional)"
          .Vb 1
          \& The name of the guest
          .Ve
      
      instead of intended plain
      
          .IX Item "name (optional)"
          The name of the guest
      
      Get rid of these artifacts by removing whitespace around #optional
      along with it.
      
      This turns three minus signs in qapi-schema.json into markup, because
      they're now at the beginning of the line.  Drop them, they're unwanted
      there.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <1489582656-31133-11-git-send-email-armbru@redhat.com>
      42bebcc1
    • M
      qapi: Make doc comments optional where we don't need them · bc52d03f
      Markus Armbruster 提交于
      Since we added the documentation generator in commit 3313b612, doc
      comments are mandatory.  That's a very good idea for a schema that
      needs to be documented, but has proven to be annoying for testing.
      
      Make doc comments optional again, but add a new directive
      
          { 'pragma': { 'doc-required': true } }
      
      to let a QAPI schema require them.
      
      Add test cases for the new pragma directive.  While there, plug a
      minor hole in includ directive test coverage.
      
      Require documentation in the schemas we actually want documented:
      qapi-schema.json and qga/qapi-schema.json.
      
      We could probably make qapi2texi.py cope with incomplete
      documentation, but for now, simply make it refuse to run unless the
      schema has 'doc-required': true.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Message-Id: <1489582656-31133-3-git-send-email-armbru@redhat.com>
      [qapi-code-gen.txt wording tweaked]
      Reviewed-by: NEric Blake <eblake@redhat.com>
      bc52d03f
    • M
      qapi2texi: change texi formatters · 597494ab
      Marc-André Lureau 提交于
      STRUCT_FMT is generic enough, rename it to TYPE_FMT, use it for unions.
      
      Rename COMMAND_FMT to MSG_FMT, since it applies to both commands and
      events.
      Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <20170125130308.16104-2-marcandre.lureau@redhat.com>
      Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      597494ab
  2. 20 2月, 2017 1 次提交
  3. 16 1月, 2017 1 次提交
    • M
      qapi: add qapi2texi script · 3313b612
      Marc-André Lureau 提交于
      As the name suggests, the qapi2texi script converts JSON QAPI
      description into a texi file suitable for different target
      formats (info/man/txt/pdf/html...).
      
      It parses the following kind of blocks:
      
      Free-form:
      
        ##
        # = Section
        # == Subsection
        #
        # Some text foo with *emphasis*
        # 1. with a list
        # 2. like that
        #
        # And some code:
        # | $ echo foo
        # | -> do this
        # | <- get that
        #
        ##
      
      Symbol description:
      
        ##
        # @symbol:
        #
        # Symbol body ditto ergo sum. Foo bar
        # baz ding.
        #
        # @param1: the frob to frobnicate
        # @param2: #optional how hard to frobnicate
        #
        # Returns: the frobnicated frob.
        #          If frob isn't frobnicatable, GenericError.
        #
        # Since: version
        # Notes: notes, comments can have
        #        - itemized list
        #        - like this
        #
        # Example:
        #
        # -> { "execute": "quit" }
        # <- { "return": {} }
        #
        ##
      
      That's roughly following the following EBNF grammar:
      
      api_comment = "##\n" comment "##\n"
      comment = freeform_comment | symbol_comment
      freeform_comment = { "# " text "\n" | "#\n" }
      symbol_comment = "# @" name ":\n" { member | tag_section | freeform_comment }
      member = "# @" name ':' [ text ] "\n" freeform_comment
      tag_section = "# " ( "Returns:", "Since:", "Note:", "Notes:", "Example:", "Examples:" ) [ text ]  "\n" freeform_comment
      text = free text with markup
      
      Note that the grammar is ambiguous: a line "# @foo:\n" can be parsed
      both as freeform_comment and as symbol_comment.  The actual parser
      recognizes symbol_comment.
      
      See docs/qapi-code-gen.txt for more details.
      
      Deficiencies and limitations:
      - the generated QMP documentation includes internal types
      - union type support is lacking
      - type information is lacking in generated documentation
      - doc comment error message positions are imprecise, they point
        to the beginning of the comment.
      - a few minor issues, all marked TODO/FIXME in the code
      Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <20170113144135.5150-16-marcandre.lureau@redhat.com>
      Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
      [test-qapi.py tweaked to avoid trailing empty lines in .out]
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      3313b612