Sha256: c3f5d3dc495dee0c4a6ad410a31c610e125c9462c9b9f3980953e1d1a0b27625

Contents?: true

Size: 1.17 KB

Versions: 11

Compression:

Stored size: 1.17 KB

Contents

#!/usr/bin/env ruby
#
# Copyright (c) 2007-2017 Minero Aoki, Kenshi Muto
#               1999-2007 Minero Aoki
#
# This program is free software.
# You can distribute or modify this program under the terms of
# the GNU LGPL, Lesser General Public License version 2.1.
# For details of the GNU LGPL, see the file "COPYING".
#

$LOAD_PATH.unshift(File.realpath('../lib', __dir__))

PREDEF_FILE = 'PREDEF'.freeze

def main
  @provided = parse_predefined
  @unprovided = {}
  ARGF.each do |line|
    case line
    when /\A\#@require\((.*)\)/
      kw = $1
      unless @provided.key?(kw)
        puts "#{location}: not provided: #{kw}"
        @unprovided[kw] = location
      end
    when /\A\#@provide\((.*)\)/
      provide($1)
    else
      line.scan(/@<kw>\{(.*?)[,}]/) { provide($1) }
    end
  end
end

def provide(kw)
  @provided[kw] ||= location
  if @unprovided[kw]
    reqpos = @unprovided.delete(kw)
    puts "#{location}: provided now: #{kw} (#{reqpos})"
  end
end

def parse_predefined
  result = {}
  File.foreach(PREDEF_FILE) { |line| result[line.strip] = '(predefined)' }
  result
rescue Errno::ENOENT
  return {}
end

def location
  "#{ARGF.filename}:#{ARGF.file.lineno}"
end

main

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
review-5.10.0 bin/review-checkdep
review-5.9.0 bin/review-checkdep
review-5.8.0 bin/review-checkdep
review-5.7.0 bin/review-checkdep
review-5.6.0 bin/review-checkdep
review-5.5.0 bin/review-checkdep
review-5.4.0 bin/review-checkdep
review-5.3.0 bin/review-checkdep
review-5.2.0 bin/review-checkdep
review-5.1.1 bin/review-checkdep
review-5.1.0 bin/review-checkdep