Sha256: b01af04e770f6debd50a3056d3656ac353ab2d64f52b3c9c046803c7a15e80c1

Contents?: true

Size: 1.08 KB

Versions: 7

Compression:

Stored size: 1.08 KB

Contents

require "plist"
require "linter/abstract_linter"

module Playgroundbook
  MANIFEST_FILE_NAME = "Manifest.plist".freeze

  # A base inplementation of a linter for verifying the contents of manifest
  # files.
  class ManifestLinter < AbstractLinter
    # TODO: Should load manifest file in initialize instead of lazily.

    def lint
      fail_lint "No Manifest file in #{Dir.pwd}" unless manifest_file_exists?
      fail_lint "Manifest file missing Name in #{Dir.pwd}" unless name?
    end

    def manifest_file_exists?
      File.exist? MANIFEST_FILE_NAME
    end

    def manifest_plist_contents
      return @manifest_plist_contents unless @manifest_plist_contents.nil?
      require "plist"
      @manifest_plist_contents = Plist.parse_xml(MANIFEST_FILE_NAME)
      @manifest_plist_contents
    end

    def name?
      value_defined_in_manifest?("Name")
    end

    def value_defined_in_manifest?(key)
      return false if manifest_plist_contents.nil?
      return false if manifest_plist_contents[key].nil?
      return false if manifest_plist_contents[key].empty?
      true
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
playgroundbook-1.2.0 lib/linter/manifest_linter.rb
playgroundbook-1.1.1 lib/linter/manifest_linter.rb
playgroundbook-1.1.0 lib/linter/manifest_linter.rb
playgroundbook-1.0.0 lib/linter/manifest_linter.rb
playgroundbook-0.6.0 lib/linter/manifest_linter.rb
playgroundbook-0.5.0 lib/linter/manifest_linter.rb
playgroundbook-0.4.0 lib/linter/manifest_linter.rb