예제 #1
0
 def __init__(self, root, module_list, version=get_versions()["version"], base_url = None):
     self.root = root
     self.module_list = module_list
     self.version = version
     self.pkg_cfg = packaging.build_pkg_cfg(root)
     self.packages_json = packaging.build_pkg_index(self.pkg_cfg)
     self.base_page = self._create_base_page(root, base_url)
예제 #2
0
def generate_docs_from_scratch(env_root, base_url):
    docs_dir = get_sdk_docs_path(env_root)
    web_docs = webdocs.WebDocs(env_root, base_url)
    must_rewrite_links = True
    if base_url:
        must_rewrite_links = False
    clean_generated_docs(docs_dir)

    # py2.5 doesn't have ignore=, so we delete tempfiles afterwards. If we
    # required >=py2.6, we could use ignore=shutil.ignore_patterns("*~")
    for (dirpath, dirnames, filenames) in os.walk(docs_dir):
        for n in filenames:
            if n.endswith("~"):
                os.unlink(os.path.join(dirpath, n))

    # generate api docs from all packages
    os.mkdir(os.path.join(docs_dir, "packages"))
    # create the index file and save that
    pkg_cfg = packaging.build_pkg_cfg(env_root)
    index = json.dumps(packaging.build_pkg_index(pkg_cfg))
    index_path = os.path.join(docs_dir, "packages", 'index.json')
    open(index_path, 'w').write(index)

    # for each package, generate its docs
    for pkg_name, pkg in pkg_cfg['packages'].items():
        src_dir = pkg.root_dir
        package_dirname = os.path.basename(src_dir)
        dest_dir = os.path.join(docs_dir, "packages", package_dirname)
        os.mkdir(dest_dir)

        src_readme = os.path.join(src_dir, "README.md")
        if os.path.exists(src_readme):
            shutil.copyfile(src_readme, os.path.join(dest_dir, "README.md"))

        # create the package page
        package_filename = os.path.join(dest_dir, "index.html")
        if not os.path.exists(package_filename):
            package_doc_html = web_docs.create_package_page(pkg_name)
            replace_file(env_root, package_filename, package_doc_html,
                         must_rewrite_links)

        # generate all the API docs
        docs_src_dir = os.path.join(src_dir, "doc")
        if os.path.isdir(os.path.join(src_dir, "docs")):
            docs_src_dir = os.path.join(src_dir, "docs")
        generate_file_tree(env_root, docs_src_dir, web_docs, generate_api_doc,
                           must_rewrite_links)

    # generate all the guide docs
    dev_guide_src = os.path.join(docs_dir, "dev-guide-source")
    generate_file_tree(env_root, dev_guide_src, web_docs, generate_guide_doc,
                       must_rewrite_links)

    # make /md/dev-guide/welcome.html the top level index file
    doc_html, dest_dir, filename = generate_guide_doc(
        env_root, os.path.join(docs_dir, 'dev-guide-source', 'index.md'),
        web_docs)
    write_file(env_root, doc_html, docs_dir, 'index', False)
예제 #3
0
def generate_docs_from_scratch(env_root, base_url):
    docs_dir = get_sdk_docs_path(env_root)
    web_docs = webdocs.WebDocs(env_root, base_url)
    must_rewrite_links = True
    if base_url:
        must_rewrite_links = False
    clean_generated_docs(docs_dir)

    # py2.5 doesn't have ignore=, so we delete tempfiles afterwards. If we
    # required >=py2.6, we could use ignore=shutil.ignore_patterns("*~")
    for (dirpath, dirnames, filenames) in os.walk(docs_dir):
        for n in filenames:
            if n.endswith("~"):
                os.unlink(os.path.join(dirpath, n))

    # generate api docs from all packages
    os.mkdir(os.path.join(docs_dir, "packages"))
    # create the index file and save that
    pkg_cfg = packaging.build_pkg_cfg(env_root)
    index = json.dumps(packaging.build_pkg_index(pkg_cfg))
    index_path = os.path.join(docs_dir, "packages", "index.json")
    open(index_path, "w").write(index)

    # for each package, generate its docs
    for pkg_name, pkg in pkg_cfg["packages"].items():
        src_dir = pkg.root_dir
        package_dirname = os.path.basename(src_dir)
        dest_dir = os.path.join(docs_dir, "packages", package_dirname)
        os.mkdir(dest_dir)

        src_readme = os.path.join(src_dir, "README.md")
        if os.path.exists(src_readme):
            shutil.copyfile(src_readme, os.path.join(dest_dir, "README.md"))

        # create the package page
        package_filename = os.path.join(dest_dir, "index.html")
        if not os.path.exists(package_filename):
            package_doc_html = web_docs.create_package_page(pkg_name)
            replace_file(env_root, package_filename, package_doc_html, must_rewrite_links)

        # generate all the API docs
        docs_src_dir = os.path.join(src_dir, "doc")
        if os.path.isdir(os.path.join(src_dir, "docs")):
            docs_src_dir = os.path.join(src_dir, "docs")
        generate_file_tree(env_root, docs_src_dir, web_docs, generate_api_doc, must_rewrite_links)

    # generate all the guide docs
    dev_guide_src = os.path.join(docs_dir, "dev-guide-source")
    generate_file_tree(env_root, dev_guide_src, web_docs, generate_guide_doc, must_rewrite_links)

    # make /md/dev-guide/welcome.html the top level index file
    doc_html, dest_dir, filename = generate_guide_doc(
        env_root, os.path.join(docs_dir, "dev-guide-source", "index.md"), web_docs
    )
    write_file(env_root, doc_html, docs_dir, "index", False)
