Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[core][general] Add metadata file tracking to aid in "Golden Tests" regeneration #6325

Merged
merged 7 commits into from
May 22, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,17 @@

import java.io.*;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.time.ZonedDateTime;
import java.util.*;
import java.util.stream.Stream;

import static org.openapitools.codegen.utils.OnceLogger.once;

@SuppressWarnings("rawtypes")
public class DefaultGenerator extends AbstractGenerator implements Generator {
private static final String METADATA_DIR = ".openapi-generator";
protected final Logger LOGGER = LoggerFactory.getLogger(DefaultGenerator.class);
protected CodegenConfig config;
protected ClientOptInput opts;
Expand Down Expand Up @@ -860,7 +863,7 @@ private void generateSupportingFiles(List<File> files, Map<String, Object> bundl
));
}

String versionMetadata = config.outputFolder() + File.separator + ".openapi-generator" + File.separator + "VERSION";
String versionMetadata = config.outputFolder() + File.separator + METADATA_DIR + File.separator + "VERSION";
if (generateMetadata) {
File versionMetadataFile = new File(versionMetadata);
try {
Expand Down Expand Up @@ -1057,6 +1060,31 @@ public List<File> generate() {
sb.append(System.lineSeparator());

System.err.println(sb.toString());
} else {
if (generateMetadata) {
StringBuilder sb = new StringBuilder();
File outDir = new File(this.config.getOutputDir());
Optional.of(files)
.map(Collection::stream)
.orElseGet(Stream::empty)
.filter(Objects::nonNull)
.map(File::toPath)
.sorted(Path::compareTo)
.forEach(f -> {
String relativePath = java.nio.file.Paths.get(outDir.toURI()).relativize(f).toString();
if (!relativePath.equals(METADATA_DIR + File.separator + "VERSION")) {
sb.append(relativePath).append(System.lineSeparator());
}
});

String targetFile = config.outputFolder() + File.separator + METADATA_DIR + File.separator + "FILES";
try {
File filesFile = writeToFile(targetFile, sb.toString().getBytes(StandardCharsets.UTF_8));
files.add(filesFile);
} catch (IOException e) {
LOGGER.warn("Failed to write FILES metadata to track generated files.");
}
}
}

// reset GlobalSettings, so that the running thread can be reused for another generator-run
Expand Down
28 changes: 28 additions & 0 deletions samples/client/petstore/R/.openapi-generator/FILES
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
.Rbuildignore
.gitignore
.travis.yml
DESCRIPTION
NAMESPACE
R/api_client.R
R/api_response.R
R/category.R
R/model_api_response.R
R/order.R
R/pet.R
R/pet_api.R
R/store_api.R
R/tag.R
R/user.R
R/user_api.R
README.md
docs/Category.md
docs/ModelApiResponse.md
docs/Order.md
docs/Pet.md
docs/PetApi.md
docs/StoreApi.md
docs/Tag.md
docs/User.md
docs/UserApi.md
git_push.sh
tests/testthat.R
30 changes: 30 additions & 0 deletions samples/client/petstore/apex/.openapi-generator/FILES
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
README.md
config/project-scratch-def.json
force-app/main/default/classes/OAS.cls
force-app/main/default/classes/OAS.cls-meta.xml
force-app/main/default/classes/OASApiResponse.cls
force-app/main/default/classes/OASApiResponse.cls-meta.xml
force-app/main/default/classes/OASCategory.cls
force-app/main/default/classes/OASCategory.cls-meta.xml
force-app/main/default/classes/OASClient.cls
force-app/main/default/classes/OASClient.cls-meta.xml
force-app/main/default/classes/OASOrder.cls
force-app/main/default/classes/OASOrder.cls-meta.xml
force-app/main/default/classes/OASPet.cls
force-app/main/default/classes/OASPet.cls-meta.xml
force-app/main/default/classes/OASPetApi.cls
force-app/main/default/classes/OASPetApi.cls-meta.xml
force-app/main/default/classes/OASResponseMock.cls
force-app/main/default/classes/OASResponseMock.cls-meta.xml
force-app/main/default/classes/OASStoreApi.cls
force-app/main/default/classes/OASStoreApi.cls-meta.xml
force-app/main/default/classes/OASTag.cls
force-app/main/default/classes/OASTag.cls-meta.xml
force-app/main/default/classes/OASTest.cls
force-app/main/default/classes/OASTest.cls-meta.xml
force-app/main/default/classes/OASUser.cls
force-app/main/default/classes/OASUser.cls-meta.xml
force-app/main/default/classes/OASUserApi.cls
force-app/main/default/classes/OASUserApi.cls-meta.xml
force-app/main/default/namedCredentials/OpenAPI_Petstore.namedCredential-meta.xml
sfdx-project.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
.gitignore
ApiClient.cpp
ApiClient.h
ApiConfiguration.cpp
ApiConfiguration.h
ApiException.cpp
ApiException.h
CMakeLists.txt
HttpContent.cpp
HttpContent.h
IHttpBody.h
JsonBody.cpp
JsonBody.h
ModelBase.cpp
ModelBase.h
MultipartFormData.cpp
MultipartFormData.h
Object.cpp
Object.h
README.md
api/PetApi.cpp
api/PetApi.h
api/StoreApi.cpp
api/StoreApi.h
api/UserApi.cpp
api/UserApi.h
git_push.sh
model/ApiResponse.cpp
model/ApiResponse.h
model/Category.cpp
model/Category.h
model/Order.cpp
model/Order.h
model/Pet.cpp
model/Pet.h
model/Tag.cpp
model/Tag.h
model/User.cpp
model/User.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
README.md
compile-mono.sh
docs/ApiResponse.md
docs/Category.md
docs/Order.md
docs/Pet.md
docs/PetApi.md
docs/StoreApi.md
docs/Tag.md
docs/User.md
docs/UserApi.md
src/main/CsharpDotNet2/Org/OpenAPITools/Api/PetApi.cs
src/main/CsharpDotNet2/Org/OpenAPITools/Api/StoreApi.cs
src/main/CsharpDotNet2/Org/OpenAPITools/Api/UserApi.cs
src/main/CsharpDotNet2/Org/OpenAPITools/Client/ApiClient.cs
src/main/CsharpDotNet2/Org/OpenAPITools/Client/ApiException.cs
src/main/CsharpDotNet2/Org/OpenAPITools/Client/Configuration.cs
src/main/CsharpDotNet2/Org/OpenAPITools/Model/ApiResponse.cs
src/main/CsharpDotNet2/Org/OpenAPITools/Model/Category.cs
src/main/CsharpDotNet2/Org/OpenAPITools/Model/Order.cs
src/main/CsharpDotNet2/Org/OpenAPITools/Model/Pet.cs
src/main/CsharpDotNet2/Org/OpenAPITools/Model/Tag.cs
src/main/CsharpDotNet2/Org/OpenAPITools/Model/User.cs
vendor/packages.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
.gitignore
Org.OpenAPITools.sln
README.md
docs/AdditionalPropertiesAnyType.md
docs/AdditionalPropertiesArray.md
docs/AdditionalPropertiesBoolean.md
docs/AdditionalPropertiesClass.md
docs/AdditionalPropertiesInteger.md
docs/AdditionalPropertiesNumber.md
docs/AdditionalPropertiesObject.md
docs/AdditionalPropertiesString.md
docs/Animal.md
docs/AnotherFakeApi.md
docs/ApiResponse.md
docs/ArrayOfArrayOfNumberOnly.md
docs/ArrayOfNumberOnly.md
docs/ArrayTest.md
docs/BigCat.md
docs/BigCatAllOf.md
docs/Capitalization.md
docs/Cat.md
docs/CatAllOf.md
docs/Category.md
docs/ClassModel.md
docs/Dog.md
docs/DogAllOf.md
docs/EnumArrays.md
docs/EnumClass.md
docs/EnumTest.md
docs/FakeApi.md
docs/FakeClassnameTags123Api.md
docs/File.md
docs/FileSchemaTestClass.md
docs/FormatTest.md
docs/HasOnlyReadOnly.md
docs/List.md
docs/MapTest.md
docs/MixedPropertiesAndAdditionalPropertiesClass.md
docs/Model200Response.md
docs/ModelClient.md
docs/Name.md
docs/NumberOnly.md
docs/Order.md
docs/OuterComposite.md
docs/OuterEnum.md
docs/Pet.md
docs/PetApi.md
docs/ReadOnlyFirst.md
docs/Return.md
docs/SpecialModelName.md
docs/StoreApi.md
docs/Tag.md
docs/TypeHolderDefault.md
docs/TypeHolderExample.md
docs/User.md
docs/UserApi.md
docs/XmlItem.md
git_push.sh
src/Org.OpenAPITools/Api/AnotherFakeApi.cs
src/Org.OpenAPITools/Api/FakeApi.cs
src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs
src/Org.OpenAPITools/Api/PetApi.cs
src/Org.OpenAPITools/Api/StoreApi.cs
src/Org.OpenAPITools/Api/UserApi.cs
src/Org.OpenAPITools/Client/ApiClient.cs
src/Org.OpenAPITools/Client/ApiException.cs
src/Org.OpenAPITools/Client/ApiResponse.cs
src/Org.OpenAPITools/Client/ClientUtils.cs
src/Org.OpenAPITools/Client/Configuration.cs
src/Org.OpenAPITools/Client/ExceptionFactory.cs
src/Org.OpenAPITools/Client/GlobalConfiguration.cs
src/Org.OpenAPITools/Client/HttpMethod.cs
src/Org.OpenAPITools/Client/IApiAccessor.cs
src/Org.OpenAPITools/Client/IAsynchronousClient.cs
src/Org.OpenAPITools/Client/IReadableConfiguration.cs
src/Org.OpenAPITools/Client/ISynchronousClient.cs
src/Org.OpenAPITools/Client/Multimap.cs
src/Org.OpenAPITools/Client/OpenAPIDateConverter.cs
src/Org.OpenAPITools/Client/RequestOptions.cs
src/Org.OpenAPITools/Model/AdditionalPropertiesAnyType.cs
src/Org.OpenAPITools/Model/AdditionalPropertiesArray.cs
src/Org.OpenAPITools/Model/AdditionalPropertiesBoolean.cs
src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs
src/Org.OpenAPITools/Model/AdditionalPropertiesInteger.cs
src/Org.OpenAPITools/Model/AdditionalPropertiesNumber.cs
src/Org.OpenAPITools/Model/AdditionalPropertiesObject.cs
src/Org.OpenAPITools/Model/AdditionalPropertiesString.cs
src/Org.OpenAPITools/Model/Animal.cs
src/Org.OpenAPITools/Model/ApiResponse.cs
src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs
src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs
src/Org.OpenAPITools/Model/ArrayTest.cs
src/Org.OpenAPITools/Model/BigCat.cs
src/Org.OpenAPITools/Model/BigCatAllOf.cs
src/Org.OpenAPITools/Model/Capitalization.cs
src/Org.OpenAPITools/Model/Cat.cs
src/Org.OpenAPITools/Model/CatAllOf.cs
src/Org.OpenAPITools/Model/Category.cs
src/Org.OpenAPITools/Model/ClassModel.cs
src/Org.OpenAPITools/Model/Dog.cs
src/Org.OpenAPITools/Model/DogAllOf.cs
src/Org.OpenAPITools/Model/EnumArrays.cs
src/Org.OpenAPITools/Model/EnumClass.cs
src/Org.OpenAPITools/Model/EnumTest.cs
src/Org.OpenAPITools/Model/File.cs
src/Org.OpenAPITools/Model/FileSchemaTestClass.cs
src/Org.OpenAPITools/Model/FormatTest.cs
src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs
src/Org.OpenAPITools/Model/List.cs
src/Org.OpenAPITools/Model/MapTest.cs
src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs
src/Org.OpenAPITools/Model/Model200Response.cs
src/Org.OpenAPITools/Model/ModelClient.cs
src/Org.OpenAPITools/Model/Name.cs
src/Org.OpenAPITools/Model/NumberOnly.cs
src/Org.OpenAPITools/Model/Order.cs
src/Org.OpenAPITools/Model/OuterComposite.cs
src/Org.OpenAPITools/Model/OuterEnum.cs
src/Org.OpenAPITools/Model/Pet.cs
src/Org.OpenAPITools/Model/ReadOnlyFirst.cs
src/Org.OpenAPITools/Model/Return.cs
src/Org.OpenAPITools/Model/SpecialModelName.cs
src/Org.OpenAPITools/Model/Tag.cs
src/Org.OpenAPITools/Model/TypeHolderDefault.cs
src/Org.OpenAPITools/Model/TypeHolderExample.cs
src/Org.OpenAPITools/Model/User.cs
src/Org.OpenAPITools/Model/XmlItem.cs
src/Org.OpenAPITools/Org.OpenAPITools.csproj
Loading