aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/commands_create.cpp
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2016-09-22 00:02:09 -0700
committerAlexander Karatarakis <alkarata@microsoft.com>2016-09-22 00:02:09 -0700
commit1339080a90a7a7344ae1da7003a380919d828ff0 (patch)
tree51d0818a975223f336b32088647ed5496b8895c8 /toolsrc/src/commands_create.cpp
parente3a9d3524b33c75b6a97081fc2b71b3e84e249b5 (diff)
downloadvcpkg-1339080a90a7a7344ae1da7003a380919d828ff0.tar.gz
vcpkg-1339080a90a7a7344ae1da7003a380919d828ff0.zip
Place command_create() in a separate cpp file
Diffstat (limited to 'toolsrc/src/commands_create.cpp')
-rw-r--r--toolsrc/src/commands_create.cpp35
1 files changed, 35 insertions, 0 deletions
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));
+ }
+}