lib/hoc.rb in hoc-0.8 vs lib/hoc.rb in hoc-0.8.1

- old
+ new

@@ -1,9 +1,9 @@ # encoding: utf-8 # -# Copyright (c) 2014-2017 Teamed.io -# Copyright (c) 2014-2017 Yegor Bugayenko +# Copyright (c) 2014-2018 Teamed.io +# Copyright (c) 2014-2018 Yegor Bugayenko # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the 'Software'), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell @@ -23,34 +23,46 @@ require 'hoc/git' require 'hoc/svn' # HOC main module. -# Author:: Yegor Bugayenko (yegor@teamed.io) -# Copyright:: Copyright (c) 2014-2017 Yegor Bugayenko +# Author:: Yegor Bugayenko (yegor256@gmail.com) +# Copyright:: Copyright (c) 2014-2018 Yegor Bugayenko # License:: MIT module HOC # Code base abstraction class Base # Ctor. # +opts+:: Options def initialize(opts) @dir = opts[:dir] - raise 'only "int" format is supported now' unless - opts[:format].nil? || opts[:format] == 'int' - @exclude = opts[:exclude].nil? ? [] : opts[:exclude] + @exclude = opts[:exclude] || [] + @author = opts[:author] || '' + @format = opts[:format] || 'int' end # Generate report. def report repo = nil if File.exist?(File.join(@dir, '.git')) - repo = Git.new(@dir, @exclude) + repo = Git.new(@dir, @exclude, @author) elsif File.exist?(File.join(@dir, '.svn')) repo = Svn.new(@dir) else - raise 'only Git repositories supported now' + raise 'Only Git repositories supported now' end - repo.hits.map(&:total).inject(:+) + count = repo.hits.map(&:total).inject(:+) + case @format + when 'xml' + "<hoc><total>#{count}</total></hoc>" + when 'json' + "{\"total\":#{count}}" + when 'text' + "Total Hits-of-Code: #{count}" + when 'int' + count + else + raise 'Only "text|xml|json|int" formats are supported now' + end end end end