diff options
author | Brian <BitOfAByte@users.noreply.github.com> | 2018-03-04 11:34:09 -0500 |
---|---|---|
committer | SmallJoker <SmallJoker@users.noreply.github.com> | 2018-03-04 17:34:09 +0100 |
commit | 929792e15ea50943e7fd23925c3d1d431dfd8a02 (patch) | |
tree | a964c463c720c1a92dc93c27789b551162a289bb /src | |
parent | 48493a979b4300d96ba17e2ef3a881641323f43e (diff) | |
download | minetest-929792e15ea50943e7fd23925c3d1d431dfd8a02.tar.gz minetest-929792e15ea50943e7fd23925c3d1d431dfd8a02.tar.bz2 minetest-929792e15ea50943e7fd23925c3d1d431dfd8a02.zip |
Allow for getting world name and path separately on the command line (#6555)
Change to --worldlist instead of --world list.
Gets rid of --worldpath parameter added as part of this pull request,
instead moving the listing function to a command --worldlist that
accepts either name, path, or both and prints out the corresponding
information.
Diffstat (limited to 'src')
-rw-r--r-- | src/main.cpp | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/src/main.cpp b/src/main.cpp index 8fce83dcb..7f9f0967e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -74,11 +74,11 @@ static void print_help(const OptionList &allowed_options); static void print_allowed_options(const OptionList &allowed_options); static void print_version(); static void print_worldspecs(const std::vector<WorldSpec> &worldspecs, - std::ostream &os); + std::ostream &os, bool print_name = true, bool print_path = true); static void print_modified_quicktune_values(); static void list_game_ids(); -static void list_worlds(); +static void list_worlds(bool print_name, bool print_path); static void setup_log_params(const Settings &cmd_args); static bool create_userdata_path(); static bool init_common(const Settings &cmd_args, int argc, char *argv[]); @@ -160,9 +160,15 @@ int main(int argc, char *argv[]) return 0; } - // List worlds if requested - if (cmd_args.exists("world") && cmd_args.get("world") == "list") { - list_worlds(); + // List worlds, world names, and world paths if requested + if (cmd_args.exists("worldlist")) { + if (cmd_args.get("worldlist") == "name") { + list_worlds(true, false); + } else if (cmd_args.get("worldlist") == "path") { + list_worlds(false, true); + } else { + list_worlds(true, true); + } return 0; } @@ -252,9 +258,12 @@ static void set_allowed_options(OptionList *allowed_options) allowed_options->insert(std::make_pair("map-dir", ValueSpec(VALUETYPE_STRING, _("Same as --world (deprecated)")))); allowed_options->insert(std::make_pair("world", ValueSpec(VALUETYPE_STRING, - _("Set world path (implies local game) ('list' lists all)")))); + _("Set world path (implies local game)")))); allowed_options->insert(std::make_pair("worldname", ValueSpec(VALUETYPE_STRING, _("Set world by name (implies local game)")))); + allowed_options->insert(std::make_pair("worldlist", ValueSpec(VALUETYPE_STRING, + _("Get list of worlds (implies local game) ('path' lists paths, " + "'name' lists names, 'both' lists both)")))); allowed_options->insert(std::make_pair("quiet", ValueSpec(VALUETYPE_FLAG, _("Print to console errors only")))); allowed_options->insert(std::make_pair("info", ValueSpec(VALUETYPE_FLAG, @@ -336,24 +345,26 @@ static void list_game_ids() std::cout << gameid <<std::endl; } -static void list_worlds() +static void list_worlds(bool print_name, bool print_path) { std::cout << _("Available worlds:") << std::endl; std::vector<WorldSpec> worldspecs = getAvailableWorlds(); - print_worldspecs(worldspecs, std::cout); + print_worldspecs(worldspecs, std::cout, print_name, print_path); } static void print_worldspecs(const std::vector<WorldSpec> &worldspecs, - std::ostream &os) + std::ostream &os, bool print_name, bool print_path) { for (const WorldSpec &worldspec : worldspecs) { std::string name = worldspec.name; std::string path = worldspec.path; - if (name.find(' ') != std::string::npos) - name = std::string("'").append(name).append("'"); - path = std::string("'").append(path).append("'"); - name = padStringRight(name, 14); - os << " " << name << " " << path << std::endl; + if (print_name && print_path) { + os << "\t" << name << "\t\t" << path << std::endl; + } else if (print_name) { + os << "\t" << name << std::endl; + } else if (print_path) { + os << "\t" << path << std::endl; + } } } |