예제 #4
0
 def __init__(self,
              root,
              module_list,
              version=get_versions()["version"],
              base_url=None):
     self.root = root
     self.module_list = module_list
     self.version = version
     self.pkg_cfg = packaging.build_pkg_cfg(root)
     self.packages_json = packaging.build_pkg_index(self.pkg_cfg)
     self.base_page = self._create_base_page(root, base_url)
def generate_docs_from_scratch(env_root, base_url, docs_dir):
    web_docs = webdocs.WebDocs(env_root, base_url)
    clean_generated_docs(docs_dir)

    # py2.5 doesn't have ignore=, so we delete tempfiles afterwards. If we
    # required >=py2.6, we could use ignore=shutil.ignore_patterns("*~")
    for (dirpath, dirnames, filenames) in os.walk(docs_dir):
        for n in filenames:
            if n.endswith("~"):
                os.unlink(os.path.join(dirpath, n))

    # generate api docs from all packages
    os.mkdir(os.path.join(docs_dir, "packages"))
    # create the index file and save that
    pkg_cfg = packaging.build_pkg_cfg(env_root)
    index = json.dumps(packaging.build_pkg_index(pkg_cfg))
    index_path = os.path.join(docs_dir, "packages", 'index.json')
    open(index_path, 'w').write(index)

    # for each package, generate its docs
    for pkg_name, pkg in pkg_cfg['packages'].items():
        src_dir = pkg.root_dir
        dest_dir = os.path.join(docs_dir, "packages", pkg_name)
        os.mkdir(dest_dir)

        src_readme = os.path.join(src_dir, "README.md")
        if os.path.exists(src_readme):
            shutil.copyfile(src_readme,
                            os.path.join(dest_dir, "README.md"))

        # create the package page
        package_filename = os.path.join(dest_dir, pkg_name + ".html")
        if not os.path.exists(package_filename):
            package_doc_html = web_docs.create_package_page(src_dir)
            open(package_filename, "w").write(package_doc_html)

        # generate all the API docs
        docs_src_dir = os.path.join(src_dir, "doc")
        if os.path.isdir(os.path.join(src_dir, "docs")):
            docs_src_dir = os.path.join(src_dir, "docs")
        generate_file_tree(env_root, docs_src_dir, web_docs, generate_api_doc)

    # generate all the guide docs
    dev_guide_src = os.path.join(env_root, DOCS_DIR, "dev-guide-source")
    generate_file_tree(env_root, dev_guide_src, web_docs, generate_guide_doc)

    # make /md/dev-guide/welcome.html the top level index file
    shutil.copy(os.path.join(env_root, DOCS_DIR, 'dev-guide', 'welcome.html'), \
                 os.path.join(docs_dir, 'index.html'))
 def __init__(self, root, base_url = None):
     self.root = root
     self.pkg_cfg = packaging.build_pkg_cfg(root)
     self.packages_json = packaging.build_pkg_index(self.pkg_cfg)
     self.base_page = self._create_base_page(root, base_url)
