diff --git a/generator/internal/codegen_utils.cc b/generator/internal/codegen_utils.cc index d07c95619e1fe..be0b8ff6f26ce 100644 --- a/generator/internal/codegen_utils.cc +++ b/generator/internal/codegen_utils.cc @@ -26,6 +26,11 @@ #include #include #include +#if _WIN32 +#include +#else +#include +#endif // _WIN32 namespace google { namespace cloud { @@ -380,6 +385,14 @@ std::string FormatHeaderIncludeGuard(absl::string_view header_path) { {{"/", "_"}, {".", "_"}})); } +void MakeDirectory(std::string const& path) { +#if _WIN32 + _mkdir(path.c_str()); +#else + mkdir(path.c_str(), 0755); +#endif // _WIN32 +} + } // namespace generator_internal } // namespace cloud } // namespace google diff --git a/generator/internal/codegen_utils.h b/generator/internal/codegen_utils.h index 4eb8c26f065d3..1b24354b68be8 100644 --- a/generator/internal/codegen_utils.h +++ b/generator/internal/codegen_utils.h @@ -130,6 +130,9 @@ std::string FormatCommentKeyValueList( // Formats a header include guard per the provided header_path. std::string FormatHeaderIncludeGuard(absl::string_view header_path); +/// Create a directory. The parent must exist. +void MakeDirectory(std::string const& path); + } // namespace generator_internal } // namespace cloud } // namespace google diff --git a/generator/internal/discovery_file.cc b/generator/internal/discovery_file.cc index bd5a2a73d7d17..e76ca853afec0 100644 --- a/generator/internal/discovery_file.cc +++ b/generator/internal/discovery_file.cc @@ -19,25 +19,12 @@ #include #include #include -#ifdef _WIN32 -#include -#else -#include -#endif // _WIN32 namespace google { namespace cloud { namespace generator_internal { namespace { -void MakeDirectory(std::string const& path) { -#if _WIN32 - _mkdir(path.c_str()); -#else - mkdir(path.c_str(), 0777); -#endif // _WIN32 -} - std::string GeneratedProtoPreamble() { auto constexpr kPreamble = R"""( // Generated by the C++ microgenerator. diff --git a/generator/internal/discovery_proto_export_file.cc b/generator/internal/discovery_proto_export_file.cc index 9a08bb246c582..cecd30328e852 100644 --- a/generator/internal/discovery_proto_export_file.cc +++ b/generator/internal/discovery_proto_export_file.cc @@ -19,27 +19,10 @@ #include #include #include -#ifdef _WIN32 -#include -#else -#include -#endif // _WIN32 namespace google { namespace cloud { namespace generator_internal { -namespace { - -// TODO(#12818): refactor this function to single translation unit. -void MakeDirectory(std::string const& path) { -#if _WIN32 - _mkdir(path.c_str()); -#else - mkdir(path.c_str(), 0777); -#endif // _WIN32 -} - -} // namespace DiscoveryProtoExportFile::DiscoveryProtoExportFile( std::string output_file_path, std::string relative_file_path, diff --git a/generator/internal/scaffold_generator.cc b/generator/internal/scaffold_generator.cc index e1845b73a6840..5b1976c023528 100644 --- a/generator/internal/scaffold_generator.cc +++ b/generator/internal/scaffold_generator.cc @@ -13,6 +13,7 @@ // limitations under the License. #include "generator/internal/scaffold_generator.h" +#include "generator/internal/codegen_utils.h" #include "google/cloud/internal/absl_str_join_quiet.h" #include "google/cloud/internal/absl_str_replace_quiet.h" #include "google/cloud/internal/filesystem.h" @@ -25,11 +26,6 @@ #include #include #include -#ifdef _WIN32 -#include -#else -#include -#endif // _WIN32 namespace google { namespace cloud { @@ -224,14 +220,6 @@ std::string ServiceConfigYamlPath( return absl::StrCat(root, "/", name->second); } -void MakeDirectory(std::string const& path) { -#if _WIN32 - _mkdir(path.c_str()); -#else - mkdir(path.c_str(), 0755); -#endif // _WIN32 -} - void GenerateMetadata( std::map const& vars, std::string const& output_path, diff --git a/generator/internal/scaffold_generator.h b/generator/internal/scaffold_generator.h index 2dce5c047f1ca..ae72bb64e0293 100644 --- a/generator/internal/scaffold_generator.h +++ b/generator/internal/scaffold_generator.h @@ -92,9 +92,6 @@ std::map ScaffoldVars( std::string ServiceConfigYamlPath( std::string const& root, std::map const& vars); -/// Create a directory. The parent must exist. -void MakeDirectory(std::string const& path); - /** * Generates (if possible) a `.repo-metadata.json` file for @p service. * diff --git a/generator/internal/scaffold_generator_test.cc b/generator/internal/scaffold_generator_test.cc index b9b737ba19186..32b65820fc7d8 100644 --- a/generator/internal/scaffold_generator_test.cc +++ b/generator/internal/scaffold_generator_test.cc @@ -13,11 +13,17 @@ // limitations under the License. #include "generator/internal/scaffold_generator.h" +#include "generator/internal/codegen_utils.h" #include "google/cloud/internal/random.h" #include #include #include #include +#if _WIN32 +#include +#else +#include +#endif // _WIN32 namespace google { namespace cloud {