class Verifier

Copyright (C) 2011-2013 Cornelius Schumacher <schumacher@kde.org>

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Public Class Methods

new(settings) click to toggle source
# File lib/verifier.rb, line 55
def initialize settings
  @settings = settings
end

Public Instance Methods

verify(manifest) click to toggle source
# File lib/verifier.rb, line 59
def verify manifest
  @result = Result.new

  if !manifest.filename
    @result.errors.push "Unable to determine filename"
    @result.name = "<unknown>"
  else
    @result.name = manifest.filename
  end
  if !manifest.libraryname
    @result.errors.push "Unable to determine libraryname"
  end

  if @result.errors.empty?
    filename = manifest.filename
    
    if filename != manifest.expected_filename
      @result.errors.push "Expected file name: #{manifest.expected_filename}"
    end

    if manifest.release_date == "1970-01-01"
      @result.errors.push "Invalid release date: #{manifest.release_date}"
    end

    schema_name = manifest.schema_name
    schema_file = File.expand_path("../../schema/#{schema_name}", __FILE__)

    errors = JSON::Validator.fully_validate(schema_file, manifest.to_json)
    errors.each do |error|
      @result.errors.push "Schema validation error: #{error}"
    end

    if manifest.display_name.nil?
      @result.warnings.push "Warning: missing `display_name` attribute"
    end

    topics =  manifest.topics
    if topics.nil?
      @result.warnings.push "Warning: missing `topics` attribute"
    else
      valid_topics = ['API', 'Artwork', 'Bindings', 'Communication', 'Data', 'Desktop', 'Development', 'Graphics', 'Logging', 'Mobile', 'Multimedia', 'Printing', 'QML', 'Scripting', 'Security', 'Text', 'Web', 'Widgets']
      invalid_topics = topics - valid_topics
      if !invalid_topics.empty?
        @result.errors.push ("Invalid topics " + "'#{invalid_topics.join("', '")}'" + ". Valid topics are " + "'#{valid_topics.join("', '")}'")
      end
    end
  end

  @result
end
verify_file(filename) click to toggle source
# File lib/verifier.rb, line 110
def verify_file filename
  begin
    manifest = Manifest.parse_file filename
  rescue VerificationError => e
    @result = Result.new
    @result.name = filename
    @result.errors.push e
    return @result
  end

  verify manifest
end