예제 #7
0
def generate_static_docs(env_root, tgz_filename, base_url = ''):
    web_docs = webdocs.WebDocs(env_root, base_url)
    server = Server(env_root, web_docs,
                    task_queue=None,
                    expose_privileged_api=False)
    staging_dir = os.path.join(env_root, "addon-sdk-docs")
    if os.path.exists(staging_dir):
        shutil.rmtree(staging_dir)

    # first, copy static-files
    shutil.copytree(server.root, staging_dir)
    # py2.5 doesn't have ignore=, so we delete tempfiles afterwards. If we
    # required >=py2.6, we could use ignore=shutil.ignore_patterns("*~")
    for (dirpath, dirnames, filenames) in os.walk(staging_dir):
        for n in filenames:
            if n.endswith("~"):
                os.unlink(os.path.join(dirpath, n))

    # then copy docs from each package
    os.mkdir(os.path.join(staging_dir, "packages"))

    pkg_cfg = packaging.build_pkg_cfg(server.env_root)

    # starting with the (generated) index file
    index = json.dumps(packaging.build_pkg_index(pkg_cfg))
    index_path = os.path.join(staging_dir, "packages", 'index.json')
    open(index_path, 'w').write(index)

    # and every doc-like thing in the package
    for pkg_name, pkg in pkg_cfg['packages'].items():
        src_dir = pkg.root_dir
        dest_dir = os.path.join(staging_dir, "packages", pkg_name)
        if not os.path.exists(dest_dir):
            os.mkdir(dest_dir)

        # TODO: This is a DRY violation from main.js. We should
        # really move the common logic/names to cuddlefish.packaging.
        src_readme = os.path.join(src_dir, "README.md")
        if os.path.exists(src_readme):
            shutil.copyfile(src_readme,
                            os.path.join(dest_dir, "README.md"))

        # create the package page
        package_doc_html = web_docs.create_package_page(src_dir)
        open(os.path.join(dest_dir, pkg_name + ".html"), "w")\
            .write(package_doc_html)

        docs_src_dir = os.path.join(src_dir, "docs")
        docs_dest_dir = os.path.join(dest_dir, "docs")
        if not os.path.exists(docs_dest_dir):
            os.mkdir(docs_dest_dir)
        for (dirpath, dirnames, filenames) in os.walk(docs_src_dir):
            assert dirpath.startswith(docs_src_dir)
            relpath = dirpath[len(docs_src_dir)+1:]
            for dirname in dirnames:
                dest_path = os.path.join(docs_dest_dir, relpath, dirname)
                if not os.path.exists(dest_path):
                    os.mkdir(dest_path)
            for filename in filenames:
                if filename.endswith("~"):
                    continue
                src_path = os.path.join(dirpath, filename)
                dest_path = os.path.join(docs_dest_dir, relpath, filename)
                shutil.copyfile(src_path, dest_path)
                if filename.endswith(".md"):
                    # parse and JSONify the API docs
                    docs_md = open(src_path, 'r').read()
                    docs_parsed = list(apiparser.parse_hunks(docs_md))
                    docs_json = json.dumps(docs_parsed)
                    open(dest_path + ".json", "w").write(docs_json)
                    # write the HTML div files
                    docs_div = apirenderer.json_to_div(docs_parsed, src_path)
                    open(dest_path + ".div", "w").write(docs_div)
                    # write the standalone HTML files
                    docs_html = web_docs.create_module_page(src_path)
                    open(dest_path[:-3] + ".html", "w").write(docs_html)

    dev_guide_src = os.path.join(server.root, 'md', 'dev-guide')
    dev_guide_dest = os.path.join(staging_dir, 'dev-guide')
    if not os.path.exists(dev_guide_dest):
        os.mkdir(dev_guide_dest)
    for (dirpath, dirnames, filenames) in os.walk(dev_guide_src):
        assert dirpath.startswith(dev_guide_src)
        relpath = dirpath[len(dev_guide_src)+1:]
        for dirname in dirnames:
            dest_path = os.path.join(dev_guide_dest, relpath, dirname)
            if not os.path.exists(dest_path):
                os.mkdir(dest_path)
        for filename in filenames:
            if filename.endswith("~"):
                continue
            src_path = os.path.join(dirpath, filename)
            dest_path = os.path.join(dev_guide_dest, relpath, filename)
            if filename.endswith(".md"):
                # write the standalone HTML files
                docs_html = web_docs.create_guide_page(src_path)
                open(dest_path[:-3] + ".html", "w").write(docs_html)

    # make /md/dev-guide/welcome.html the top level index file
    shutil.copy(os.path.join(dev_guide_dest, 'welcome.html'), \
                os.path.join(staging_dir, 'index.html'))


    # finally, build a tarfile out of everything
    tgz = tarfile.open(tgz_filename, 'w:gz')
    tgz.add('addon-sdk-docs', 'addon-sdk-docs')
    tgz.close()
    shutil.rmtree(staging_dir)
