Class: MvnReactorization
- Inherits:
-
Object
- Object
- MvnReactorization
- Defined in:
- lib/mavenReactorService/MvnReactorization.rb
Constant Summary collapse
- @@reactorHandler =
ReactorHandler.new
- @@dependencyHandler =
DependencyHandler.new
Instance Method Summary collapse
- #addParentTag(pom_document, pomDetailsArr) ⇒ Object
- #createNewParentPom(project_directory_path) ⇒ Object
- #cutPastePom(pomName, project_directory_path) ⇒ Object
- #findHighestVersionOfPom(pomFileArr) ⇒ Object
- #generateFormatedXml(project_directory_path) ⇒ Object
- #getDetails(pomfilePath) ⇒ Object
- #getParentPomArtifactId(project_directory_path) ⇒ Object
- #getRootDirName(project_directory_path) ⇒ Object
- #makeReactor(project_directory_path) ⇒ Object
- #moduleFinder(eachPath) ⇒ Object
- #moduleInvoking(project_directory_path) ⇒ Object
- #moduleWriter(project_directory_path, artiFactArr) ⇒ Object
- #removeChildModuleVersion(project_directory_path) ⇒ Object
- #setprojectVersionInchildModule(pomPathArr, version) ⇒ Object
- #write_nokogiri_to_xml(file_path, nokogiri_obj) ⇒ Object
Instance Method Details
#addParentTag(pom_document, pomDetailsArr) ⇒ Object
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
# File 'lib/mavenReactorService/MvnReactorization.rb', line 160 def addParentTag(pom_document,pomDetailsArr) parentObj = Nokogiri::XML::Node if @@reactorHandler.tag_exists?("parent", pom_document) pom_document.search('project/parent').remove end parentNode = parentObj.new("parent",pom_document) grpObj = Nokogiri::XML::Node grpNode = parentObj.new("groupId",pom_document) artifactObj = Nokogiri::XML::Node artifactNode = parentObj.new("artifactId",pom_document) versionObj = Nokogiri::XML::Node versionNode = parentObj.new("version",pom_document) grpNode.add_child(pomDetailsArr[0]) artifactNode.add_child(pomDetailsArr[1]) versionNode.add_child(pomDetailsArr[2]) parentNode.add_child(grpNode) parentNode.add_child(artifactNode) parentNode.add_child(versionNode) pom_nokogiri = @@dependencyHandler.add_node_element('project', parentNode, pom_document) return pom_nokogiri end |
#createNewParentPom(project_directory_path) ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/mavenReactorService/MvnReactorization.rb', line 27 def createNewParentPom(project_directory_path) artifactArr = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,true) gid = artifactArr[0] artifactId = getRootDirName(project_directory_path) version = artifactArr[2] puts `mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=pom-root -DarchetypeVersion=RELEASE -DinteractiveMode=false -DgroupId=#{gid} -DartifactId=#{artifactId} -Dversion=#{version}` pomPathArr = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,false) setprojectVersionInchildModule(pomPathArr,version) return artifactId end |
#cutPastePom(pomName, project_directory_path) ⇒ Object
105 106 107 108 |
# File 'lib/mavenReactorService/MvnReactorization.rb', line 105 def cutPastePom(pomName,project_directory_path) FileUtils.mv("#{pomName}/pom.xml",project_directory_path) FileUtils.rm_rf(pomName) end |
#findHighestVersionOfPom(pomFileArr) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/mavenReactorService/MvnReactorization.rb', line 43 def findHighestVersionOfPom(pomFileArr) tempHash=Hash.new pomFileArr.each do |eachPath| pomDetArr = getDetails(eachPath) version = pomDetArr[2] numericVersion = version.split(/[^\d]/).join eachValArr = numericVersion.split('') sum=0 eachValArr.each do |char| sum=sum+char.to_i end tempHash[version]=sum end tempVal=0 finalSnapShot ="" tempHash.each do |key,val| if (val>tempVal) tempVal = val finalSnapShot = key end end return finalSnapShot end |
#generateFormatedXml(project_directory_path) ⇒ Object
182 183 184 185 186 187 188 189 190 191 |
# File 'lib/mavenReactorService/MvnReactorization.rb', line 182 def generateFormatedXml(project_directory_path) raise 'Project path is nil' if project_directory_path.nil? raise 'Project path is empty' if project_directory_path.empty? raise 'Project path is invalid' unless Dir.exist?(project_directory_path) pom_file_path = Pathname.new("#{project_directory_path}/pom.xml") formatedDoc = Nokogiri.XML(File.open(pom_file_path)) do |config| config.default_xml.noblanks end write_nokogiri_to_xml(pom_file_path,formatedDoc) end |
#getDetails(pomfilePath) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/mavenReactorService/MvnReactorization.rb', line 86 def getDetails(pomfilePath) artifactArr = Array.new begin xml_file = File.open(pomfilePath) pom_document = Nokogiri::XML(xml_file, &:strict) if @@reactorHandler.tag_exists?('groupId', pom_document) gid= pom_document.search("project/groupId").first.inner_text artId= pom_document.search("project/artifactId").first.inner_text version= pom_document.search("project/version").first.inner_text artifactArr.push(gid) artifactArr.push(artId) artifactArr.push(version) return artifactArr end rescue getDetails(pomfilePath) end end |
#getParentPomArtifactId(project_directory_path) ⇒ Object
147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/mavenReactorService/MvnReactorization.rb', line 147 def getParentPomArtifactId(project_directory_path) pom_file_path = Pathname.new("#{project_directory_path}/pom.xml") pomDetailsArr = getDetails(pom_file_path) childPathArr = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,false) childPathArr.each do |eachPath| pom_document = @@reactorHandler.parse_xml_from_file(eachPath) pom_nokogiri = addParentTag(pom_document,pomDetailsArr) File.write(eachPath, pom_nokogiri) filteredPath = eachPath.chomp("/pom.xml") generateFormatedXml(filteredPath) end end |
#getRootDirName(project_directory_path) ⇒ Object
38 39 40 41 |
# File 'lib/mavenReactorService/MvnReactorization.rb', line 38 def getRootDirName(project_directory_path) rootDir = project_directory_path.split("/").last return rootDir end |
#makeReactor(project_directory_path) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/mavenReactorService/MvnReactorization.rb', line 8 def makeReactor(project_directory_path) puts "Reactorization process is started" raise 'Project path is nil' if project_directory_path.nil? raise 'Project path is empty' if project_directory_path.empty? raise 'Project path is invalid' unless Dir.exist?(project_directory_path) pom_file_path = Pathname.new("#{project_directory_path}/pom.xml") if !pom_file_path.exist? pomName = createNewParentPom(project_directory_path) cutPastePom("#{project_directory_path}/#{pomName}",project_directory_path) end artiFactArr = moduleInvoking(project_directory_path) moduleWriter(project_directory_path,artiFactArr) getParentPomArtifactId(project_directory_path) removeChildModuleVersion(project_directory_path) generateFormatedXml(project_directory_path) `mvn com.github.ekryd.sortpom:sortpom-maven-plugin:sort` puts "Reactor process successfully done" end |
#moduleFinder(eachPath) ⇒ Object
121 122 123 124 125 126 127 128 |
# File 'lib/mavenReactorService/MvnReactorization.rb', line 121 def moduleFinder(eachPath) dirArr = Array.new dir = File.("..", eachPath) dirStr = dir.to_s dirArr = dirStr.split("/") moduleDir = dirArr[dirArr.length-1] return moduleDir end |
#moduleInvoking(project_directory_path) ⇒ Object
110 111 112 113 114 115 116 117 118 119 |
# File 'lib/mavenReactorService/MvnReactorization.rb', line 110 def moduleInvoking(project_directory_path) childPathArr = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,false) artiFactArr = Array.new childPathArr.each do |eachPath| pom_document = @@reactorHandler.parse_xml_from_file(eachPath) moduleDir = moduleFinder(eachPath) artiFactArr.push(moduleDir) end return artiFactArr end |
#moduleWriter(project_directory_path, artiFactArr) ⇒ Object
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/mavenReactorService/MvnReactorization.rb', line 130 def moduleWriter(project_directory_path,artiFactArr) pom_file_path = Pathname.new("#{project_directory_path}/pom.xml") pomDocument = @@reactorHandler.parse_xml_from_file(pom_file_path) if !@@reactorHandler.tag_exists?('modules', pomDocument) nokmoduleObj = Nokogiri::XML::Node modulenode = nokmoduleObj.new("modules",pomDocument) artiFactArr.each do |eachArtifact| nokEachArtifact = Nokogiri::XML::Node nokEachArtifactNode = nokEachArtifact.new("module",pomDocument) nokEachArtifactNode.add_child(eachArtifact) modulenode.add_child(nokEachArtifactNode) end pom_nokogiri = @@dependencyHandler.add_node_element('project', modulenode, pomDocument) File.write(pom_file_path, pom_nokogiri) end end |
#removeChildModuleVersion(project_directory_path) ⇒ Object
199 200 201 202 203 204 205 206 207 |
# File 'lib/mavenReactorService/MvnReactorization.rb', line 199 def removeChildModuleVersion(project_directory_path) childPomArrPathArr = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,false) childPomArrPathArr.each do |eachPath| pom_document = @@reactorHandler.parse_xml_from_file(eachPath) pom_document.at_css("project/version").remove File.write(eachPath, pom_document) end puts "Remove version is done" end |
#setprojectVersionInchildModule(pomPathArr, version) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/mavenReactorService/MvnReactorization.rb', line 67 def setprojectVersionInchildModule(pomPathArr,version) pomPathArr.each do |eachPomPath| file = File.open(eachPomPath) pom_document = Nokogiri::XML(file) file.close projectNode = pom_document.at("project") nokObj = Nokogiri::XML::Node versionNode = nokObj.new("version",projectNode) versionNode.content=version if ( @@reactorHandler.tag_exists?('parent', pom_document)) projectNode.css("version")[1].remove else projectNode.css("version")[0].remove end projectNode.add_child(versionNode) File.write(eachPomPath,projectNode) end end |
#write_nokogiri_to_xml(file_path, nokogiri_obj) ⇒ Object
193 194 195 196 197 |
# File 'lib/mavenReactorService/MvnReactorization.rb', line 193 def write_nokogiri_to_xml(file_path, nokogiri_obj) raise 'Supplied output file path is nil' if file_path.nil? raise 'Nokogiri Object Nil error' if nokogiri_obj.nil? File.write(file_path, nokogiri_obj.to_xml) end |