From 1339080a90a7a7344ae1da7003a380919d828ff0 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Thu, 22 Sep 2016 00:02:09 -0700 Subject: Place command_create() in a separate cpp file --- toolsrc/src/commands_create.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 toolsrc/src/commands_create.cpp (limited to 'toolsrc/src/commands_create.cpp') diff --git a/toolsrc/src/commands_create.cpp b/toolsrc/src/commands_create.cpp new file mode 100644 index 000000000..73d163af8 --- /dev/null +++ b/toolsrc/src/commands_create.cpp @@ -0,0 +1,35 @@ +#include "vcpkg_Commands.h" +#include "vcpkg_System.h" +#include "vcpkg_Environment.h" + +namespace vcpkg +{ + void create_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths, const triplet& default_target_triplet) + { + args.check_max_args(3); + package_spec spec = args.parse_all_arguments_as_package_specs(default_target_triplet).at(0); + if (args.command_arguments.size() < 2) + { + System::println(System::color::error, "Error: create requires the archive's URL as the second argument."); + print_usage(); + exit(EXIT_FAILURE); + } + Environment::ensure_utilities_on_path(paths); + + // Space OR define the FILENAME with proper spacing + std::wstring custom_filename = L" "; + if (args.command_arguments.size() >= 3) + { + custom_filename = Strings::format(L" -DFILENAME=%s ", Strings::utf8_to_utf16(args.command_arguments.at(2))); + } + + const std::wstring cmdline = Strings::format(LR"(cmake -DCMD=SCAFFOLD -DPORT=%s -DTARGET_TRIPLET=%s -DURL=%s%s-P "%s")", + Strings::utf8_to_utf16(spec.name), + Strings::utf8_to_utf16(spec.target_triplet.value), + Strings::utf8_to_utf16(args.command_arguments.at(1)), + custom_filename, + paths.ports_cmake.generic_wstring()); + + exit(System::cmd_execute(cmdline)); + } +} -- cgit v1.2.3 From 31935aa0fd142cbb4e0db1a62ba1483294b740f8 Mon Sep 17 00:00:00 2001 From: Albert Ziegenhagel Date: Fri, 23 Sep 2016 09:44:30 +0200 Subject: Improved error reporting when user provides invalid triplets --- toolsrc/src/commands_create.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'toolsrc/src/commands_create.cpp') diff --git a/toolsrc/src/commands_create.cpp b/toolsrc/src/commands_create.cpp index 73d163af8..8ae67b799 100644 --- a/toolsrc/src/commands_create.cpp +++ b/toolsrc/src/commands_create.cpp @@ -7,7 +7,7 @@ namespace vcpkg void create_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths, const triplet& default_target_triplet) { args.check_max_args(3); - package_spec spec = args.parse_all_arguments_as_package_specs(default_target_triplet).at(0); + package_spec spec = args.parse_all_arguments_as_package_specs(paths, default_target_triplet).at(0); if (args.command_arguments.size() < 2) { System::println(System::color::error, "Error: create requires the archive's URL as the second argument."); -- cgit v1.2.3 From cd30cd4df9b0f9afd7aedbe970df8faab6a45a5c Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Fri, 23 Sep 2016 16:26:27 -0700 Subject: parse_all_arguments_as_package_specs: remove unused parameter --- toolsrc/src/commands_create.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'toolsrc/src/commands_create.cpp') diff --git a/toolsrc/src/commands_create.cpp b/toolsrc/src/commands_create.cpp index 8ae67b799..73d163af8 100644 --- a/toolsrc/src/commands_create.cpp +++ b/toolsrc/src/commands_create.cpp @@ -7,7 +7,7 @@ namespace vcpkg void create_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths, const triplet& default_target_triplet) { args.check_max_args(3); - package_spec spec = args.parse_all_arguments_as_package_specs(paths, default_target_triplet).at(0); + package_spec spec = args.parse_all_arguments_as_package_specs(default_target_triplet).at(0); if (args.command_arguments.size() < 2) { System::println(System::color::error, "Error: create requires the archive's URL as the second argument."); -- cgit v1.2.3 From c7a7d062a750bce13a9db3fa8af5018d38554565 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Fri, 23 Sep 2016 17:07:01 -0700 Subject: Fix `vcpkg create` to not parse all arguments as package specs --- toolsrc/src/commands_create.cpp | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) (limited to 'toolsrc/src/commands_create.cpp') diff --git a/toolsrc/src/commands_create.cpp b/toolsrc/src/commands_create.cpp index 73d163af8..c08842d65 100644 --- a/toolsrc/src/commands_create.cpp +++ b/toolsrc/src/commands_create.cpp @@ -7,29 +7,39 @@ namespace vcpkg void create_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths, const triplet& default_target_triplet) { args.check_max_args(3); - package_spec spec = args.parse_all_arguments_as_package_specs(default_target_triplet).at(0); if (args.command_arguments.size() < 2) { System::println(System::color::error, "Error: create requires the archive's URL as the second argument."); print_usage(); exit(EXIT_FAILURE); } - Environment::ensure_utilities_on_path(paths); - // Space OR define the FILENAME with proper spacing - std::wstring custom_filename = L" "; - if (args.command_arguments.size() >= 3) + expected current_spec = package_spec::from_string(args.command_arguments[0], default_target_triplet); + if (const package_spec* spec = current_spec.get()) { - custom_filename = Strings::format(L" -DFILENAME=%s ", Strings::utf8_to_utf16(args.command_arguments.at(2))); - } + Environment::ensure_utilities_on_path(paths); + + // Space OR define the FILENAME with proper spacing + std::wstring custom_filename = L" "; + if (args.command_arguments.size() >= 3) + { + custom_filename = Strings::format(LR"( -DFILENAME="%s" )", Strings::utf8_to_utf16(args.command_arguments.at(2))); + } - const std::wstring cmdline = Strings::format(LR"(cmake -DCMD=SCAFFOLD -DPORT=%s -DTARGET_TRIPLET=%s -DURL=%s%s-P "%s")", - Strings::utf8_to_utf16(spec.name), - Strings::utf8_to_utf16(spec.target_triplet.value), - Strings::utf8_to_utf16(args.command_arguments.at(1)), - custom_filename, - paths.ports_cmake.generic_wstring()); + const std::wstring cmdline = Strings::format(LR"(cmake -DCMD=SCAFFOLD -DPORT=%s -DTARGET_TRIPLET=%s -DURL=%s%s-P "%s")", + Strings::utf8_to_utf16(spec->name), + Strings::utf8_to_utf16(spec->target_triplet.value), + Strings::utf8_to_utf16(args.command_arguments.at(1)), + custom_filename, + paths.ports_cmake.generic_wstring()); - exit(System::cmd_execute(cmdline)); + exit(System::cmd_execute(cmdline)); + } + else + { + System::println(System::color::error, "Error: %s: %s", current_spec.error_code().message(), args.command_arguments[0]); + print_example(Strings::format("%s zlib:x64-windows", args.command).c_str()); + exit(EXIT_FAILURE); + } } } -- cgit v1.2.3 From a8b0651e50bf217e361789d1d6a59905309a3372 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Fri, 23 Sep 2016 17:57:50 -0700 Subject: `vcpkg create` now checks for invalid chars in the zip file --- toolsrc/src/commands_create.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'toolsrc/src/commands_create.cpp') diff --git a/toolsrc/src/commands_create.cpp b/toolsrc/src/commands_create.cpp index c08842d65..76ba644e4 100644 --- a/toolsrc/src/commands_create.cpp +++ b/toolsrc/src/commands_create.cpp @@ -1,6 +1,7 @@ #include "vcpkg_Commands.h" #include "vcpkg_System.h" #include "vcpkg_Environment.h" +#include "vcpkg_Files.h" namespace vcpkg { @@ -23,7 +24,11 @@ namespace vcpkg std::wstring custom_filename = L" "; if (args.command_arguments.size() >= 3) { - custom_filename = Strings::format(LR"( -DFILENAME="%s" )", Strings::utf8_to_utf16(args.command_arguments.at(2))); + const std::string& zip_file_name = args.command_arguments.at(2); + Checks::check_exit(!Files::has_invalid_chars_for_filesystem(zip_file_name), + R"(Filename cannot contain invalid chars %s, but was %s)", + Files::FILESYSTEM_INVALID_CHARACTERS, zip_file_name); + custom_filename = Strings::format(LR"( -DFILENAME="%s" )", Strings::utf8_to_utf16(zip_file_name)); } const std::wstring cmdline = Strings::format(LR"(cmake -DCMD=SCAFFOLD -DPORT=%s -DTARGET_TRIPLET=%s -DURL=%s%s-P "%s")", -- cgit v1.2.3 From 48fe5f36b2ae0ee82d11cb7c2c42e4d7bec9873f Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Wed, 28 Sep 2016 16:25:32 -0700 Subject: Rename SCAFFOLD to CREATE to match `vcpkg create` --- toolsrc/src/commands_create.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'toolsrc/src/commands_create.cpp') diff --git a/toolsrc/src/commands_create.cpp b/toolsrc/src/commands_create.cpp index 76ba644e4..2712d3e6a 100644 --- a/toolsrc/src/commands_create.cpp +++ b/toolsrc/src/commands_create.cpp @@ -31,7 +31,7 @@ namespace vcpkg custom_filename = Strings::format(LR"( -DFILENAME="%s" )", Strings::utf8_to_utf16(zip_file_name)); } - const std::wstring cmdline = Strings::format(LR"(cmake -DCMD=SCAFFOLD -DPORT=%s -DTARGET_TRIPLET=%s -DURL=%s%s-P "%s")", + const std::wstring cmdline = Strings::format(LR"(cmake -DCMD=CREATE -DPORT=%s -DTARGET_TRIPLET=%s -DURL=%s%s-P "%s")", Strings::utf8_to_utf16(spec->name), Strings::utf8_to_utf16(spec->target_triplet.value), Strings::utf8_to_utf16(args.command_arguments.at(1)), -- cgit v1.2.3 From 8ed88af8c9cf2ed2e6fd573b2cd5dc2b41b55625 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Thu, 29 Sep 2016 19:28:00 -0700 Subject: Rename wchar_t overload of Strings::format() to wformat() --- toolsrc/src/commands_create.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'toolsrc/src/commands_create.cpp') diff --git a/toolsrc/src/commands_create.cpp b/toolsrc/src/commands_create.cpp index 2712d3e6a..85b98d667 100644 --- a/toolsrc/src/commands_create.cpp +++ b/toolsrc/src/commands_create.cpp @@ -28,15 +28,15 @@ namespace vcpkg Checks::check_exit(!Files::has_invalid_chars_for_filesystem(zip_file_name), R"(Filename cannot contain invalid chars %s, but was %s)", Files::FILESYSTEM_INVALID_CHARACTERS, zip_file_name); - custom_filename = Strings::format(LR"( -DFILENAME="%s" )", Strings::utf8_to_utf16(zip_file_name)); + custom_filename = Strings::wformat(LR"( -DFILENAME="%s" )", Strings::utf8_to_utf16(zip_file_name)); } - const std::wstring cmdline = Strings::format(LR"(cmake -DCMD=CREATE -DPORT=%s -DTARGET_TRIPLET=%s -DURL=%s%s-P "%s")", - Strings::utf8_to_utf16(spec->name), - Strings::utf8_to_utf16(spec->target_triplet.value), - Strings::utf8_to_utf16(args.command_arguments.at(1)), - custom_filename, - paths.ports_cmake.generic_wstring()); + const std::wstring cmdline = Strings::wformat(LR"(cmake -DCMD=CREATE -DPORT=%s -DTARGET_TRIPLET=%s -DURL=%s%s-P "%s")", + Strings::utf8_to_utf16(spec->name), + Strings::utf8_to_utf16(spec->target_triplet.value), + Strings::utf8_to_utf16(args.command_arguments.at(1)), + custom_filename, + paths.ports_cmake.generic_wstring()); exit(System::cmd_execute(cmdline)); } -- cgit v1.2.3 From fc1e55173b23afeb46142e6d656043a4b6f4b21c Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Fri, 30 Sep 2016 11:24:04 -0700 Subject: Rename check_max_args to check_max_arg_count and introduce min/exact variants --- toolsrc/src/commands_create.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'toolsrc/src/commands_create.cpp') diff --git a/toolsrc/src/commands_create.cpp b/toolsrc/src/commands_create.cpp index 85b98d667..2292581ee 100644 --- a/toolsrc/src/commands_create.cpp +++ b/toolsrc/src/commands_create.cpp @@ -7,7 +7,7 @@ namespace vcpkg { void create_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths, const triplet& default_target_triplet) { - args.check_max_args(3); + args.check_max_arg_count(3); if (args.command_arguments.size() < 2) { System::println(System::color::error, "Error: create requires the archive's URL as the second argument."); -- cgit v1.2.3 From b2c1076aef280e7ebfd38845dfcb4d4b66cd45e3 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Fri, 30 Sep 2016 11:24:04 -0700 Subject: All commands now use the new functions for argument checking --- toolsrc/src/commands_create.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'toolsrc/src/commands_create.cpp') diff --git a/toolsrc/src/commands_create.cpp b/toolsrc/src/commands_create.cpp index 2292581ee..d365dac70 100644 --- a/toolsrc/src/commands_create.cpp +++ b/toolsrc/src/commands_create.cpp @@ -7,13 +7,9 @@ namespace vcpkg { void create_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths, const triplet& default_target_triplet) { - args.check_max_arg_count(3); - if (args.command_arguments.size() < 2) - { - System::println(System::color::error, "Error: create requires the archive's URL as the second argument."); - print_usage(); - exit(EXIT_FAILURE); - } + static const std::string example = create_example_string(R"###(create zlib2 http://zlib.net/zlib128.zip "zlib128-2.zip")###"); + args.check_max_arg_count(3, example.c_str()); + args.check_min_arg_count(2, example.c_str()); expected current_spec = package_spec::from_string(args.command_arguments[0], default_target_triplet); if (const package_spec* spec = current_spec.get()) -- cgit v1.2.3 From 51bc83c70e915892a658795f51bb3bb10360ee8d Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Fri, 30 Sep 2016 17:01:41 -0700 Subject: Added triplet check in all commands that obtain package_specs --- toolsrc/src/commands_create.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'toolsrc/src/commands_create.cpp') diff --git a/toolsrc/src/commands_create.cpp b/toolsrc/src/commands_create.cpp index d365dac70..5e88f9c65 100644 --- a/toolsrc/src/commands_create.cpp +++ b/toolsrc/src/commands_create.cpp @@ -2,6 +2,7 @@ #include "vcpkg_System.h" #include "vcpkg_Environment.h" #include "vcpkg_Files.h" +#include "vcpkg_Input.h" namespace vcpkg { @@ -14,6 +15,7 @@ namespace vcpkg expected current_spec = package_spec::from_string(args.command_arguments[0], default_target_triplet); if (const package_spec* spec = current_spec.get()) { + Input::check_triplet(spec->target_triplet, paths); Environment::ensure_utilities_on_path(paths); // Space OR define the FILENAME with proper spacing -- cgit v1.2.3 From e507c14229e5dd206499eef3ffa4e887131b9678 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Fri, 30 Sep 2016 18:21:38 -0700 Subject: create & edit commands now only handle package names --- toolsrc/src/commands_create.cpp | 49 ++++++++++++++++------------------------- 1 file changed, 19 insertions(+), 30 deletions(-) (limited to 'toolsrc/src/commands_create.cpp') diff --git a/toolsrc/src/commands_create.cpp b/toolsrc/src/commands_create.cpp index 5e88f9c65..d1611eb5c 100644 --- a/toolsrc/src/commands_create.cpp +++ b/toolsrc/src/commands_create.cpp @@ -6,43 +6,32 @@ namespace vcpkg { - void create_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths, const triplet& default_target_triplet) + void create_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths) { static const std::string example = create_example_string(R"###(create zlib2 http://zlib.net/zlib128.zip "zlib128-2.zip")###"); args.check_max_arg_count(3, example.c_str()); args.check_min_arg_count(2, example.c_str()); - expected current_spec = package_spec::from_string(args.command_arguments[0], default_target_triplet); - if (const package_spec* spec = current_spec.get()) - { - Input::check_triplet(spec->target_triplet, paths); - Environment::ensure_utilities_on_path(paths); - - // Space OR define the FILENAME with proper spacing - std::wstring custom_filename = L" "; - if (args.command_arguments.size() >= 3) - { - const std::string& zip_file_name = args.command_arguments.at(2); - Checks::check_exit(!Files::has_invalid_chars_for_filesystem(zip_file_name), - R"(Filename cannot contain invalid chars %s, but was %s)", - Files::FILESYSTEM_INVALID_CHARACTERS, zip_file_name); - custom_filename = Strings::wformat(LR"( -DFILENAME="%s" )", Strings::utf8_to_utf16(zip_file_name)); - } - - const std::wstring cmdline = Strings::wformat(LR"(cmake -DCMD=CREATE -DPORT=%s -DTARGET_TRIPLET=%s -DURL=%s%s-P "%s")", - Strings::utf8_to_utf16(spec->name), - Strings::utf8_to_utf16(spec->target_triplet.value), - Strings::utf8_to_utf16(args.command_arguments.at(1)), - custom_filename, - paths.ports_cmake.generic_wstring()); + const std::string port_name = args.command_arguments.at(0); + Environment::ensure_utilities_on_path(paths); - exit(System::cmd_execute(cmdline)); - } - else + // Space OR define the FILENAME with proper spacing + std::wstring custom_filename = L" "; + if (args.command_arguments.size() >= 3) { - System::println(System::color::error, "Error: %s: %s", current_spec.error_code().message(), args.command_arguments[0]); - print_example(Strings::format("%s zlib:x64-windows", args.command).c_str()); - exit(EXIT_FAILURE); + const std::string& zip_file_name = args.command_arguments.at(2); + Checks::check_exit(!Files::has_invalid_chars_for_filesystem(zip_file_name), + R"(Filename cannot contain invalid chars %s, but was %s)", + Files::FILESYSTEM_INVALID_CHARACTERS, zip_file_name); + custom_filename = Strings::wformat(LR"( -DFILENAME="%s" )", Strings::utf8_to_utf16(zip_file_name)); } + + const std::wstring cmdline = Strings::wformat(LR"(cmake -DCMD=CREATE -DPORT=%s -DURL=%s%s-P "%s")", + Strings::utf8_to_utf16(port_name), + Strings::utf8_to_utf16(args.command_arguments.at(1)), + custom_filename, + paths.ports_cmake.generic_wstring()); + + exit(System::cmd_execute(cmdline)); } } -- cgit v1.2.3