forked from integrity/integrity
/
integrity.rb
82 lines (68 loc) · 1.89 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
__DIR__ = File.dirname(__FILE__)
$:.unshift "#{__DIR__}/integrity", *Dir["#{__DIR__}/../vendor/**/lib"].to_a
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 "core_ext/object"
require "core_ext/string"
require "project"
require "commit"
require "build"
require "project_builder"
require "scm"
require "scm/git"
require "notifier"
module Integrity
def self.new(config_file = nil)
self.config = config_file unless config_file.nil?
DataMapper.logger = self.logger
DataMapper.setup(:default, config[:database_uri])
end
def self.root
File.expand_path(File.join(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 }
end
def self.config
@config ||= default_configuration
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