1 # gestalt.rb written by Mitchell Foral. mitchell<att>caladbolg.net.
2 # See COPYING for license information.
3 # Ohcount module tweaked for use by Gestalts.
5 $: << File.expand_path(File.dirname(__FILE__))
9 require "gestalt/trigger"
10 require "gestalt/definition"
11 require "gestalt/base"
12 require "gestalt/definitions"
13 require "gestalt/dot_net_definitions"
14 require "gestalt/java_definitions"
15 require "gestalt/gestalt_engine"
16 require "gestalt/gestalt_facts"
22 gestalt_engine = Gestalt::GestaltEngine.new
23 gestalt_engine.process(self)
24 gestalt_engine.calc_gestalts
25 gestalt_engine.gestalts
31 @gestalt_engine = Gestalt::GestaltEngine.new
34 @gestalt_engine.process(iter.sf)
37 @gestalt_engine.calc_gestalts
41 @gestalt_engine.gestalts if @gestalt_engine
44 # call analyze to generate facts from a collection of files (typically a
45 # project directory). Because deducing different facts often requires doing
46 # similar work, this function allows multiple facts to be extracted in one
51 # :gestalt:: platform dependencies and tools usage
52 # :languages:: detailed programming languages facts
53 # :java:: java-related dependencies (jars & imports)
57 # sfl = SourceFileList.new(:dir => '/foo/bar')
58 # sfl.analyze(:languages)
59 # puts sfl.ruby.code.count
61 def analyze(what = [:*])
62 what = [what] unless what.is_a?(Array)
64 do_gestalt = what.include?(:gestalt) || what.include?(:*)
65 do_languages = what.include?(:language) || what.include?(:*)
67 analyze_languages() if do_languages
68 analyze_gestalt() if do_gestalt
74 sourcefile_list = Ohcount::SourceFileList.new()
75 sourcefile_list.add_directory('.') if ARGV.size == 0
76 ARGV.each do |file_or_path|
77 if File.directory?(file_or_path)
78 sourcefile_list.add_directory(file_or_path)
80 sourcefile_list.add_file(file_or_path)
83 STDOUT.puts "Examining #{sourcefile_list.size} file(s) for gestalts."
84 sourcefile_list.analyze_gestalt()
85 sourcefile_list.gestalts.sort.each do |gestalt|
86 puts "#{gestalt.type}\t#{gestalt.count.to_s.rjust(8)}\t#{gestalt.name}"