--!A cross-platform build utility based on Lua
--
-- 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.
--
-- Copyright (C) 2015-present, Xmake Open Source Community.
--
-- @author      ruki
-- @file        service.lua
--

task("service")
    set_category("action")
    on_run("main")

    set_menu {
        usage = "xmake service [options]",
        description = "Start service for remote or distributed compilation and etc.",
        options = {
            {nil, "start",      "k",  nil, "Start daemon service.",
                                           "e.g.",
                                           "    - xmake service --start",
                                           "    - xmake service --start --remote",
                                           "    - xmake service --start --distcc",
                                           "    - xmake service --start --remote --distcc"},
            {nil, "restart",    "k",  nil, "Restart daemon service."},
            {nil, "stop" ,      "k",  nil, "Stop daemon service."},
            {nil, "connect" ,   "k",  nil, "Connect current project to the remote daemon service.",
                                           "e.g.",
                                           "    - xmake service --connect",
                                           "    - xmake service --connect --remote",
                                           "    - xmake service --connect --distcc",
                                           "    - xmake service --connect --remote --distcc",
                                           "    - xmake service --connect --host=windows",
                                           "    - xmake service --connect --host=10.5.139.8:9691"},
            {nil, "session" ,   "kv", nil, "Connect with the given session name, it will generate a session id via name.",
                                           "e.g.",
                                           "    -- xmake service --connect --ccache --session=foo"},
            {nil, "reconnect",  "k",  nil, "Reconnect current project to the remote daemon service."},
            {nil, "disconnect", "k",  nil, "Disconnect current project in the remote daemon service."},
            {nil, "remote",     "k",  nil, "Start or connect the remote build service."},
            {nil, "distcc",     "k",  nil, "Start or connect the distributed build service."},
            {nil, "ccache",     "k",  nil, "Start or connect the remote c/c++ cache service."},
            {nil, "sync",       "k",  nil, "Sync current project files in the remote daemon service."},
            {nil, "xmakesrc",   "kv", nil, "Sync xmake program files in the remote daemon service.",
                                           "e.g.",
                                           "    - xmake service --sync --xmakesrc=/xmakeproj/xmake"},
            {nil, "pull",       "k",  nil, "Pull the given file or directory in the remote daemon service.",
                                           "e.g.",
                                           "    - xmake service --pull build outputdir",
                                           "    - xmake service --pull 'build/**' outputdir"},
            {nil, "clean",      "k",  nil, "Clean current project files in the remote daemon service."},
            {nil, "all",        "k",  nil, "Clean all project files in the remote daemon service.",
                                           "e.g.",
                                           "    - xmake service --clean --all"},
            {nil, "add-user",   "kv", nil, "Add user in the server.",
                                           "e.g.",
                                           "    - xmake service --add-user=root"},
            {nil, "rm-user",    "kv", nil, "Remove user in the server.",
                                           "e.g.",
                                           "    - xmake service --rm-user=root"},
            {nil, "gen-token",  "k",  nil, "Generate a new token in the server.",
                                           "e.g.",
                                           "    - xmake service --gen-token"},
            {nil, "host",       "kv", nil, "Connect to the specific host by name or address.",
                                           "e.g.",
                                           "    - xmake service --connect --host=windows",
                                           "    - xmake service --connect --host=10.5.139.8:9691",
                                           "    - xmake service --connect --host=10.5.139.8"},
            {nil, "logs",       "k",  nil, "Show service logs if the daemon service has been started."},
            {nil, "status",     "k",  nil, "Show service status if the daemon service has been started."},
            {nil, "values",     "vs", nil, "The values list for pull/.. options."},
        }
    }
