You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2022/06/20 13:26:18 UTC
[isis] 01/02: ISIS-3078: adds script to perform bulk rename
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-3078
in repository https://gitbox.apache.org/repos/asf/isis.git
commit ba13aec3b10fda56f841ad9daee80a455a444c02
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jun 20 14:21:35 2022 +0100
ISIS-3078: adds script to perform bulk rename
---
scripts/rename/.gitignore | 1 +
scripts/rename/src/Main.groovy | 176 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 177 insertions(+)
diff --git a/scripts/rename/.gitignore b/scripts/rename/.gitignore
new file mode 100644
index 0000000000..c3af857904
--- /dev/null
+++ b/scripts/rename/.gitignore
@@ -0,0 +1 @@
+lib/
diff --git a/scripts/rename/src/Main.groovy b/scripts/rename/src/Main.groovy
new file mode 100644
index 0000000000..e2a67c7ec5
--- /dev/null
+++ b/scripts/rename/src/Main.groovy
@@ -0,0 +1,176 @@
+/**
+ * This doesn't rewrite the contents of the following (binary) extensions:
+ *
+ * .jar
+ * .zip
+ *
+ * .pptx
+ * .docx
+ * .xlsx
+ *
+ * .odt
+ * .rtf
+ * .pdf
+ *
+ */
+class RenameAndRewrite {
+
+ // root of the repo
+ static final ROOT_DIR = "../../.."
+ //static final ROOT_DIR = "../../.." + "/persistence/jdo/metamodel/src/main/resources/META-INF/services"
+
+ static final FROM_LOWERCASE = "isis"
+ static final TO_LOWERCASE = "causeway"
+
+ static final FROM_TITLECASE = FROM_LOWERCASE.capitalize()
+ static final TO_TITLECASE = TO_LOWERCASE.capitalize()
+
+ static final FROM_UPPERCASE = FROM_LOWERCASE.toUpperCase()
+ static final TO_UPPERCASE = TO_LOWERCASE.toUpperCase()
+
+
+ // to obtain all the suffixes:
+ // find . -type f | sed -rn 's|.*/[^/]+\.([^/.]+)$|\1|p' | sort -u
+ static final EXTENSIONS = [
+ "NOTICE",
+ "STATUS",
+ "ConstraintValidator",
+ "CausewayBeanTypeClassifier",
+ "MF",
+ "TXT",
+ "UriBuilderPlugin",
+ "adoc",
+ "bat",
+ "cfg",
+ "css",
+ "dcl",
+ "dtd",
+ "factories",
+ "feature",
+ "fxml",
+ "gql",
+ "graphqls",
+ "hbs",
+ "html",
+ "importorder",
+ "info",
+ "ini",
+ "java",
+ "jdo",
+ "js",
+ "json",
+ "kt",
+ "kts",
+ "ldif",
+ "list",
+ "md",
+ "po",
+ "pot",
+ "properties",
+ "puml",
+ "rdf",
+ "sh",
+ "soc",
+ "svg",
+ "template",
+ "thtml",
+ "ts",
+ "txt",
+ "xml",
+ "xsd",
+ "yaml",
+ "yml"
+ ]
+
+ def renameAllFiles() {
+
+ def currentDir = new File(ROOT_DIR)
+
+ currentDir.eachFileRecurse { File file ->
+ if (file.isDirectory()) {
+ return
+ }
+ renameIfRequired(file)
+ }
+ }
+
+ def renameIfRequired(File file) {
+ def filePathRename = file.path
+ .replaceAll(FROM_TITLECASE, TO_TITLECASE)
+ .replaceAll(FROM_UPPERCASE, TO_UPPERCASE)
+ .replaceAll("\\\\" + FROM_LOWERCASE, "\\\\" + TO_LOWERCASE)
+ .replaceAll("/" + FROM_LOWERCASE, "/" + TO_LOWERCASE)
+ .replaceAll("-" + FROM_LOWERCASE, "-" + TO_LOWERCASE)
+ .replaceAll("_" + FROM_LOWERCASE, "_" + TO_LOWERCASE)
+ .replaceAll("[.]" + FROM_LOWERCASE, "." + TO_LOWERCASE)
+
+ if (!filePathRename.equals(file.path)) {
+
+ println "${file.path} -> ${filePathRename}"
+
+ def fileRename = new File(filePathRename)
+ def parentFile = fileRename.parentFile
+ parentFile.mkdirs()
+
+ file.renameTo(fileRename)
+ }
+ }
+
+ def rewriteAllFileContents() {
+
+ def currentDir = new File(ROOT_DIR)
+
+ currentDir.eachFileRecurse { file ->
+ // println "${file.path}"
+ if (!file.exists()) {
+ return
+ }
+ if (file.isDirectory()) {
+ return
+ }
+ if (file.path.contains(".git\\" )) {
+ return
+ }
+
+ if(fileNameEndsWithSupportedExtension(file)) {
+ rewriteIfRequired(file)
+ }
+ }
+ }
+
+ private void rewriteIfRequired(File file) {
+ def fileText = file.text
+ def updatedFileText = fileText
+ .replaceAll(FROM_LOWERCASE, TO_LOWERCASE)
+ .replaceAll(FROM_UPPERCASE, TO_UPPERCASE)
+ .replaceAll(FROM_TITLECASE, TO_TITLECASE)
+
+ if (!fileText.equals(updatedFileText)) {
+
+ println "rewriting ${file.path}"
+
+ file.write(updatedFileText)
+ }
+ }
+
+
+ private boolean fileNameEndsWithSupportedExtension(File file) {
+ for (ext in EXTENSIONS) {
+ if (file.name.endsWith(ext)) {
+ return true
+ }
+ }
+ return false
+ }
+
+}
+
+
+
+static void main(String[] args) {
+ def rr = new RenameAndRewrite()
+
+ rr.renameAllFiles()
+ rr.rewriteAllFileContents()
+}
+