aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2016-09-30 18:21:38 -0700
committerAlexander Karatarakis <alkarata@microsoft.com>2016-09-30 18:21:38 -0700
commite507c14229e5dd206499eef3ffa4e887131b9678 (patch)
tree4c28a02ed1e3a9e0e9d9b8760e726cf41eed2c81
parentce68e1a11ed846bdbab59d1e07a9aeb4506c6037 (diff)
downloadvcpkg-e507c14229e5dd206499eef3ffa4e887131b9678.tar.gz
vcpkg-e507c14229e5dd206499eef3ffa4e887131b9678.zip
create & edit commands now only handle package names
-rw-r--r--scripts/ports.cmake85
-rw-r--r--toolsrc/include/vcpkg_Commands.h4
-rw-r--r--toolsrc/src/commands_create.cpp49
-rw-r--r--toolsrc/src/commands_edit.cpp7
-rw-r--r--toolsrc/src/commands_other.cpp4
5 files changed, 69 insertions, 80 deletions
diff --git a/scripts/ports.cmake b/scripts/ports.cmake
index fbe80cc20..44cb386be 100644
--- a/scripts/ports.cmake
+++ b/scripts/ports.cmake
@@ -1,5 +1,11 @@
cmake_minimum_required(VERSION 3.5)
+macro(debug_message)
+ if(DEFINED PORT_DEBUG AND PORT_DEBUG)
+ message(STATUS "[DEBUG] ${ARGN}")
+ endif()
+endmacro()
+
#Detect .vcpkg-root to figure VCPKG_ROOT_DIR
SET(VCPKG_ROOT_DIR_CANDIDATE ${CMAKE_CURRENT_LIST_DIR})
while(IS_DIRECTORY ${VCPKG_ROOT_DIR_CANDIDATE} AND NOT EXISTS "${VCPKG_ROOT_DIR_CANDIDATE}/.vcpkg-root")
@@ -13,14 +19,6 @@ endwhile()
set(VCPKG_ROOT_DIR ${VCPKG_ROOT_DIR_CANDIDATE})
-string(REGEX REPLACE "([^-]*)-([^-]*)" "\\1" TRIPLET_SYSTEM_ARCH ${TARGET_TRIPLET})
-string(REGEX REPLACE "([^-]*)-([^-]*)" "\\2" TRIPLET_SYSTEM_NAME ${TARGET_TRIPLET})
-
-set(CMAKE_TRIPLET_FILE ${VCPKG_ROOT_DIR}/triplets/${TARGET_TRIPLET}.cmake)
-if(NOT EXISTS ${CMAKE_TRIPLET_FILE})
- message(FATAL_ERROR "Unsupported target triplet. Triplet file does not exist: ${CMAKE_TRIPLET_FILE}")
-endif()
-
list(APPEND CMAKE_MODULE_PATH ${VCPKG_ROOT_DIR}/scripts/cmake)
set(CURRENT_INSTALLED_DIR ${VCPKG_ROOT_DIR}/installed/${TARGET_TRIPLET} CACHE PATH "Location to install final packages")
set(DOWNLOADS ${VCPKG_ROOT_DIR}/downloads CACHE PATH "Location to download sources and tools")
@@ -32,43 +30,16 @@ if(PORT)
set(CURRENT_PACKAGES_DIR ${PACKAGES_DIR}/${PORT}_${TARGET_TRIPLET})
endif()
-macro(debug_message)
- if(DEFINED PORT_DEBUG AND PORT_DEBUG)
- message(STATUS "[DEBUG] ${ARGN}")
- endif()
-endmacro()
-if(CMD MATCHES "^CREATE$")
- file(TO_NATIVE_PATH ${VCPKG_ROOT_DIR} NATIVE_VCPKG_ROOT_DIR)
- file(TO_NATIVE_PATH ${DOWNLOADS} NATIVE_DOWNLOADS)
- if(EXISTS ports/${PORT}/portfile.cmake)
- message(FATAL_ERROR "Portfile already exists: '${NATIVE_VCPKG_ROOT_DIR}\\ports\\${PORT}\\portfile.cmake'")
- endif()
- if(NOT FILENAME)
- get_filename_component(FILENAME "${URL}" NAME)
- endif()
- string(REGEX REPLACE "(\\.(zip|gz|tar|tgz|bz2))+\$" "" ROOT_NAME ${FILENAME})
- if(EXISTS ${DOWNLOADS}/${FILENAME})
- message(STATUS "Using pre-downloaded: ${NATIVE_DOWNLOADS}\\${FILENAME}")
- message(STATUS "If this is not desired, delete the file and ${NATIVE_VCPKG_ROOT_DIR}\\ports\\${PORT}")
- else()
- include(vcpkg_download_distfile)
- file(DOWNLOAD ${URL} ${DOWNLOADS}/${FILENAME} STATUS error_code)
- if(NOT error_code MATCHES "0;")
- message(FATAL_ERROR "Error downloading file: ${error_code}")
- endif()
- endif()
- file(SHA512 ${DOWNLOADS}/${FILENAME} SHA512)
+if(CMD MATCHES "^BUILD$")
+ string(REGEX REPLACE "([^-]*)-([^-]*)" "\\1" TRIPLET_SYSTEM_ARCH ${TARGET_TRIPLET})
+ string(REGEX REPLACE "([^-]*)-([^-]*)" "\\2" TRIPLET_SYSTEM_NAME ${TARGET_TRIPLET})
- file(MAKE_DIRECTORY ports/${PORT})
- configure_file(scripts/templates/portfile.in.cmake ports/${PORT}/portfile.cmake @ONLY)
- configure_file(scripts/templates/CONTROL.in ports/${PORT}/CONTROL @ONLY)
+ set(CMAKE_TRIPLET_FILE ${VCPKG_ROOT_DIR}/triplets/${TARGET_TRIPLET}.cmake)
+ if(NOT EXISTS ${CMAKE_TRIPLET_FILE})
+ message(FATAL_ERROR "Unsupported target triplet. Triplet file does not exist: ${CMAKE_TRIPLET_FILE}")
+ endif()
- message(STATUS "Generated portfile: ${NATIVE_VCPKG_ROOT_DIR}\\ports\\${PORT}\\portfile.cmake")
- message(STATUS "Generated CONTROL: ${NATIVE_VCPKG_ROOT_DIR}\\ports\\${PORT}\\CONTROL")
- message(STATUS "To launch an editor for these new files, run")
- message(STATUS " vcpkg edit ${PORT}")
-elseif(CMD MATCHES "^BUILD$")
if(NOT DEFINED CURRENT_PORT_DIR)
message(FATAL_ERROR "CURRENT_PORT_DIR was not defined")
endif()
@@ -100,4 +71,34 @@ elseif(CMD MATCHES "^BUILD$")
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR} ${CURRENT_PACKAGES_DIR})
include(${CURRENT_PORT_DIR}/portfile.cmake)
+elseif(CMD MATCHES "^CREATE$")
+ file(TO_NATIVE_PATH ${VCPKG_ROOT_DIR} NATIVE_VCPKG_ROOT_DIR)
+ file(TO_NATIVE_PATH ${DOWNLOADS} NATIVE_DOWNLOADS)
+ if(EXISTS ports/${PORT}/portfile.cmake)
+ message(FATAL_ERROR "Portfile already exists: '${NATIVE_VCPKG_ROOT_DIR}\\ports\\${PORT}\\portfile.cmake'")
+ endif()
+ if(NOT FILENAME)
+ get_filename_component(FILENAME "${URL}" NAME)
+ endif()
+ string(REGEX REPLACE "(\\.(zip|gz|tar|tgz|bz2))+\$" "" ROOT_NAME ${FILENAME})
+ if(EXISTS ${DOWNLOADS}/${FILENAME})
+ message(STATUS "Using pre-downloaded: ${NATIVE_DOWNLOADS}\\${FILENAME}")
+ message(STATUS "If this is not desired, delete the file and ${NATIVE_VCPKG_ROOT_DIR}\\ports\\${PORT}")
+ else()
+ include(vcpkg_download_distfile)
+ file(DOWNLOAD ${URL} ${DOWNLOADS}/${FILENAME} STATUS error_code)
+ if(NOT error_code MATCHES "0;")
+ message(FATAL_ERROR "Error downloading file: ${error_code}")
+ endif()
+ endif()
+ file(SHA512 ${DOWNLOADS}/${FILENAME} SHA512)
+
+ file(MAKE_DIRECTORY ports/${PORT})
+ configure_file(scripts/templates/portfile.in.cmake ports/${PORT}/portfile.cmake @ONLY)
+ configure_file(scripts/templates/CONTROL.in ports/${PORT}/CONTROL @ONLY)
+
+ message(STATUS "Generated portfile: ${NATIVE_VCPKG_ROOT_DIR}\\ports\\${PORT}\\portfile.cmake")
+ message(STATUS "Generated CONTROL: ${NATIVE_VCPKG_ROOT_DIR}\\ports\\${PORT}\\CONTROL")
+ message(STATUS "To launch an editor for these new files, run")
+ message(STATUS " vcpkg edit ${PORT}")
endif()
diff --git a/toolsrc/include/vcpkg_Commands.h b/toolsrc/include/vcpkg_Commands.h
index c3da552f2..978519820 100644
--- a/toolsrc/include/vcpkg_Commands.h
+++ b/toolsrc/include/vcpkg_Commands.h
@@ -17,8 +17,8 @@ namespace vcpkg
void install_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths, const triplet& default_target_triplet);
void remove_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths, const triplet& default_target_triplet);
- void edit_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, const triplet& default_target_triplet);
+ void edit_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths);
+ void create_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths);
void search_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths);
void list_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths);
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<package_spec> 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));
}
}
diff --git a/toolsrc/src/commands_edit.cpp b/toolsrc/src/commands_edit.cpp
index 2007eac10..f07a15875 100644
--- a/toolsrc/src/commands_edit.cpp
+++ b/toolsrc/src/commands_edit.cpp
@@ -4,14 +4,13 @@
namespace vcpkg
{
- void edit_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths, const triplet& default_target_triplet)
+ void edit_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths)
{
static const std::string example = create_example_string("edit zlib");
args.check_exact_arg_count(1, example.c_str());
- const package_spec spec = Input::check_and_get_package_spec(args.command_arguments.at(0), default_target_triplet, example.c_str());
- Input::check_triplet(spec.target_triplet, paths);
+ const std::string port_name = args.command_arguments.at(0);
- const fs::path portpath = paths.ports / spec.name;
+ const fs::path portpath = paths.ports / port_name;
// Find editor
std::wstring env_EDITOR = System::wdupenv_str(L"EDITOR");
diff --git a/toolsrc/src/commands_other.cpp b/toolsrc/src/commands_other.cpp
index 4ba4112d4..07549a437 100644
--- a/toolsrc/src/commands_other.cpp
+++ b/toolsrc/src/commands_other.cpp
@@ -66,8 +66,6 @@ namespace vcpkg
{"install", install_command},
{"remove", remove_command},
{"build", build_command},
- {"edit", edit_command},
- {"create", create_command},
{"build_external", build_external_command}
};
return t;
@@ -82,6 +80,8 @@ namespace vcpkg
{"integrate", integrate_command},
{"owns", owns_command},
{"update", update_command},
+ {"edit", edit_command},
+ {"create", create_command},
{"import", import_command},
{"cache", cache_command},
{"internal_test", internal_test_command},