diff options
author | Adam Kocoloski <kocolosk@apache.org> | 2009-08-30 17:56:56 +0000 |
---|---|---|
committer | Adam Kocoloski <kocolosk@apache.org> | 2009-08-30 17:56:56 +0000 |
commit | 6c5a22e7afd7530148f3eef6d4722cd725f28851 (patch) | |
tree | 80862f0920c1f7cb55e7279fd5acfbc27286194a /src/couchdb/couch_app.erl | |
parent | 422d815b3baf1a0152429d02257aeaeaf6fa471c (diff) |
refactor CouchDB startup procedure, see COUCHDB-216 for details
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@809392 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/couchdb/couch_app.erl')
-rw-r--r-- | src/couchdb/couch_app.erl | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/couchdb/couch_app.erl b/src/couchdb/couch_app.erl new file mode 100644 index 00000000..98615e50 --- /dev/null +++ b/src/couchdb/couch_app.erl @@ -0,0 +1,53 @@ +% Licensed under the Apache License, Version 2.0 (the "License"); you may not +% use this file except in compliance with the License. You may obtain a copy of +% the License at +% +% http://www.apache.org/licenses/LICENSE-2.0 +% +% Unless required by applicable law or agreed to in writing, software +% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +% License for the specific language governing permissions and limitations under +% the License. + +-module(couch_app). + +-behaviour(application). + +-include("couch_db.hrl"). + +-export([start/2, stop/1]). + +start(_Type, DefaultIniFiles) -> + IniFiles = get_ini_files(DefaultIniFiles), + case start_apps([crypto, sasl, inets, oauth, ibrowse, mochiweb]) of + ok -> + couch_server_sup:start_link(IniFiles); + {error, Reason} -> + {error, Reason} + end. + +stop(_) -> + ok. + +get_ini_files(Default) -> + case init:get_argument(couch_ini) of + error -> + Default; + {ok, [[]]} -> + Default; + {ok, [Values]} -> + Values + end. + +start_apps([]) -> + ok; +start_apps([App|Rest]) -> + case application:start(App) of + ok -> + start_apps(Rest); + {error, {already_started, App}} -> + start_apps(Rest); + {error, _Reason} -> + {error, {app_would_not_start, App}} + end. |