% 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.3.2", [
        %% stdlib
        asn1,
        compiler,
        crypto,
        inets,
        kernel,
        runtime_tools,
        sasl,
        ssl,
        stdlib,
        syntax_tools,
        xmerl,
        %% couchdb
        b64url,
        exxhash,
        bear,
        chttpd,
        config,
        couch,
        couch_epi,
        couch_index,
        couch_log,
        couch_mrview,
        couch_replicator,
        couch_stats,
        couch_event,
        couch_peruser,
        couch_dist,
        custodian,
        ddoc_cache,
        dreyfus,
        ets_lru,
        fabric,
        folsom,
        global_changes,
        hyper,
        ibrowse,
        ioq,
        jiffy,
        jwtf,
        ken,
        khash,
        mango,
        mem3,
        mochiweb,
        rexi,
        setup,
        smoosh,
        snappy,
        weatherreport,
        couch_prometheus,

        %% extra
        nouveau,
        recon
    ]},
    {rel, "start_clean", "", [kernel, stdlib]},
    {boot_rel, "couchdb"},
    {profile, embedded},
    {excl_sys_filters, ["^bin/.*", "^erts.*/bin/(dialyzer|typer)"]},
    {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, b64url, [{incl_cond, include}]},
    {app, exxhash, [{incl_cond, include}]},
    {app, bear, [{incl_cond, include}]},
    {app, chttpd, [{incl_cond, include}]},
    {app, config, [{incl_cond, include}]},
    {app, couch, [{incl_cond, include}]},
    {app, couch_epi, [{incl_cond, include}]},
    {app, couch_index, [{incl_cond, include}]},
    {app, couch_log, [{incl_cond, include}]},
    {app, couch_mrview, [{incl_cond, include}]},
    {app, couch_replicator, [{incl_cond, include}]},
    {app, couch_stats, [{incl_cond, include}]},
    {app, couch_event, [{incl_cond, include}]},
    {app, couch_peruser, [{incl_cond, include}]},
    {app, couch_dist ,[{incl_cond, include}]},
    {app, custodian, [{incl_cond, include}]},
    {app, ddoc_cache, [{incl_cond, include}]},
    {app, dreyfus, [{incl_cond, include}]},
    {app, ets_lru, [{incl_cond, include}]},
    {app, fabric, [{incl_cond, include}]},
    {app, folsom, [{incl_cond, include}]},
    {app, global_changes, [{incl_cond, include}]},
    {app, hyper, [{incl_cond, include}]},
    {app, ibrowse, [{incl_cond, include}]},
    {app, ioq, [{incl_cond, include}]},
    {app, jiffy, [{incl_cond, include}]},
    {app, jwtf, [{incl_cond, include}]},
    {app, ken, [{incl_cond, include}]},
    {app, khash, [{incl_cond, include}]},
    {app, mango, [{incl_cond, include}]},
    {app, mem3, [{incl_cond, include}]},
    {app, mochiweb, [{incl_cond, include}]},
    {app, rexi, [{incl_cond, include}]},
    {app, setup, [{incl_cond, include}]},
    {app, smoosh, [{incl_cond, include}]},
    {app, snappy, [{incl_cond, include}]},
    {app, weatherreport, [{incl_cond, include}]},
    {app, couch_prometheus, [{incl_cond, include}]},

    %% extra
    {app, nouveau, [{incl_cond, include}]},
    {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-ast-bypass.js", "share/server/main-ast-bypass.js"},
    {copy, "../share/server/main-coffee.js", "share/server/main-coffee.js"},
    {copy, "../src/weatherreport/weatherreport", "bin/weatherreport"},
    {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"}
]}.
