forked from integrity/integrity
/
integrity.rb
82 lines (68 loc) · 2.02 KB
/
integrity.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
require "rubygems"
require "json"
require "dm-core"
require "dm-validations"
require "dm-types"
require "dm-timestamps"
require "dm-aggregates"
require "yaml"
require "logger"
require "digest/sha1"
require "timeout"
require "ostruct"
require "fileutils"
require "integrity/core_ext/object"
require "integrity/core_ext/string"
require "integrity/project"
require "integrity/build"
require "integrity/project_builder"
require "integrity/scm"
require "integrity/scm/git"
require "integrity/notifier"
module Integrity
def self.new(config_file = nil)
self.config = config_file unless config_file.nil?
DataMapper.logger = self.logger if config[:log_debug_info]
DataMapper.setup(:default, config[:database_uri])
end
def self.root
@root ||= File.expand_path(File.dirname(__FILE__) / "..")
end
def self.default_configuration
@defaults ||= { :database_uri => "sqlite3::memory:",
:export_directory => root / "exports",
:log => STDOUT,
:base_uri => "http://localhost:8910",
:use_basic_auth => false,
:build_all_commits => true,
:log_debug_info => false }
end
def self.config
@config ||= default_configuration.dup
end
def self.config=(file)
@config = default_configuration.merge(YAML.load_file(file))
end
def self.log(message, &block)
logger.info(message, &block)
end
def self.logger
@logger ||= Logger.new(config[:log], "daily").tap do |logger|
logger.formatter = LogFormatter.new
end
end
def self.version
@version ||= begin
file = YAML.load_file(Integrity.root / "VERSION.yml")
"#{file['major']}.#{file['minor']}.#{file['patch']}"
end
end
private
class LogFormatter < Logger::Formatter
def call(severity, time, progname, msg)
time.strftime("[%H:%M:%S] ") + msg2str(msg) + "\n"
end
end
end
# push vendored libraries to load paths
$:.unshift *Dir["#{Integrity.root}/vendor/**/lib"].to_a