예제 #8
0
def generate_static_docs(env_root, tgz_filename, base_url=''):
    web_docs = webdocs.WebDocs(env_root, base_url)
    server = Server(env_root,
                    web_docs,
                    task_queue=None,
                    expose_privileged_api=False)
    staging_dir = os.path.join(env_root, "addon-sdk-docs")
    if os.path.exists(staging_dir):
        shutil.rmtree(staging_dir)

    # first, copy static-files
    shutil.copytree(server.root, staging_dir)
    # py2.5 doesn't have ignore=, so we delete tempfiles afterwards. If we
    # required >=py2.6, we could use ignore=shutil.ignore_patterns("*~")
    for (dirpath, dirnames, filenames) in os.walk(staging_dir):
        for n in filenames:
            if n.endswith("~"):
                os.unlink(os.path.join(dirpath, n))

    # then copy docs from each package
    os.mkdir(os.path.join(staging_dir, "packages"))

    pkg_cfg = packaging.build_pkg_cfg(server.env_root)

    # starting with the (generated) index file
    index = json.dumps(packaging.build_pkg_index(pkg_cfg))
    index_path = os.path.join(staging_dir, "packages", 'index.json')
    open(index_path, 'w').write(index)

    # and every doc-like thing in the package
    for pkg_name, pkg in pkg_cfg['packages'].items():
        src_dir = pkg.root_dir
        dest_dir = os.path.join(staging_dir, "packages", pkg_name)
        if not os.path.exists(dest_dir):
            os.mkdir(dest_dir)

        # TODO: This is a DRY violation from main.js. We should
        # really move the common logic/names to cuddlefish.packaging.
        src_readme = os.path.join(src_dir, "README.md")
        if os.path.exists(src_readme):
            shutil.copyfile(src_readme, os.path.join(dest_dir, "README.md"))

        # create the package page
        package_doc_html = web_docs.create_package_page(src_dir)
        open(os.path.join(dest_dir, pkg_name + ".html"), "w")\
            .write(package_doc_html)

        docs_src_dir = os.path.join(src_dir, "docs")
        docs_dest_dir = os.path.join(dest_dir, "docs")
        if not os.path.exists(docs_dest_dir):
            os.mkdir(docs_dest_dir)
        for (dirpath, dirnames, filenames) in os.walk(docs_src_dir):
            assert dirpath.startswith(docs_src_dir)
            relpath = dirpath[len(docs_src_dir) + 1:]
            for dirname in dirnames:
                dest_path = os.path.join(docs_dest_dir, relpath, dirname)
                if not os.path.exists(dest_path):
                    os.mkdir(dest_path)
            for filename in filenames:
                if filename.endswith("~"):
                    continue
                src_path = os.path.join(dirpath, filename)
                dest_path = os.path.join(docs_dest_dir, relpath, filename)
                shutil.copyfile(src_path, dest_path)
                if filename.endswith(".md"):
                    # parse and JSONify the API docs
                    docs_md = open(src_path, 'r').read()
                    docs_parsed = list(apiparser.parse_hunks(docs_md))
                    docs_json = json.dumps(docs_parsed)
                    open(dest_path + ".json", "w").write(docs_json)
                    # write the HTML div files
                    docs_div = apirenderer.json_to_div(docs_parsed, src_path)
                    open(dest_path + ".div", "w").write(docs_div)
                    # write the standalone HTML files
                    docs_html = web_docs.create_module_page(src_path)
                    open(dest_path[:-3] + ".html", "w").write(docs_html)

    dev_guide_src = os.path.join(server.root, 'md', 'dev-guide')
    dev_guide_dest = os.path.join(staging_dir, 'dev-guide')
    if not os.path.exists(dev_guide_dest):
        os.mkdir(dev_guide_dest)
    for (dirpath, dirnames, filenames) in os.walk(dev_guide_src):
        assert dirpath.startswith(dev_guide_src)
        relpath = dirpath[len(dev_guide_src) + 1:]
        for dirname in dirnames:
            dest_path = os.path.join(dev_guide_dest, relpath, dirname)
            if not os.path.exists(dest_path):
                os.mkdir(dest_path)
        for filename in filenames:
            if filename.endswith("~"):
                continue
            src_path = os.path.join(dirpath, filename)
            dest_path = os.path.join(dev_guide_dest, relpath, filename)
            if filename.endswith(".md"):
                # write the standalone HTML files
                docs_html = web_docs.create_guide_page(src_path)
                open(dest_path[:-3] + ".html", "w").write(docs_html)

    # make /md/dev-guide/welcome.html the top level index file
    shutil.copy(os.path.join(dev_guide_dest, 'welcome.html'), \
                os.path.join(staging_dir, 'index.html'))

    # finally, build a tarfile out of everything
    tgz = tarfile.open(tgz_filename, 'w:gz')
    tgz.add('addon-sdk-docs', 'addon-sdk-docs')
    tgz.close()
    shutil.rmtree(staging_dir)
예제 #9
0
 def __init__(self, root, base_url=None):
     self.root = root
     self.pkg_cfg = packaging.build_pkg_cfg(root)
     self.packages_json = packaging.build_pkg_index(self.pkg_cfg)
     self.base_page = self._create_base_page(root, base_url)
예제 #10
0
 def _create_packages_json(self, root):
     pkg_cfg = packaging.build_pkg_cfg(root)
     return packaging.build_pkg_index(pkg_cfg)
예제 #11
0
 def _create_packages_json(self, root):
     pkg_cfg = packaging.build_pkg_cfg(root)
     return packaging.build_pkg_index(pkg_cfg)