diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2023-11-22 03:56:58 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2023-11-22 03:56:58 +0100 |
commit | 9e749583791c9523efab90665ffd8f5c30e4f449 (patch) | |
tree | bcb7fd1774e0b1ca4f69ff19c9c2f9e3c63eac1a /wall-tileset-tool | |
parent | 34c451c6b64ba1c11efa9a390c16e2097a25279a (diff) |
a wip
Diffstat (limited to 'wall-tileset-tool')
-rw-r--r-- | wall-tileset-tool/main.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/wall-tileset-tool/main.cpp b/wall-tileset-tool/main.cpp index 2e78742d..29a7b3d4 100644 --- a/wall-tileset-tool/main.cpp +++ b/wall-tileset-tool/main.cpp @@ -2,6 +2,8 @@ #include "compat/sysexits.hpp" #include "compat/fix-argv0.hpp" #include "src/wall-atlas.hpp" +#include "serialize/wall-atlas.hpp" +#include "serialize/json-helper.hpp" #include "loader/loader.hpp" #include <utility> #include <tuple> @@ -28,6 +30,18 @@ struct options String input_dir, input_file, output_dir; }; +std::shared_ptr<wall_atlas> read_from_file(StringView filename) +{ + using namespace floormat::Wall::detail; + + const auto jroot = json_helper::from_json_(filename); + auto header = read_info_header(jroot); + if (!loader.check_atlas_name(header.name)) + fm_abort("bad atlas name '%s'!", header.name.data()); + + return {}; +} + Triple<options, Arguments, bool> parse_cmdline(int argc, const char* const* argv) noexcept { Corrade::Utility::Arguments args{}; @@ -35,7 +49,6 @@ Triple<options, Arguments, bool> parse_cmdline(int argc, const char* const* argv args.addArgument("input.json"s); args.parse(argc, argv); options opts; - //Path::exists(args.value<StringView>()); opts.output_dir = Path::join(loader.startup_directory(), args.value<StringView>("output")); opts.input_file = Path::join(loader.startup_directory(), args.value<StringView>("input.json")); @@ -44,7 +57,16 @@ Triple<options, Arguments, bool> parse_cmdline(int argc, const char* const* argv if (opts.output_dir.isEmpty()) opts.output_dir = opts.input_dir; - return { std::move(opts), std::move(args), false }; + if (!Path::exists(opts.input_file)) + Error{Error::Flag::NoSpace} << "fatal: input file '" << opts.input_file << "' doesn't exist"; + else if (!Path::isDirectory(opts.output_dir)) + Error{Error::Flag::NoSpace} << "fatal: output directory '" << opts.output_dir << "' doesn't exist"; + else if (Path::isDirectory(opts.input_file)) + Error{Error::Flag::NoSpace} << "fatal: input file '" << opts.input_file << "' is a directory"; + else + return { std::move(opts), std::move(args), true }; + + return {}; } [[nodiscard]] static int usage(const Arguments& args) noexcept |