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
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
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
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)
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
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