Esempio n. 1
0
def pushapps(ui, source, dest, *args, **opts):
    export = opts.get('export', False)
    noatomic = opts.get('no_atomic', False)
    dbs = ui.get_dbs(dest)
    apps = []
    source = os.path.normpath(os.path.join(os.getcwd(), source))
    for d in os.listdir(source):
        appdir = os.path.join(source, d)
        print appdir
        if os.path.isdir(appdir) and os.path.isfile(os.path.join(appdir, '.couchapprc')):
            localdoc = app.document(ui, appdir)
            hooks.hook(ui, appdir, "pre-push", dbs=dbs, pushapps=True)
            if export or not noatomic:
                apps.append(localdoc)
            else:
                localdoc.push(dbs, True)
            hooks.hook(ui, appdir, "post-push", dbs=dbs, pushapps=True)
    if apps:
        if export:
            docs = []
            docs.append([localdoc.doc() for localdoc in apps])
            jsonobj = {'docs': docs}
            if opts.get('output') is not None:
                ui.write_json(opts.get('output'), json.dumps(jsonobj))
            else:
                print json.dumps(jsonobj)
            return 0
        else:
            for db in dbs:
                docs = []
                docs = [doc.doc(db) for doc in apps]
                db.save_docs(docs)
    return 0
Esempio n. 2
0
def generate(ui, path, *args, **opts):
    dest = path
    if len(args) < 1:
        raise AppError("Can't generate function, name or path is missing")
        
    if len(args) == 1:
        kind="app"
        name = args[0]
    elif len(args) == 2:
        kind = args[0]
        name = args[1]
    elif len(args) >= 3:
        kind = args[0]
        dest = args[1]
        name = args[2]
        
    if dest is None:
        if kind == "app":
            dest = os.path.normpath(os.path.join(os.getcwd(), ".", name))
            opts['create'] = True
        else:
            raise AppError("You aren't in a couchapp.")
    
    hooks.hook(ui, dest, "pre-generate")    
    app.generate(ui, dest, kind, name, **opts)
    _maybe_reload(ui, path, dest)
    hooks.hook(ui, dest, "post-generate")
       
    return 0
Esempio n. 3
0
def clone(ui, source, *args, **opts):
    if len(args) > 0:
        dest = args[0]
    else:
        dest = None 
    hooks.hook(ui, dest, "pre-clone", source=source)
    app.clone(ui, source, dest, rev=opts.get('rev'))
    hooks.hook(ui, dest, "post-clone", source=source)
    return 0
Esempio n. 4
0
def pushapps(ui, source, dest, *args, **opts):
    export = opts.get('export', False)
    noatomic = opts.get('no_atomic', False)
    browse = opts.get('browse', False)
    dbs = ui.get_dbs(dest)
    apps = []
    source = os.path.normpath(os.path.join(os.getcwd(), source))
    for d in os.listdir(source):
        appdir = os.path.join(source, d)
        if os.path.isdir(appdir) and os.path.isfile(os.path.join(appdir, 
                                        '.couchapprc')):
            localdoc = app.document(ui, appdir)
            hooks.hook(ui, appdir, "pre-push", dbs=dbs, pushapps=True)
            if export or not noatomic:
                apps.append(localdoc)
            else:
                localdoc.push(dbs, True, browse)
            hooks.hook(ui, appdir, "post-push", dbs=dbs, pushapps=True)
    if apps:
        if export:
            docs = []
            docs.append([localdoc.doc() for localdoc in apps])
            jsonobj = {'docs': docs}
            if opts.get('output') is not None:
                ui.write_json(opts.get('output'), json.dumps(jsonobj))
            else:
                print json.dumps(jsonobj)
            return 0
        else:
            for db in dbs:
                docs = []
                docs = [doc.doc(db) for doc in apps]
                try:
                    db.save_docs(docs)
                except BulkSaveError, e:
                    docs1 = []
                    for doc in e.errors:
                        try:
                            doc['_rev'] = db.last_rev(doc['_id'])
                            docs1.append(doc)
                        except ResourceNotFound:
                            pass 
                if docs1:
                    db.save_docs(docs1)
Esempio n. 5
0
def push(ui, path, *args, **opts):
    export = opts.get('export', False)
    atomic = opts.get('no_atomic', False)
    browse = opts.get('browse', False)
    dest = None
    doc_path = None
    if len(args) < 2:
        if export:
            if path is None and args:
                doc_path = args[0]
            else:
                doc_path = path
        else:
            doc_path = path
            if args:
                dest = args[0]
    else:
        doc_path = os.path.normpath(os.path.join(os.getcwd(), args[0]))
        dest = args[1]
    if doc_path is None:
        raise AppError("You aren't in a couchapp.")
    
    _maybe_reload(ui, path, doc_path)
    
    localdoc = app.document(ui, doc_path, create=False, docid=opts.get('docid'))
    if export:
        if opts.get('output'):
            ui.write_json(opts.get('output'), str(localdoc))
        else:
            print str(localdoc)
        return 0
    dbs = ui.get_dbs(dest)
    hooks.hook(ui, doc_path, "pre-push", dbs=dbs)    
    localdoc.push(dbs, atomic, browse)
    hooks.hook(ui, doc_path, "post-push", dbs=dbs)
    
    docspath = os.path.join(doc_path, '_docs')
    if os.path.exists(docspath):
        pushdocs(ui, docspath, dest, *args, **opts)
    return 0
Esempio n. 6
0
def vendor(ui, path, *args, **opts):
    if len(args) < 1:
        raise AppError("missing command")
    dest = path
    args = list(args)
    cmd = args.pop(0)
    if cmd == "install":
        if len(args) < 1:
            raise AppError("missing source")
        if len(args) == 1:
            source = args.pop(0)
            
        elif len(args) > 1:
            dest = args.pop(0)
            source = args.pop(1)
        
        if dest is None:
            raise AppError("You aren't in a couchapp.")
            
        dest = os.path.normpath(os.path.join(os.getcwd(), dest))
        _maybe_reload(ui, path, dest)
        hooks.hook(ui, dest, "pre-vendor", source=source, action="install")
        app.vendor_install(ui, dest, source, *args, **opts)
        hooks.hook(ui, dest, "post-vendor", source=source, action="install")
    else:
        vendorname = None
        if len(args) == 1:
            vendorname=args.pop(0)
        elif len(args) >= 2:
            dest = args.pop(0)
            vendorname=args.pop(1)
        if dest is None:
            raise AppError("You aren't in a couchapp.")
            
        dest = os.path.normpath(os.path.join(os.getcwd(), dest))
        hooks.hook(ui, dest, "pre-vendor", name=vendorname, action="update")
        app.vendor_update(ui, dest, vendorname, *args, **opts)
        hooks.hook(ui, dest, "pre-vendor", name=vendorname, action="update")
    return 0