bin/clone_deps.py
author Sylvain Thénault <sylvain.thenault@logilab.fr>
Mon, 25 Oct 2010 15:31:29 +0200
changeset 6622 27402fe6a94a
parent 6304 228921b064c3
child 7896 4c954e1e73ef
permissions -rwxr-xr-x
[core schema] CWSourceHostConfig.match_host only unique per source
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6304
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
     1
#!/usr/bin/python
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
     2
import os
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
     3
import sys
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
     4
from subprocess import call, Popen, PIPE
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
     5
try:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
     6
    from mercurial.dispatch import dispatch as hg_call
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
     7
except ImportError:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
     8
    print '-' * 20
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
     9
    print "mercurial module is not reachable from this Python interpreter"
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    10
    print "trying from command line ..."
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    11
    tryhg = os.system('hg --version')
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    12
    if tryhg:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    13
        print 'mercurial seems to unavailable, please install it'
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    14
        raise
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    15
    print 'found it, ok'
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    16
    print '-' * 20
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    17
    def hg_call(args):
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    18
        call(['hg'] + args)
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    19
from urllib import urlopen
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    20
from os import path as osp, pardir
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    21
from os.path import normpath, join, dirname
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    22
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    23
BASE_URL = 'http://www.logilab.org/hg/'
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    24
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    25
to_clone = ['fyzz', 'yams', 'rql',
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    26
            'logilab/common', 'logilab/constraint', 'logilab/database',
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    27
            'logilab/devtools', 'logilab/mtconverter',
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    28
            'cubes/blog', 'cubes/calendar', 'cubes/card', 'cubes/comment',
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    29
            'cubes/datafeed', 'cubes/email', 'cubes/file', 'cubes/folder',
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    30
            'cubes/forgotpwd', 'cubes/keyword', 'cubes/link',
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    31
            'cubes/mailinglist', 'cubes/nosylist', 'cubes/person',
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    32
            'cubes/preview', 'cubes/registration', 'cubes/rememberme',
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    33
            'cubes/tag', 'cubes/vcsfile', 'cubes/zone']
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    34
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    35
# a couple of functions to be used to explore available
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    36
# repositories and cubes
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    37
def list_repos(repos_root):
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    38
    assert repos_root.startswith('http://')
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    39
    hgwebdir_repos = (repo.strip()
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    40
                      for repo in urlopen(repos_root + '?style=raw').readlines()
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    41
                      if repo.strip())
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    42
    prefix = osp.commonprefix(hgwebdir_repos)
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    43
    return (repo[len(prefix):].strip('/')
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    44
            for repo in hgwebdir_repos)
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    45
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    46
def list_all_cubes(base_url=BASE_URL):
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    47
    all_repos = list_repos(base_url)
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    48
    #search for cubes
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    49
    for repo in all_repos:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    50
        if repo.startswith('cubes'):
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    51
            to_clone.append(repo)
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    52
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    53
def get_latest_debian_tag(path):
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    54
    proc = Popen(['hg', '-R', path, 'tags'], stdout=PIPE)
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    55
    out, _err = proc.communicate()
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    56
    for line in out.splitlines():
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    57
        if 'debian-version' in line:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    58
            return line.split()[0]
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    59
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    60
def main():
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    61
    if len(sys.argv) == 1:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    62
        base_url = BASE_URL
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    63
    elif len(sys.argv) == 2:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    64
        base_url = sys.argv[1]
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    65
    else:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    66
        print >> sys.stderr, 'usage %s [base_url]' %  sys.argv[0]
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    67
        sys.exit(1)
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    68
    print len(to_clone), 'repositories will be cloned'
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    69
    base_dir = normpath(join(dirname(__file__), pardir, pardir))
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    70
    os.chdir(base_dir)
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    71
    not_updated = []
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    72
    for repo in to_clone:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    73
        url = base_url + repo
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    74
        if '/' not in repo:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    75
            target_path = repo
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    76
        else:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    77
            assert repo.count('/') == 1, repo
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    78
            directory, repo = repo.split('/')
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    79
            if not osp.isdir(directory):
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    80
                os.mkdir(directory)
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    81
                open(join(directory, '__init__.py'), 'w').close()
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    82
            target_path = osp.join(directory, repo)
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    83
        if osp.exists(target_path):
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    84
            print target_path, 'seems already cloned. Skipping it.'
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    85
        else:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    86
            hg_call(['clone', '-U', url, target_path])
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    87
            tag = get_latest_debian_tag(target_path)
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    88
            if tag:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    89
                print 'updating to', tag
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    90
                hg_call(['update', '-R', target_path, tag])
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    91
            else:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    92
                not_updated.append(target_path)
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    93
    print """
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    94
CubicWeb dependencies and standard set of cubes have been fetched and
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    95
update to the latest stable version.
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    96
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    97
You should ensure your PYTHONPATH contains `%(basedir)s`.
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    98
You might want to read the environment configuration section of the documentation
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    99
at http://docs.cubicweb.org/admin/setup.html#environment-configuration
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   100
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   101
You can find more cubes at http://www.cubicweb.org.
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   102
Clone them from `%(baseurl)scubes/` into the `%(basedir)s%(sep)scubes%(sep)s` directory.
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   103
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   104
To get started you may read http://docs.cubicweb.org/tutorials/base/index.html.
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   105
""" % {'basedir': os.getcwd(), 'baseurl': base_url, 'sep': os.sep}
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   106
    if not_updated:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   107
        print >> sys.stderr, 'WARNING: The following repositories were not updated (no debian tag found):'
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   108
        for path in not_updated:
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   109
            print >> sys.stderr, '\t-', path
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   110
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   111
if __name__ == '__main__':
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   112
    main()
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   113
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   114
228921b064c3 [doc,bin] add script to fetch & update most cw dependencies + some cubes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
   115