%% -------------------------------------------------------------------
%%
%% derived from riaknostic - automated diagnostic tools for Riak
%%
%% Copyright (c) 2011 Basho Technologies, Inc.  All Rights Reserved.
%%
%% This file is provided to you 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.
%%
%% -------------------------------------------------------------------
%%
%% File renamed from riaknostic.app.src to weatherreport.app.src and
%% modified to work with Apache CouchDB.
%%
%% Copyright (c) 2014 Cloudant
%%
%% -------------------------------------------------------------------

{application, weatherreport, [
    {description, "Diagnostic tools for Apache CouchDB"},
    {vsn, git},
    {registered, []},
    {applications, [
        kernel,
        stdlib,
        inets,
        config
    ]}
]}.
