akatov / couchdb-bootstrap

Bootstrap projects: configure CouchDB, setup security, deploy ddocs and create users.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CouchDB Bootstrap

Bootstrap CouchDB server from CLI or API.

Build Status

  • set and override /_config
  • create databases (unless existent)
  • create and update database _security objects
  • create and update user accounts
  • create and update design documents
  • create and update replication documents
  • create and update seed documents

CouchDB Bootstrap combines different small tools, which can also be used independently. Each of those tools come has a similar API and is shipped with a CLI:

Directory

Think about CouchDB Bootstrap as a toplevel manager, which reads a directory of databases and optional _config and hands each file over to the appropriate tool:

project/couchdb
├── _config.json
├── _replicator
│   ├── setup-alice.json
│   └── setup-bob.json
├── _users
│   ├── alice.json
│   └── bob.json
├── myapp
│   ├── _design
│   │   └── myapp.js
│   ├── _security.json
│   └── adoc.json
├── myapp-alice
│   ├── doc1.json
│   ├── doc2-commonjs.js
│   └── _security.json
└── myapp-bob
    └── _security.json

In the directory tree above project/couchdb/_config.json is handed to couchdb-configure, project/couchdb/_replicator/setup-alice.json, project/couchdb/myapp/_design/myapp.js project/couchdb/myapp/adoc.json are handed (beside others) to couchdb-push and project/couchdb/myapp-alice/_security.json to couchdb-secure.

See couchdb-compile for more details about the CouchDB Filesystem Mapping on a document / security object / config level.

API

bootstrap(url, source[, options], callback)
  • url - CouchDB server URL
  • source - directory holding the bootstrap tree
  • options.index - When set to true, folders are searched for index.js, which, if present, is treated as CommonJS module. Default is false.
  • options.concurrency - Limit number of concurrent requests. Defaults to 100.
  • options.multipart - When set to true, attachments are saved via multipart api. Default is false.
  • options.watch - When set to true, documents are pushed on filesystem change. Default is false.
  • options.mapDbName - Set to object or function to map directories to custom database names
  • callback - called when done with a response object describing the status of all operations.

API Example

var bootstrap = require('couchdb-bootstrap')
bootstrap('http://localhost:5984', 'project/couchdb', function(error, response) {
  // here we go
})

CLI

couchdb-bootstrap URL [SOURCE] [OPTIONS]

Or use the shortcurt cdbb.

When SOURCE is omitted, the current directory will be used. options.index is always true. OPTIONS can be '--concurrency', --multipart, --watch or --mapDbName='{"old-name": "new-name"}', see above.

CLI Example

couchdb-bootstrap http://localhost:5984 project/couchdb

Tests

npm test

About

Bootstrap projects: configure CouchDB, setup security, deploy ddocs and create users.

License:Other


Languages

Language:JavaScript 100.0%