%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*-
%% ex: ft=erlang ts=4 sw=4 et

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

-export([main/1]).


main([]) ->

    CouchConfig = case filelib:is_file(os:getenv("COUCHDB_CONFIG")) of
        true ->
            {ok, Result} = file:consult(os:getenv("COUCHDB_CONFIG")),
            Result;
        false ->
            []
    end,

    SMVsn = case lists:keyfind(spidermonkey_version, 1, CouchConfig) of
        {_, Vsn} -> Vsn;
        undefined -> "1.8.5"
    end,

    JsFiles =  [
        "share/server/sha256.js",
        "share/server/json2.js",
        "share/server/dreyfus.js",
        "share/server/filter.js",
        "share/server/mimeparse.js",
        "share/server/render.js",
        "share/server/state.js",
        "share/server/util.js",
        "share/server/validate.js",
        "share/server/views.js",
        "share/server/loop.js"
    ],

    CoffeeFiles = [
        "share/server/sha256.js",
        "share/server/json2.js",
        "share/server/dreyfus.js",
        "share/server/filter.js",
        "share/server/mimeparse.js",
        "share/server/render.js",
        "share/server/state.js",
        "share/server/util.js",
        "share/server/validate.js",
        "share/server/views.js",
        "share/server/coffee-script.js",
        "share/server/loop.js"
    ],

    ExtraFiles = case SMVsn of
        "1.8.5" ->
            [
                "share/server/rewrite_fun.js"
            ];
        _ ->
            [
                "share/server/60/esprima.js",
                "share/server/60/escodegen.js",
                "share/server/60/rewrite_fun.js"
            ]
    end,

    Pre = "(function () {\n",
    Post = "})();\n",

    Concat = fun(Files, To) ->
            AccBin = lists:foldl(fun(Path, Acc) ->
                            {ok, Bin} = file:read_file(Path),
                            [Bin | Acc]
                    end, [], Files),
            FinalBin = iolist_to_binary(Pre ++ lists:reverse(AccBin) ++ Post),
            file:write_file(To, FinalBin)
    end,

    ok = Concat(ExtraFiles ++ JsFiles, "share/server/main.js"),
    ok = Concat(ExtraFiles ++ CoffeeFiles, "share/server/main-coffee.js"),
    ok.
