blob: 935a6a77c89e3f096f88ac10c16d137d20664cb4 [file] [log] [blame]
/** @file
A brief file description
@section license License
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
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.
*/
#include "tscore/I_Layout.h"
#include "tscore/runroot.h"
#include "engine.h"
using namespace std::literals;
int
main(int argc, const char **argv)
{
LayoutEngine engine;
int i = 0;
while (argv[i]) {
engine._argv.push_back(argv[i]);
++i;
}
engine.parser.add_global_usage("traffic_layout CMD [OPTIONS]");
// global options
engine.parser.add_option("--help", "-h", "Print usage information")
.add_option("--run-root", "", "using TS_RUNROOT as sandbox", "TS_RUNROOT", 1)
.add_option("--version", "-V", "Print version string");
// info command
engine.parser.add_command("info", "Show the layout as default", [&]() { engine.info(); })
.add_option("--features", "", "Show the compiled features")
.add_option("--versions", "", "Show various library and other versioning information")
.add_option("--json", "-j", "Produce output in JSON format (when supported)")
.set_default();
// init command
engine.parser.add_command("init", "Initialize(create) the runroot sandbox", [&]() { engine.create_runroot(); })
.add_option("--absolute", "-a", "Produce absolute path in the runroot.yaml")
.add_option("--force", "-f", "Create runroot even if the directory is not empty")
.add_option("--path", "-p", "Specify the path of the runroot", "", 1)
.add_option("--copy-style", "-c", "Specify the way of copying (full/hard/soft)", "", 1)
.add_option("--layout", "-l", "Use specific layout (providing YAML file) to create runroot", "", 1);
// remove command
engine.parser.add_command("remove", "Remove the runroot sandbox", [&]() { engine.remove_runroot(); })
.add_option("--force", "-f", "Remove runroot even if runroot.yaml is not found")
.add_option("--path", "-p", "Specify the path of the runroot", "", 1);
// verify command
engine.parser.add_command("verify", "Verify the runroot permissions", [&]() { engine.verify_runroot(); })
.add_option("--fix", "-x", "Fix the permission issues of runroot")
.add_option("--path", "-p", "Specify the path of the runroot", "", 1)
.add_option("--with-user", "-w", "verify runroot with certain user", "", 1);
engine.arguments = engine.parser.parse(argv);
auto runroot_arg = engine.arguments.get("run-root");
argparser_runroot_handler(runroot_arg.value(), argv[0], engine.arguments.get("json"));
Layout::create();
engine.arguments.invoke();
return engine.status_code;
}