% 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.3", [
        %% stdlib
        asn1,
        compiler,
        crypto,
        inets,
        kernel,
        runtime_tools,
        sasl,
        ssl,
        stdlib,
        syntax_tools,
        xmerl,
        %% couchdb
        b64url,
        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
        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, b64url, [{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, 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"}
]}.
