% 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.

{sys, [
    {lib_dirs, ["../src"]},
    {rel, "couchdb", "3.0.0", [
        %% stdlib
        asn1,
        compiler,
        crypto,
        inets,
        kernel,
        runtime_tools,
        sasl,
        ssl,
        stdlib,
        syntax_tools,
        xmerl,
        %% couchdb
        aegis,
        b64url,
        bear,
        chttpd,
        ctrace,
        config,
        couch,
        couch_epi,
        couch_jobs,
        couch_lib,
        couch_log,
        couch_replicator,
        couch_stats,
        couch_eval,
        couch_js,
        couch_views,
        ebtree,
        erlfdb,
        ets_lru,
        fabric,
        folsom,
        hyper,
        ibrowse,
        jaeger_passage,
        jiffy,
        jwtf,
        local,
        mango,
        mochiweb,
        passage,
        thrift_protocol,
        couch_prometheus,
        %% extra
        recon
    ]},
    {rel, "start_clean", "", [kernel, stdlib]},
    {boot_rel, "couchdb"},
    {profile, embedded},
    {excl_sys_filters, ["^bin/.*", "^erts.*/bin/(dialyzer|typer)"]},
    {excl_archive_filters, [".*"]},
    {incl_cond, exclude},

    %% stdlib
    {app, asn1, [{incl_cond, include}]},
    {app, compiler, [{incl_cond, include}]},
    {app, crypto, [{incl_cond, include}]},
    {app, inets, [{incl_cond, include}]},
    {app, kernel, [{incl_cond, include}]},
    {app, public_key, [{incl_cond, include}]},
    {app, runtime_tools, [{incl_cond, include}]},
    {app, sasl, [{incl_cond, include}]},
    {app, ssl, [{incl_cond, include}]},
    {app, stdlib, [{incl_cond, include}]},
    {app, syntax_tools, [{incl_cond, include}]},
    {app, xmerl, [{incl_cond, include}]},

    %% couchdb
    {app, aegis, [{incl_cond, include}]},
    {app, b64url, [{incl_cond, include}]},
    {app, bear, [{incl_cond, include}]},
    {app, chttpd, [{incl_cond, include}]},
    {app, ctrace, [{incl_cond, include}]},
    {app, config, [{incl_cond, include}]},
    {app, couch, [{incl_cond, include}]},
    {app, couch_epi, [{incl_cond, include}]},
    {app, couch_eval, [{incl_cond, include}]},
    {app, couch_js, [{incl_cond, include}]},
    {app, couch_jobs, [{incl_cond, include}]},
    {app, couch_lib, [{incl_cond, include}]},
    {app, couch_log, [{incl_cond, include}]},
    {app, couch_replicator, [{incl_cond, include}]},
    {app, couch_stats, [{incl_cond, include}]},
    {app, couch_views, [{incl_cond, include}]},
    {app, erlfdb, [{incl_cond, include}]},
    {app, ebtree, [{incl_cond, include}]},
    {app, ets_lru, [{incl_cond, include}]},
    {app, fabric, [{incl_cond, include}]},
    {app, folsom, [{incl_cond, include}]},
    {app, hyper, [{incl_cond, include}]},
    {app, ibrowse, [{incl_cond, include}]},
    {app, jaeger_passage, [{incl_cond, include}]},
    {app, jiffy, [{incl_cond, include}]},
    {app, jwtf, [{incl_cond, include}]},
    {app, local, [{incl_cond, include}]},
    {app, mango, [{incl_cond, include}]},
    {app, mochiweb, [{incl_cond, include}]},
    {app, passage, [{incl_cond, include}]},
    {app, thrift_protocol, [{incl_cond, include}]},
    {app, couch_prometheus, [{incl_cond, include}]},

    %% extra
    {app, recon, [{incl_cond, include}]}
]}.

{overlay_vars, "couchdb.config"}.
{overlay, [
    {copy, "../LICENSE", "LICENSE"},
    {mkdir, "var/log"},
    {copy, "overlay/bin"},
    {copy, "overlay/etc"},
    {copy, "../src/couch/priv/couchjs", "bin/couchjs"},
    {copy, "../share/server/main.js", "share/server/main.js"},
    {copy, "../share/server/main-coffee.js", "share/server/main-coffee.js"},
    {copy, "files/sys.config", "releases/\{\{rel_vsn\}\}/sys.config"},
    {copy, "files/vm.args", "releases/\{\{rel_vsn\}\}/vm.args"},
    {template, "overlay/etc/default.ini", "etc/default.ini"},
    {template, "overlay/etc/vm.args", "etc/vm.args"},
    {template, "files/couchdb.in", "bin/couchdb"},
    {template, "files/couchdb.cmd.in", "bin/couchdb.cmd"}
]}.
