% 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.2.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_plugins,
        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_plugins, [{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-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"}
]}.
