From c8f46d8037e5ac30c6c401f2187b08877f4d8869 Mon Sep 17 00:00:00 2001 From: Fulgurance Date: Sun, 7 Jul 2024 18:41:28 +0100 Subject: [PATCH] Improved load and write file process for couples of classes --- ISM/CommandLineSettings.cr | 98 ++++++++++++++--------------- ISM/KernelOption.cr | 30 ++++----- ISM/Port.cr | 23 ++++--- ISM/SoftwareInformation.cr | 125 +++++++++---------------------------- 4 files changed, 101 insertions(+), 175 deletions(-) diff --git a/ISM/CommandLineSettings.cr b/ISM/CommandLineSettings.cr index 6e7d8626..ddf70f62 100644 --- a/ISM/CommandLineSettings.cr +++ b/ISM/CommandLineSettings.cr @@ -412,7 +412,7 @@ module ISM @chrootVariantId) if @rootPath != "/" - writeChrootSettingsFile + writeChrootConfiguration end end @@ -611,42 +611,42 @@ module ISM # Generic def setSecureMode(@secureMode) - writeSettingsFile + writeConfiguration end def setInstallByChroot(@installByChroot) - writeSettingsFile + writeConfiguration end def setRootPath(@rootPath) - writeSettingsFile + writeConfiguration end def setDefaultMirror(@defaultMirror) - writeSettingsFile + writeConfiguration end # Host def setSystemTargetName(@systemTargetName) - writeSettingsFile + writeConfiguration setSystemTarget end def setSystemArchitecture(@systemArchitecture) - writeSettingsFile + writeConfiguration setSystemTarget end def setSystemTarget @systemTarget = @systemArchitecture + "-" + @systemTargetName + "-" + "linux-gnu" - writeSettingsFile + writeConfiguration end def setSystemMakeOptions(@systemMakeOptions) match,invalidValue = Ism.inputMatchWithFilter(@systemMakeOptions,ISM::Default::CommandLineSettings::MakeOptionsFilter) if match - writeSettingsFile + writeConfiguration else puts "#{ISM::Default::CommandLineSettings::ErrorInvalidValueText.colorize(:red)}#{invalidValue.colorize(:red)}" puts "#{ISM::Default::CommandLineSettings::ErrorMakeOptionsInvalidValueAdviceText.colorize(:green)}" @@ -655,97 +655,97 @@ module ISM end def setSystemBuildOptions(@systemBuildOptions) - writeSettingsFile + writeConfiguration end def setSystemName(@systemName) - writeSettingsFile + writeConfiguration end def setSystemFullName(@systemFullName) - writeSettingsFile + writeConfiguration end def setSystemId(@systemId) - writeSettingsFile + writeConfiguration end def setSystemRelease(@systemRelease) - writeSettingsFile + writeConfiguration end def setSystemCodeName(@systemCodeName) - writeSettingsFile + writeConfiguration end def setSystemDescription(@systemDescription) - writeSettingsFile + writeConfiguration end def setSystemVersion(@systemVersion) - writeSettingsFile + writeConfiguration end def setSystemVersionId(@systemVersionId) - writeSettingsFile + writeConfiguration end def setSystemAnsiColor(@systemAnsiColor) - writeSettingsFile + writeConfiguration end def setSystemCpeName(@systemCpeName) - writeSettingsFile + writeConfiguration end def setSystemHomeUrl(@systemHomeUrl) - writeSettingsFile + writeConfiguration end def setSystemSupportUrl(@systemSupportUrl) - writeSettingsFile + writeConfiguration end def setSystemBugReportUrl(@systemBugReportUrl) - writeSettingsFile + writeConfiguration end def setSystemPrivacyPolicyUrl(@systemPrivacyPolicyUrl) - writeSettingsFile + writeConfiguration end def setSystemBuildId(@systemBuildId) - writeSettingsFile + writeConfiguration end def setSystemVariant(@systemVariant) - writeSettingsFile + writeConfiguration end def setSystemVariantId(@systemVariantId) - writeSettingsFile + writeConfiguration end # Chroot def setChrootTargetName(@chrootTargetName) - writeSettingsFile + writeConfiguration setChrootTarget end def setChrootArchitecture(@chrootArchitecture) - writeSettingsFile + writeConfiguration end def setChrootTarget @chrootTarget = @chrootArchitecture + "-" + @chrootTargetName + "-" + "linux-gnu" - writeSettingsFile + writeConfiguration end def setChrootMakeOptions(@chrootMakeOptions) match,invalidValue = Ism.inputMatchWithFilter(@chrootMakeOptions,ISM::Default::CommandLineSettings::MakeOptionsFilter) if match - writeSettingsFile + writeConfiguration else puts "#{ISM::Default::CommandLineSettings::ErrorInvalidValueText.colorize(:red)}#{invalidValue.colorize(:red)}" puts "#{ISM::Default::CommandLineSettings::ErrorChrootMakeOptionsInvalidValueAdviceText.colorize(:green)}" @@ -754,76 +754,76 @@ module ISM end def setChrootBuildOptions(@chrootBuildOptions) - writeSettingsFile + writeConfiguration end def setChrootName(@chrootName) - writeSettingsFile + writeConfiguration end def setChrootFullName(@chrootFullName) - writeSettingsFile + writeConfiguration end def setChrootId(@chrootId) - writeSettingsFile + writeConfiguration end def setChrootRelease(@chrootRelease) - writeSettingsFile + writeConfiguration end def setChrootCodeName(@chrootCodeName) - writeSettingsFile + writeConfiguration end def setChrootDescription(@chrootDescription) - writeSettingsFile + writeConfiguration end def setChrootVersion(@chrootVersion) - writeSettingsFile + writeConfiguration end def setChrootVersionId(@chrootVersionId) - writeSettingsFile + writeConfiguration end def setChrootAnsiColor(@chrootAnsiColor) - writeSettingsFile + writeConfiguration end def setChrootCpeName(@chrootCpeName) - writeSettingsFile + writeConfiguration end def setChrootHomeUrl(@chrootHomeUrl) - writeSettingsFile + writeConfiguration end def setChrootSupportUrl(@chrootSupportUrl) - writeSettingsFile + writeConfiguration end def setChrootBugReportUrl(@chrootBugReportUrl) - writeSettingsFile + writeConfiguration end def setChrootPrivacyPolicyUrl(@chrootPrivacyPolicyUrl) - writeSettingsFile + writeConfiguration end def setChrootBuildId(@chrootBuildId) - writeSettingsFile + writeConfiguration end def setChrootVariant(@chrootVariant) - writeSettingsFile + writeConfiguration end def setChrootVariantId(@chrootVariantId) - writeSettingsFile + writeConfiguration end end diff --git a/ISM/KernelOption.cr b/ISM/KernelOption.cr index b70334be..5e94297c 100644 --- a/ISM/KernelOption.cr +++ b/ISM/KernelOption.cr @@ -17,38 +17,30 @@ module ISM @blockers = Array(String).new) end - def loadInformationFile(loadInformationFilePath : String) + def self.loadConfiguration(path : String) begin - information = KernelOption.from_json(File.read(loadInformationFilePath)) + from_json(File.read(path)) rescue error : JSON::ParseException puts "#{ISM::Default::KernelOption::FileLoadProcessSyntaxErrorText1 + - loadInformationFilePath + + path + ISM::Default::KernelOption::FileLoadProcessSyntaxErrorText2 + error.line_number.to_s}".colorize(:yellow) return end + end - @name = information.name - @tristate = information.tristate - @dependencies = information.dependencies - @singleChoiceDependencies = information.singleChoiceDependencies - @blockers = information.blockers + def loadConfiguration(path : String) + return self.loadConfiguration(path) end - def writeInformationFile(writeInformationFilePath : String) - path = writeInformationFilePath.chomp(writeInformationFilePath[writeInformationFilePath.rindex("/")..-1]) + def writeConfiguration(path : String) + finalPath = path.chomp(path[path.rindex("/")..-1]) - if !Dir.exists?(path) - Dir.mkdir_p(path) + if !Dir.exists?(finalPath) + Dir.mkdir_p(finalPath) end - information = KernelOption.new( @name, - @tristate, - @dependencies, - @singleChoiceDependencies, - @blockers) - - file = File.open(writeInformationFilePath,"w") + file = File.open(path,"w") information.to_json(file) file.close end diff --git a/ISM/Port.cr b/ISM/Port.cr index 6d8b74af..bba1b831 100644 --- a/ISM/Port.cr +++ b/ISM/Port.cr @@ -27,6 +27,14 @@ module ISM FileUtils.rm_r(self.directoryPathPrefix+ARGV[2+Ism.debugLevel]) end + def self.filePath(name : String) : String + return filePathPrefix+name+".json" + end + + def self.directoryPath(name : String) : String + return directoryPathPrefix+name + end + def filePath : String return self.class.filePathPrefix+@name+".json" end @@ -35,18 +43,13 @@ module ISM return self.class.directoryPathPrefix+@name end - def loadPortFile - port = Port.from_json(File.read(filePath)) - - @name = port.name - @url = port.url + def loadConfiguration + self.class.from_json(File.read(filePath)) end - def writePortFile - port = Port.new(@name,@url) - + def writeConfiguration file = File.open(filePath,"w") - port.to_json(file) + to_json(file) file.close end @@ -66,7 +69,7 @@ module ISM result = process.wait if result.success? - writePortFile + writeConfiguration else FileUtils.rm_r(directoryPath) end diff --git a/ISM/SoftwareInformation.cr b/ISM/SoftwareInformation.cr index 3b0600af..1742a89a 100644 --- a/ISM/SoftwareInformation.cr +++ b/ISM/SoftwareInformation.cr @@ -72,120 +72,51 @@ module ISM @allowCodependencies = Array(String).new) end - def isValid : Bool - return (@port != "" && @name != "" && @version != "") && File.exists?(filePath) - end - - def getEnabledPass : String - @options.each do |option| - if option.isPass && option.active - return option.name - end - end - - return String.new - end - - def getEnabledPassNumber : Int32 - stringNumber = getEnabledPass - return stringNumber == "" ? 0 : stringNumber.gsub("Pass","").to_i - end - - def loadInformationFile(loadInformationFilePath : String) + def self.loadConfiguration(path : String) begin - information = Information.from_json(File.read(loadInformationFilePath)) + from_json(File.read(path)) rescue error : JSON::ParseException puts "#{ISM::Default::SoftwareInformation::FileLoadProcessSyntaxErrorText1 + - loadInformationFilePath + + path + ISM::Default::SoftwareInformation::FileLoadProcessSyntaxErrorText2 + error.line_number.to_s}".colorize(:yellow) return end + end - @port = information.port - @name = information.name - @version = information.version - @architectures = information.architectures - @description = information.description - @website = information.website - @installedFiles = information.installedFiles - @kernelDependencies = information.kernelDependencies - @uniqueDependencies = information.uniqueDependencies - @uniqueOptions = information.uniqueOptions - @selectedDependencies = information.selectedDependencies - @allowCodependencies = information.allowCodependencies - - information.dependencies.each do |data| - dependency = ISM::SoftwareDependency.new - dependency.port = data.port - dependency.name = data.name - dependency.version = data.version - dependency.options = data.options - @dependencies << dependency - end - - information.options.each do |data| - dependenciesArray = Array(ISM::SoftwareDependency).new - data.dependencies.each do |dependency| - temporary = ISM::SoftwareDependency.new - temporary.port = dependency.port - temporary.name = dependency.name - temporary.version = dependency.version - temporary.options = dependency.options - dependenciesArray << temporary - end - - option = ISM::SoftwareOption.new - option.name = data.name - option.description = data.description - option.active = data.active - option.dependencies = dependenciesArray - option.kernelDependencies = data.kernelDependencies - @options << option - end + def loadConfiguration(path : String) + return self.class.loadConfiguration(path) end - def writeInformationFile(writeInformationFilePath : String) - path = writeInformationFilePath.chomp(writeInformationFilePath[writeInformationFilePath.rindex("/")..-1]) + def writeInformationFile(path : String) + finalPath = path.chomp(path[path.rindex("/")..-1]) - if !Dir.exists?(path) - Dir.mkdir_p(path) + if !Dir.exists?(finalPath) + Dir.mkdir_p(finalPath) end - dependenciesArray = Array(Dependency).new - @dependencies.each do |data| - dependenciesArray << Dependency.new(data.port,data.name,data.version,data.options) - end + file = File.open(path,"w") + to_json(file) + file.close + end - optionsArray = Array(Option).new - @options.each do |data| - optionsDependenciesArray = Array(Dependency).new - data.dependencies.each do |dependencyData| - dependency = Dependency.new(dependencyData.port,dependencyData.name,dependencyData.requiredVersion,dependencyData.options) - optionsDependenciesArray << dependency - end + def isValid : Bool + return (@port != "" && @name != "" && @version != "") && File.exists?(filePath) + end - optionsArray << Option.new(data.name,data.description,data.active,optionsDependenciesArray,data.kernelDependencies) + def getEnabledPass : String + @options.each do |option| + if option.isPass && option.active + return option.name + end end - information = Information.new( @port, - @name, - @version, - @architectures, - @description, - @website, - @installedFiles, - dependenciesArray, - @kernelDependencies, - optionsArray, - @uniqueDependencies, - @uniqueOptions, - @selectedDependencies, - @allowCodependencies) - - file = File.open(writeInformationFilePath,"w") - information.to_json(file) - file.close + return String.new + end + + def getEnabledPassNumber : Int32 + stringNumber = getEnabledPass + return stringNumber == "" ? 0 : stringNumber.gsub("Pass","").to_i end def hiddenName : String