예제 #1
0
def make_xontribs():
    md = xontrib_metadata()
    names = sorted(d['name'] for d in md['xontribs'] if 'name' in d)
    s = ('.. list-table::\n' '    :header-rows: 0\n\n')
    table = []
    ncol = 3
    row = '    {0} - :ref:`{1} <{2}>`'
    for i, name in enumerate(names):
        star = '*' if i % ncol == 0 else ' '
        table.append(row.format(star, name, name.lower()))
    table.extend(['      -'] * ((ncol - len(names) % ncol) % ncol))
    s += '\n'.join(table) + '\n\n'
    s += ('Information\n' '-----------\n\n')
    sec = ('.. _{low}:\n\n'
           '{title}\n'
           '{under}\n'
           ':Website: {url}\n'
           ':Package: {pkg}\n\n'
           '{desc}\n\n'
           '{inst}'
           '-------\n\n')
    for name in names:
        for d in md['xontribs']:
            if d.get('name', None) == name:
                break
        title = name
        under = '.' * len(title)
        desc = d.get('description', '')
        if not isinstance(desc, str):
            desc = ''.join(desc)
        pkgname = d.get('package', None)
        if pkgname is None:
            pkg = 'unknown'
            inst = ''
        else:
            pd = md['packages'].get(pkgname, {})
            pkg = pkgname
            if 'url' in pd:
                pkg = '`{0} <{1}>`_'.format(pkg, pd['url'])
            if 'license' in pd:
                pkg = pkg + ', ' + pd['license']
            inst = ''
            installd = pd.get('install', {})
            if len(installd) > 0:
                inst = ('**Installation:**\n\n' '.. code-block:: xonsh\n\n')
                for k, v in sorted(pd.get('install', {}).items()):
                    cmd = "\n    ".join(v.split('\n'))
                    inst += ('    # install with {k}\n'
                             '    {cmd}\n\n').format(k=k, cmd=cmd)
        s += sec.format(low=name.lower(),
                        title=title,
                        under=under,
                        url=d.get('url', 'unknown'),
                        desc=desc,
                        pkg=pkg,
                        inst=inst)
    s = s[:-9]
    fname = os.path.join(os.path.dirname(__file__), 'xontribsbody')
    with open(fname, 'w') as f:
        f.write(s)
예제 #2
0
파일: conf.py 프로젝트: vsajip/xonsh
def make_xontribs():
    md = xontrib_metadata()
    names = sorted(d['name'] for d in md['xontribs'] if 'name' in d)
    s = ('.. list-table::\n'
         '    :header-rows: 0\n\n')
    table = []
    ncol = 5
    row = '    {0} - :ref:`{1} <{2}>`'
    for i, name in enumerate(names):
        star = '*' if i%ncol == 0 else ' '
        table.append(row.format(star, name, name.lower()))
    table.extend(['      -']*((ncol - len(names)%ncol)%ncol))
    s += '\n'.join(table) + '\n\n'
    s += ('Information\n'
          '-----------\n\n')
    sec = ('.. _{low}:\n\n'
           '{title}\n'
           '{under}\n'
           ':Website: {url}\n'
           ':Package: {pkg}\n\n'
           '{desc}\n\n'
           '{inst}'
           '-------\n\n')
    for name in names:
        for d in md['xontribs']:
            if d.get('name', None) == name:
                break
        title = name
        under = '.' * len(title)
        desc = d.get('description', '')
        if not isinstance(desc, str):
            desc = ''.join(desc)
        pkgname = d.get('package', None)
        if pkgname is None:
            pkg = 'unknown'
            inst = ''
        else:
            pd = md['packages'].get(pkgname, {})
            pkg = pkgname
            if 'url' in pd:
                pkg = '`{0} website <{1}>`_'.format(pkg, pd['url'])
            if 'license' in pd:
                pkg = pkg + ', ' + pd['license']
            inst = ''
            installd = pd.get('install', {})
            if len(installd) > 0:
                inst = ('**Installation:**\n\n'
                        '.. code-block:: xonsh\n\n')
                for k, v in sorted(pd.get('install', {}).items()):
                    cmd = "\n    ".join(v.split('\n'))
                    inst += ('    # install with {k}\n'
                             '    {cmd}\n\n').format(k=k, cmd=cmd)
        s += sec.format(low=name.lower(), title=title, under=under,
                        url=d.get('url', 'unknown'), desc=desc,
                        pkg=pkg, inst=inst)
    s = s[:-9]
    fname = os.path.join(os.path.dirname(__file__), 'xontribsbody')
    with open(fname, 'w') as f:
        f.write(s)
예제 #3
0
파일: xonfig.py 프로젝트: barry-scott/xonsh
def make_xontribs_wiz():
    """Makes a xontrib wizard."""
    md = xontrib_metadata()
    pkgs = [
        md['packages'].get(d.get('package', None), {}) for d in md['xontribs']
    ]
    w = _make_flat_wiz(make_xontrib, md['xontribs'], pkgs)
    return w
