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