Skip to content

Commit

Permalink
Merge pull request #11170 from swagger-api/readme-php-gitlab
Browse files Browse the repository at this point in the history
feat. option gitRepoBaseURL for PHP generator
  • Loading branch information
gracekarina committed Sep 17, 2021
2 parents cf38a24 + 76c950b commit e8c40e6
Show file tree
Hide file tree
Showing 12 changed files with 240 additions and 15 deletions.
Expand Up @@ -149,6 +149,10 @@ public class Generate implements Runnable {
description = CodegenConstants.GIT_REPO_ID_DESC)
private String gitRepoId;

@Option(name = {"--git-repo-base-url"}, title = "git repo base url",
description = CodegenConstants.GIT_REPO_BASE_URL_DESC)
private String gitRepoBaseURL;

@Option(name = {"--release-note"}, title = "release note",
description = CodegenConstants.RELEASE_NOTE_DESC)
private String releaseNote;
Expand Down Expand Up @@ -263,6 +267,10 @@ public void run() {
configurator.setGitRepoId(gitRepoId);
}

if (isNotEmpty(gitRepoBaseURL)) {
configurator.setGitRepoBaseURL(gitRepoBaseURL);
}

if (isNotEmpty(releaseNote)) {
configurator.setReleaseNote(releaseNote);
}
Expand Down
Expand Up @@ -202,6 +202,10 @@ public interface CodegenConfig {

String getGitRepoId();

void setGitRepoBaseURL(String repositoryBaseURL);

String getGitRepoBaseURL();

void setReleaseNote(String releaseNote);

String getReleaseNote();
Expand Down Expand Up @@ -233,5 +237,4 @@ public interface CodegenConfig {
void setIgnoreImportMapping(boolean ignoreImportMapping);

boolean defaultIgnoreImportMappingOption();

}
Expand Up @@ -178,6 +178,9 @@ public static enum ENUM_PROPERTY_NAMING_TYPE {camelCase, PascalCase, snake_case,
public static final String GIT_REPO_ID = "gitRepoId";
public static final String GIT_REPO_ID_DESC = "Git repo ID, e.g. swagger-codegen.";

public static final String GIT_REPO_BASE_URL = "gitRepoBaseURL";
public static final String GIT_REPO_BASE_URL_DESC = "Git repo base URL, e.g. https://github.com.";

public static final String RELEASE_NOTE = "releaseNote";
public static final String RELEASE_NOTE_DESC = "Release note, default to 'Minor update'.";

Expand Down
Expand Up @@ -103,7 +103,7 @@ public class DefaultCodegen {
protected Boolean sortParamsByRequiredFlag = true;
protected Boolean ensureUniqueParams = true;
protected Boolean allowUnicodeIdentifiers = false;
protected String gitUserId, gitRepoId, releaseNote;
protected String gitUserId, gitRepoId, releaseNote, gitRepoBaseURL /*= "github"*/;
protected String httpUserAgent;
protected Boolean hideGenerationTimestamp = true;
protected Boolean skipAliasGeneration;
Expand All @@ -117,6 +117,7 @@ public class DefaultCodegen {

protected String ignoreFilePathOverride;


public List<CliOption> cliOptions() {
return cliOptions;
}
Expand Down Expand Up @@ -3659,6 +3660,24 @@ public String getGitRepoId() {
return gitRepoId;
}

/**
* Set Git repo Base URL.
*
* @param gitRepoBaseURL Git repo ID
*/
public void setGitRepoBaseURL(String gitRepoBaseURL) {
this.gitRepoBaseURL = gitRepoBaseURL;
}

/**
* Git repo Base URL
*
* @return Git Base URL
*/
public String getGitRepoBaseURL() {
return gitRepoBaseURL;
}

/**
* Set release note.
*
Expand Down
Expand Up @@ -65,11 +65,12 @@ public class CodegenConfigurator implements Serializable {
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
private Map<String, String> importMappings = new HashMap<String, String>();
private Set<String> languageSpecificPrimitives = new HashSet<String>();
private Map<String, String> reservedWordMappings = new HashMap<String, String>();
private Map<String, String> reservedWordMappings = new HashMap<String, String>();

private String gitUserId="GIT_USER_ID";
private String gitRepoId="GIT_REPO_ID";
private String releaseNote="Minor update";
private String gitUserId = "GIT_USER_ID";
private String gitRepoId = "GIT_REPO_ID";
private String gitRepoBaseURL = "GIT_REPO_BASE_URL";
private String releaseNote = "Minor update";
private String httpUserAgent;

private final Map<String, Object> dynamicProperties = new HashMap<String, Object>(); //the map that holds the JsonAnySetter/JsonAnyGetter values
Expand Down Expand Up @@ -339,6 +340,15 @@ public String getGitRepoId() {
return gitRepoId;
}

public CodegenConfigurator setGitRepoBaseURL(String gitRepoBaseURL) {
this.gitRepoBaseURL = gitRepoBaseURL;
return this;
}

public String getGitRepoBaseURL() {
return gitRepoBaseURL;
}

public CodegenConfigurator setGitRepoId(String gitRepoId) {
this.gitRepoId = gitRepoId;
return this;
Expand All @@ -358,11 +368,11 @@ public String getHttpUserAgent() {
}

public CodegenConfigurator setHttpUserAgent(String httpUserAgent) {
this.httpUserAgent= httpUserAgent;
this.httpUserAgent = httpUserAgent;
return this;
}

public Map<String, String> getReservedWordsMappings() {
public Map<String, String> getReservedWordsMappings() {
return reservedWordMappings;
}

Expand Down Expand Up @@ -461,8 +471,7 @@ private void handleDynamicProperties(CodegenConfig codegenConfig) {
String opt = langCliOption.getOpt();
if (dynamicProperties.containsKey(opt)) {
codegenConfig.additionalProperties().put(opt, dynamicProperties.get(opt));
}
else if(systemProperties.containsKey(opt)) {
} else if (systemProperties.containsKey(opt)) {
codegenConfig.additionalProperties().put(opt, systemProperties.get(opt));
}
}
Expand Down Expand Up @@ -520,5 +529,5 @@ public static CodegenConfigurator fromFile(String configFile) {
}
return null;
}

}

Expand Up @@ -143,6 +143,7 @@ public PhpClientCodegen() {
cliOptions.add(new CliOption(CodegenConstants.GIT_USER_ID, CodegenConstants.GIT_USER_ID_DESC));
cliOptions.add(new CliOption(COMPOSER_PROJECT_NAME, "The project name used in the composer package name. The template uses {{composerVendorName}}/{{composerProjectName}} for the composer package name. e.g. petstore-client. IMPORTANT NOTE (2016/03): composerProjectName will be deprecated and replaced by gitRepoId in the next swagger-codegen release"));
cliOptions.add(new CliOption(CodegenConstants.GIT_REPO_ID, CodegenConstants.GIT_REPO_ID_DESC));
cliOptions.add(new CliOption(CodegenConstants.GIT_REPO_BASE_URL, CodegenConstants.GIT_REPO_BASE_URL_DESC));
cliOptions.add(new CliOption(CodegenConstants.ARTIFACT_VERSION, "The version to use in the composer package version field. e.g. 1.2.3"));
cliOptions.add(new CliOption(CodegenConstants.HIDE_GENERATION_TIMESTAMP, CodegenConstants.ALLOW_UNICODE_IDENTIFIERS_DESC)
.defaultValue(Boolean.TRUE.toString()));
Expand Down Expand Up @@ -271,6 +272,16 @@ public void processOpts() {
additionalProperties.put(CodegenConstants.GIT_REPO_ID, gitRepoId);
}

if (additionalProperties.containsKey(CodegenConstants.GIT_REPO_BASE_URL)) {
this.setGitRepoBaseURL((String) additionalProperties.get(CodegenConstants.GIT_REPO_BASE_URL));
} else {
if (gitRepoBaseURL == null) {
gitRepoBaseURL = "github";
}
additionalProperties.put(CodegenConstants.GIT_REPO_BASE_URL, gitRepoBaseURL);

}

if (additionalProperties.containsKey(CodegenConstants.ARTIFACT_VERSION)) {
this.setArtifactVersion((String) additionalProperties.get(CodegenConstants.ARTIFACT_VERSION));
} else {
Expand Down
Expand Up @@ -31,7 +31,7 @@ To install the bindings via [Composer](http://getcomposer.org/), add the followi
"repositories": [
{
"type": "git",
"url": "https://github.com/{{#composerVendorName}}{{.}}{{/composerVendorName}}{{^composerVendorName}}{{gitUserId}}{{/composerVendorName}}/{{#composerProjectName}}{{.}}{{/composerProjectName}}{{^composerProjectName}}{{gitRepoId}}{{/composerProjectName}}.git"
"url": "https://{{gitRepoBaseURL}}.com/{{#composerVendorName}}{{.}}{{/composerVendorName}}{{^composerVendorName}}{{gitUserId}}{{/composerVendorName}}/{{#composerProjectName}}{{.}}{{/composerProjectName}}{{^composerProjectName}}{{gitRepoId}}{{/composerProjectName}}.git"
}
],
"require": {
Expand Down
Expand Up @@ -37,16 +37,16 @@ if [ "$git_remote" = "" ]; then # git remote not defined

if [ "$GIT_TOKEN" = "" ]; then
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
git remote add origin https://${git_repo_base_url}.com/${git_user_id}/${git_repo_id}.git
else
git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_repo_base_url}.com/${git_user_id}/${git_repo_id}.git
fi

fi

git pull origin master

# Pushes (Forces) the changes in the local repository up to the remote repository
echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git"
echo "Git pushing to https://${git_repo_base_url}.com/${git_user_id}/${git_repo_id}.git"
git push origin master 2>&1 | grep -v 'To https'

Expand Up @@ -2,6 +2,7 @@

import io.swagger.codegen.config.CodegenConfigurator;
import io.swagger.codegen.languages.JavaClientCodegen;
import io.swagger.codegen.languages.PhpClientCodegen;
import io.swagger.codegen.languages.SpringCodegen;
import io.swagger.models.ExternalDocs;
import io.swagger.models.Swagger;
Expand All @@ -11,6 +12,7 @@
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.junit.rules.TemporaryFolder;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
Expand Down Expand Up @@ -53,6 +55,57 @@ public void tearDown() throws Exception {
folder.delete();
}

@Test
public void testPHPRepositoryBaseURLOption() throws Exception {
final File output = folder.getRoot();
ParseOptions parseOptions = new ParseOptions();
parseOptions.setFlatten(true);
Swagger swagger = new SwaggerParser().read("src/test/resources/2_0/readmePHP_149.yaml",null, parseOptions);
CodegenConfig codegenConfig = new PhpClientCodegen();
codegenConfig.setOutputDir(output.getAbsolutePath());
codegenConfig.setGitRepoId("test_repository");
codegenConfig.setGitUserId("user");
codegenConfig.setGitRepoBaseURL("gitlab");

ClientOptInput clientOptInput = new ClientOptInput().opts(new ClientOpts()).swagger(swagger).config(codegenConfig);

//generate
new DefaultGenerator().opts(clientOptInput).generate();

final File readme = new File(output, "/SwaggerClient-php/README.md");
assertTrue(readme.exists());
assertTrue(FileUtils.readFileToString(readme).contains("gitlab"));

final File gitPush = new File(output, "/SwaggerClient-php/git_push.sh");
assertTrue(gitPush.exists());
assertFalse(FileUtils.readFileToString(gitPush).contains("https://github.com"));
}

@Test
public void testPHPRepositoryBaseURLOption_NoOption() throws Exception {
final File output = folder.getRoot();
ParseOptions parseOptions = new ParseOptions();
parseOptions.setFlatten(true);
Swagger swagger = new SwaggerParser().read("src/test/resources/2_0/readmePHP_149.yaml",null, parseOptions);
CodegenConfig codegenConfig = new PhpClientCodegen();
codegenConfig.setOutputDir(output.getAbsolutePath());
codegenConfig.setGitRepoId("test_repository");
codegenConfig.setGitUserId("user");

ClientOptInput clientOptInput = new ClientOptInput().opts(new ClientOpts()).swagger(swagger).config(codegenConfig);

//generate
new DefaultGenerator().opts(clientOptInput).generate();

final File readme = new File(output, "/SwaggerClient-php/README.md");
assertTrue(readme.exists());
assertTrue(FileUtils.readFileToString(readme).contains("https://github.com/user"));

final File gitPush = new File(output, "/SwaggerClient-php/git_push.sh");
assertTrue(gitPush.exists());
assertFalse(FileUtils.readFileToString(gitPush).contains("https://github.com"));
}

@Test
public void testNotNullJacksonAnnotationJava_True() throws IOException {
final File output = folder.getRoot();
Expand Down Expand Up @@ -700,6 +753,7 @@ public void testIssue9725Map() throws Exception {
codegenConfig.setLibrary("spring-cloud");
codegenConfig.setOutputDir(output.getAbsolutePath());


ClientOptInput clientOptInput = new ClientOptInput().opts(new ClientOpts()).swagger(swagger).config(codegenConfig);

//generate
Expand Down
Expand Up @@ -20,6 +20,7 @@ public class PhpClientOptionsProvider implements OptionsProvider {
public static final String COMPOSER_PROJECT_NAME_VALUE = "swagger-client-php";
public static final String GIT_USER_ID_VALUE = "gitSwaggerPhp";
public static final String GIT_REPO_ID_VALUE = "git-swagger-client-php";
public static final String GIT_REPO_BASE_URL_VALUE = "githubPhp";
public static final String ARTIFACT_VERSION_VALUE = "1.0.0-SNAPSHOT";
public static final String ALLOW_UNICODE_IDENTIFIERS_VALUE = "false";

Expand All @@ -44,6 +45,7 @@ public Map<String, String> createOptions() {
.put(CodegenConstants.GIT_USER_ID, GIT_USER_ID_VALUE)
.put(PhpClientCodegen.COMPOSER_PROJECT_NAME, COMPOSER_PROJECT_NAME_VALUE)
.put(CodegenConstants.GIT_REPO_ID, GIT_REPO_ID_VALUE)
.put(CodegenConstants.GIT_REPO_BASE_URL, GIT_REPO_BASE_URL_VALUE)
.put(CodegenConstants.ARTIFACT_VERSION, ARTIFACT_VERSION_VALUE)
.put(CodegenConstants.HIDE_GENERATION_TIMESTAMP, "true")
.put(CodegenConstants.ALLOW_UNICODE_IDENTIFIERS, ALLOW_UNICODE_IDENTIFIERS_VALUE)
Expand Down
Expand Up @@ -48,6 +48,8 @@ protected void setExpectations() {
times = 1;
clientCodegen.setGitRepoId(PhpClientOptionsProvider.GIT_REPO_ID_VALUE);
times = 1;
clientCodegen.setGitRepoBaseURL(PhpClientOptionsProvider.GIT_REPO_BASE_URL_VALUE);
times = 1;
clientCodegen.setArtifactVersion(PhpClientOptionsProvider.ARTIFACT_VERSION_VALUE);
times = 1;
}};
Expand Down

0 comments on commit e8c40e6

Please sign in to comment.