예제 #4
0
파일: xonfig.py 프로젝트: timgates42/xonsh
def make_xontribs_wiz():
    """Makes a xontrib wizard."""
    md = xontrib_metadata()
    pkgs = [
        md["packages"].get(d.get("package", None), {}) for d in md["xontribs"]
    ]
    w = _make_flat_wiz(make_xontrib, md["xontribs"], pkgs)
    return w
예제 #5
0
def _list_installed_xontribs():
    meta = xx.xontrib_metadata()
    installed = []
    for md in meta['xontribs']:
        name = md['name']
        spec = xx.find_xontrib(name)
        if spec is not None:
            installed.append(spec.name.rsplit('.')[-1])

    return installed
예제 #6
0
def _list_installed_xontribs():
    meta = xx.xontrib_metadata()
    installed = []
    for md in meta["xontribs"]:
        name = md["name"]
        spec = xx.find_xontrib(name)
        if spec is not None:
            installed.append(spec.name.rsplit(".")[-1])

    return installed
예제 #7
0
def make_xontribs():
    md = xontrib_metadata()
    names = sorted(d["name"] for d in md["xontribs"] if "name" in d)
    s = ".. list-table::\n" "    :header-rows: 0\n\n"
    table = []
    ncol = 5
    row = "    {0} - :ref:`{1} <{2}>`"
    for i, name in enumerate(names):
        star = "*" if i % ncol == 0 else " "
        table.append(row.format(star, name, name.lower()))
    table.extend(["      -"] * ((ncol - len(names) % ncol) % ncol))
    s += "\n".join(table) + "\n\n"
    s += "Information\n" "-----------\n\n"
    sec = (".. _{low}:\n\n"
           "{title}\n"
           "{under}\n"
           ":Website: {url}\n"
           ":Package: {pkg}\n\n"
           "{desc}\n\n"
           "{inst}\n\n"
           "{usage}"
           "-------\n\n")
    for name in names:
        for d in md["xontribs"]:
            if d.get("name", None) == name:
                break
        title = name
        under = "." * len(title)
        desc = d.get("description", "")
        if not isinstance(desc, str):
            desc = "".join(desc)
        pkgname = d.get("package", None)
        if pkgname is None:
            pkg = "unknown"
            inst = ""
            usage = ""
        else:
            pd = md["packages"].get(pkgname, {})
            pkg = pkgname
            if "url" in pd:
                pkg = "`{0} website <{1}>`_".format(pkg, pd["url"])
            if "license" in pd:
                pkg = pkg + ", " + pd["license"]
            inst = ""
            installd = pd.get("install", {})
            if pkgname == "xonsh":
                inst = "This xontrib is preinstalled with xonsh.\n\n"
            elif len(installd) > 0:
                inst = "**Installation:**\n\n" ".. code-block:: xonsh\n\n"
                for k, v in sorted(pd.get("install", {}).items()):
                    cmd = "\n    ".join(v.split("\n"))
                    inst += ("    # install with {k}\n"
                             "    {cmd}").format(k=k, cmd=cmd)
            usage = ("**Usage:**\n\n"
                     "Run the following command to enable (or add "
                     "it to your :doc:`.xonshrc </xonshrc>` file to enable "
                     "on startup.)\n\n"
                     ".. code-block:: xonsh\n\n")
            usage += "    xontrib load {}\n\n".format(name)
        s += sec.format(
            low=name.lower(),
            title=title,
            under=under,
            url=d.get("url", "unknown"),
            desc=desc,
            pkg=pkg,
            inst=inst,
            usage=usage,
        )
    s = s[:-9]
    fname = os.path.join(os.path.dirname(__file__), "xontribsbody")
    with open(fname, "w") as f:
        f.write(s)
예제 #8
0
def test_load_xontrib_metadata():
    # Simply tests that the xontribs JSON files isn't malformed.
    xontrib_metadata()
예제 #9
0
파일: xonfig.py 프로젝트: Siecje/xonsh
def make_xontribs_wiz():
    """Makes a xontrib wizard."""
    md = xontrib_metadata()
    pkgs = [md['packages'].get(d.get('package', None), {}) for d in md['xontribs']]
    w = _make_flat_wiz(make_xontrib, md['xontribs'], pkgs)
    return w
예제 #10
0
def test_load_xontrib_metadata():
    # Simply tests that the xontribs JSON files isn't malformed.
    xontrib_metadata()
예제 #11
0
파일: xonfig.py 프로젝트: Carreau/xonsh
def make_xontribs_wiz():
    """Makes a xontrib wizard."""
    md = xontrib_metadata()
    pkgs = [md["packages"].get(d.get("package", None), {}) for d in md["xontribs"]]
    w = _make_flat_wiz(make_xontrib, md["xontribs"], pkgs)
    return w