lib/apstrings.rb in apstrings-0.3.1 vs lib/apstrings.rb in apstrings-0.3.3

- old
+ new

@@ -3,10 +3,11 @@ module Apstrings require 'apstrings/reader' require 'apstrings/strings_parser' require 'apstrings/strings_validator' require 'apstrings/logger' +require 'open3' # Public def self.parse(file) file = Apstrings::read(file) StringsParser.new(file).parse_file @@ -15,10 +16,40 @@ def self.read(file) Reader.read(file) end def self.validate(file,masterFile = nil) - Validator::validate(file,masterFile) + + valid_strings , valid_master = false, true + Open3.popen3("plutil", "-lint" ,"#{file}") {|i, o, e, t| + if t.value.exitstatus == 0 + valid_strings = true + else + valid_strings = false + error = e.gets + output = o.gets + message = (error != nil ? error : output) + Apstrings::log_error(" Format error in #{file}: #{message}") + end + } + + if masterFile != nil + Open3.popen3("plutil", "-lint" ,"#{masterFile}") {|i, o, e, t| + if t.value.exitstatus == 0 + valid_master = true + else + valid_master = false + error = e.gets + output = o.gets + message = (error != nil ? error : output) + Apstrings::log_error(" Format error in #{file}: #{message}") + end + } + end + + if valid_strings && valid_master + Validator::validate(file,masterFile) + end end def self.log_info(message) Log::info(message) end