diff --git a/new.sh b/new.sh index 714c2ac7e52..4ae12beba55 100755 --- a/new.sh +++ b/new.sh @@ -91,6 +91,12 @@ while getopts ":hcsdtn:" arg; do esac done +if [ -z "$gen_type" ]; then + echo "[error] You may set a generator type" >&2 + usage >&2 + exit 1 +fi + [ -z "${gen_name}" ] && usage titleCase() { @@ -103,7 +109,19 @@ titleCase() { } kebabCase() { - echo $1 | tr '-' ' ' | tr '_' ' ' | tr '[:upper:]' '[:lower:]' | tr ' ' '-' + echo $1 | tr '_' ' ' | tr ' ' '-' | tr '[:upper:]' '[:lower:]' +} + +kebabCasePath() { + echo $1 | tr '_' ' ' | tr ' ' '-' | tr '-' '/' | tr '[:upper:]' '[:lower:]' +} + +kebabCasePathWin() { + echo $1 | tr '_' ' ' | tr ' ' '-' | tr '-' '\\' | tr '[:upper:]' '[:lower:]' +} + +kebabCasePkg() { + echo $1 | tr '_' ' ' | tr ' ' '-' | tr '-' '.' | tr '[:upper:]' '[:lower:]' } upperCase() { @@ -112,6 +130,9 @@ upperCase() { declare lang_classname=$(titleCase "${gen_name}-${gen_type}-Codegen") declare gen_name_camel=$(kebabCase "${gen_name}") +declare gen_name_camel_path=$(kebabCasePath "${gen_name}") +declare gen_name_camel_pathwin=$(kebabCasePathWin "${gen_name}") +declare gen_name_camel_pkg=$(kebabCasePkg "${gen_name}") declare codegen_type_enum=$(upperCase "${gen_type}") # Step 1: Add Language Generator @@ -146,20 +167,20 @@ public class ${lang_classname} extends DefaultCodegen implements CodegenConfig { } public String getName() { - return "${gen_name}"; + return "${gen_name_camel}"; } public String getHelp() { - return "Generates a ${gen_name} ${gen_type}."; + return "Generates a ${gen_name_camel} ${gen_type}."; } public ${lang_classname}() { super(); - outputFolder = "generated-code" + File.separator + "${gen_name}"; + outputFolder = "generated-code" + File.separator + "${gen_name_camel}"; modelTemplateFiles.put("model.mustache", ".zz"); apiTemplateFiles.put("api.mustache", ".zz"); - embeddedTemplateDir = templateDir = "${gen_name}-${gen_type}"; + embeddedTemplateDir = templateDir = "${gen_name_camel}-${gen_type}"; apiPackage = File.separator + "Apis"; modelPackage = File.separator + "Models"; supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); @@ -172,19 +193,19 @@ EOF echo -e "\norg.openapitools.codegen.languages.${lang_classname}" >> "${root}/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig" # Step 3: Create resource files -mkdir -p "${root}/modules/openapi-generator/src/main/resources/${gen_name}-${gen_type}" -echo "Creating modules/openapi-generator/src/main/resources/${gen_name}-${gen_type}/README.mustache" && \ - touch "${root}/modules/openapi-generator/src/main/resources/${gen_name}-${gen_type}/README.mustache" -echo "Creating modules/openapi-generator/src/main/resources/${gen_name}-${gen_type}/model.mustache" && \ - touch "${root}/modules/openapi-generator/src/main/resources/${gen_name}-${gen_type}/model.mustache" -echo "Creating modules/openapi-generator/src/main/resources/${gen_name}-${gen_type}/api.mustache" && \ - touch "${root}/modules/openapi-generator/src/main/resources/${gen_name}-${gen_type}/api.mustache" +mkdir -p "${root}/modules/openapi-generator/src/main/resources/${gen_name_camel}-${gen_type}" +echo "Creating modules/openapi-generator/src/main/resources/${gen_name_camel}-${gen_type}/README.mustache" && \ + touch "${root}/modules/openapi-generator/src/main/resources/${gen_name_camel}-${gen_type}/README.mustache" +echo "Creating modules/openapi-generator/src/main/resources/${gen_name_camel}-${gen_type}/model.mustache" && \ + touch "${root}/modules/openapi-generator/src/main/resources/${gen_name_camel}-${gen_type}/model.mustache" +echo "Creating modules/openapi-generator/src/main/resources/${gen_name_camel}-${gen_type}/api.mustache" && \ + touch "${root}/modules/openapi-generator/src/main/resources/${gen_name_camel}-${gen_type}/api.mustache" # Step 4: Create bash/batch scripts ## Windows batch file -echo "Creating bin/windows/${gen_name}-${gen_type}-petstore.bat" -cat > "${root}/bin/windows/${gen_name}-${gen_type}-petstore.bat"< "${root}/bin/windows/${gen_name_camel}-${gen_type}-petstore.bat"< "${root}/bin/${gen_name}-${gen_type}-petstore.sh"< "${root}/bin/${gen_name_camel}-${gen_type}-petstore.sh"< "${root}/modules/openapi-generator/src/test/java/org/openapitools/codegen/${gen_name_camel}/${lang_classname}Test.java"< "${root}/modules/openapi-generator/src/test/java/org/openapitools/codegen/${gen_name_camel_path}/${lang_classname}Test.java"< "${root}/modules/openapi-generator/src/test/java/org/openapitools/codegen/${gen_name_camel}/${lang_classname}ModelTest.java"< "${root}/modules/openapi-generator/src/test/java/org/openapitools/codegen/${gen_name_camel_path}/${lang_classname}ModelTest.java"< "${root}/modules/openapi-generator/src/test/java/org/openapitools/codegen/${gen_name_camel}/${lang_classname}OptionsTest.java"< "${root}/modules/openapi-generator/src/test/java/org/openapitools/codegen/${gen_name_camel_path}/${lang_classname}OptionsTest.java"<