foca-integrity 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  major: 0
3
- patch: 6
3
+ patch: 7
4
4
  minor: 1
data/integrity.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{integrity}
5
- s.version = "0.1.6"
5
+ s.version = "0.1.7"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Nicol\303\241s Sanguinetti", "Simon Rozet"]
9
- s.date = %q{2009-01-29}
9
+ s.date = %q{2009-01-31}
10
10
  s.default_executable = %q{integrity}
11
11
  s.description = %q{Your Friendly Continuous Integration server. Easy, fun and painless!}
12
12
  s.email = %q{contacto@nicolassanguinetti.info}
@@ -23,7 +23,7 @@ module Integrity
23
23
  Integrity.new(config)
24
24
  migrate_db(direction)
25
25
  end
26
-
26
+
27
27
  desc "version",
28
28
  "Print the current integrity version"
29
29
  def version
@@ -34,15 +34,14 @@ module Integrity
34
34
  attr_reader :root
35
35
 
36
36
  def migrate_db(direction="up")
37
- require "dm-core"
38
- require "migrations"
39
-
37
+ require 'migrations'
38
+
40
39
  set_up_migrations unless migrations_already_set_up?
41
40
  add_initial_migration if tables_from_before_migrations_exist?
42
41
 
43
42
  case direction.to_s
44
- when "up" then migrate_up!
45
- when "down" then migrate_down!
43
+ when "up" then Integrity::Migrations.migrate_up!
44
+ when "down" then Integrity::Migrations.migrate_down!
46
45
  else raise ArgumentError, "DIRECTION must be either up or down"
47
46
  end
48
47
  end
@@ -97,35 +96,35 @@ module Integrity
97
96
  puts
98
97
  puts %Q(Don't forget to tweak #{root / "config.yml"} to your needs.)
99
98
  end
100
-
99
+
101
100
  def set_up_migrations
102
101
  database_adapter.execute %q(CREATE TABLE "migration_info" ("migration_name" VARCHAR(255));)
103
102
  end
104
-
103
+
105
104
  def add_initial_migration
106
105
  database_adapter.execute %q(INSERT INTO "migration_info" ("migration_name") VALUES ("initial"))
107
106
  end
108
-
107
+
109
108
  def tables_from_before_migrations_exist?
110
109
  table_exists?("integrity_projects") &&
111
110
  table_exists?("integrity_builds") &&
112
111
  table_exists?("integrity_notifiers")
113
112
  end
114
-
113
+
115
114
  def migrations_already_set_up?
116
115
  table_exists?("migration_info")
117
116
  end
118
-
117
+
119
118
  def without_pluralizing_table_names
120
119
  database_adapter.resource_naming_convention = DataMapper::NamingConventions::Resource::Underscored
121
120
  yield
122
121
  database_adapter.resource_naming_convention = DataMapper::NamingConventions::Resource::UnderscoredAndPluralized
123
122
  end
124
-
123
+
125
124
  def table_exists?(table_name)
126
125
  database_adapter.storage_exists?(table_name)
127
126
  end
128
-
127
+
129
128
  def database_adapter
130
129
  DataMapper.repository(:default).adapter
131
130
  end
@@ -1,50 +1,157 @@
1
1
  require "dm-migrations"
2
2
  require "migration_runner"
3
3
 
4
- include DataMapper::Types
5
-
6
- migration 1, :initial do
7
- up do
8
- create_table :integrity_projects do
9
- column :id, Serial
10
- column :name, String, :nullable => false
11
- column :permalink, String
12
- column :uri, URI, :nullable => false
13
- column :branch, String, :nullable => false, :default => "master"
14
- column :command, String, :nullable => false, :default => "rake"
15
- column :public, Boolean, :default => true
16
- column :building, Boolean, :default => false
17
- column :created_at, DateTime
18
- column :updated_at, DateTime
19
-
20
- column :build_id, Serial
21
- column :notifier_id,Serial
22
- end
4
+ module Integrity
5
+ class Migrations
6
+ include DataMapper::Types
23
7
 
24
- create_table :integrity_builds do
25
- column :id, Serial
26
- column :output, Text, :nullable => false, :default => ""
27
- column :successful, Boolean, :nullable => false, :default => false
28
- column :commit_identifier, String, :nullable => false
29
- column :commit_metadata, Yaml, :nullable => false
30
- column :created_at, DateTime
31
- column :updated_at, DateTime
8
+ # not strictly necessary, but it makes it clear what is going on.
9
+ include DataMapper::MigrationRunner
32
10
 
33
- column :project_id, Serial
34
- end
11
+ migration 1, :initial, :verbose => false do
12
+ up do
13
+ create_table :integrity_projects do
14
+ column :id, Integer, :serial => true
15
+ column :name, String, :nullable => false
16
+ column :permalink, String
17
+ column :uri, URI, :nullable => false
18
+ column :branch, String, :nullable => false, :default => "master"
19
+ column :command, String, :nullable => false, :default => "rake"
20
+ column :public, Boolean, :default => true
21
+ column :building, Boolean, :default => false
22
+ column :created_at, DateTime
23
+ column :updated_at, DateTime
24
+
25
+ column :build_id, Integer
26
+ column :notifier_id, Integer
27
+ end
28
+
29
+ create_table :integrity_builds do
30
+ column :id, Integer, :serial => true
31
+ column :output, Text, :nullable => false, :default => ""
32
+ column :successful, Boolean, :nullable => false, :default => false
33
+ column :commit_identifier, String, :nullable => false
34
+ column :commit_metadata, Yaml, :nullable => false
35
+ column :created_at, DateTime
36
+ column :updated_at, DateTime
37
+
38
+ column :project_id, Integer
39
+ end
40
+
41
+ create_table :integrity_notifiers do
42
+ column :id, Integer, :serial => true
43
+ column :name, String, :nullable => false
44
+ column :config, Yaml, :nullable => false
35
45
 
36
- create_table :integrity_notifiers do
37
- column :id, Serial
38
- column :name, String, :nullable => false
39
- column :config, Yaml, :nullable => false
46
+ column :project_id, Integer
47
+ end
48
+ end
40
49
 
41
- column :project_id, Serial
50
+ down do
51
+ drop_table :integrity_notifiers
52
+ drop_table :integrity_projects
53
+ drop_table :integrity_builds
54
+ end
42
55
  end
43
- end
44
56
 
45
- down do
46
- drop_table :integrity_notifiers
47
- drop_table :integrity_projects
48
- drop_table :integrity_builds
57
+ migration 2, :add_commits, :verbose => false do
58
+ up do
59
+ class ::Integrity::Build
60
+ property :commit_identifier, String
61
+ property :commit_metadata, Yaml, :lazy => false
62
+ property :project_id, Integer
63
+ end
64
+
65
+ create_table :integrity_commits do
66
+ column :id, Integer, :serial => true
67
+ column :identifier, String, :nullable => false
68
+ column :message, String, :nullable => false, :length => 255
69
+ column :author, String, :nullable => false, :length => 255
70
+ column :committed_at, DateTime, :nullable => false
71
+ column :created_at, DateTime
72
+ column :updated_at, DateTime
73
+
74
+ column :project_id, Integer
75
+ end
76
+
77
+ modify_table :integrity_builds do
78
+ add_column :commit_id, Integer
79
+ add_column :started_at, DateTime
80
+ add_column :completed_at, DateTime
81
+ end
82
+
83
+ # Die, orphans, die
84
+ Build.all(:project_id => nil).destroy!
85
+
86
+ # sqlite hodgepockery
87
+ all_builds = Build.all.each {|b| b.freeze }
88
+ drop_table :integrity_builds
89
+ create_table :integrity_builds do
90
+ column :id, Integer, :serial => true
91
+ column :started_at, DateTime
92
+ column :completed_at, DateTime
93
+ column :successful, Boolean
94
+ column :output, Text, :nullable => false, :default => ""
95
+ column :created_at, DateTime
96
+ column :updated_at, DateTime
97
+
98
+ column :commit_id, Integer
99
+ end
100
+
101
+ all_builds.each do |build|
102
+ commit = Commit.first(:identifier => build.commit_identifier)
103
+
104
+ if commit.nil?
105
+ commit = Commit.create(:identifier => build.commit_identifier,
106
+ :message => build.commit_metadata[:message],
107
+ :author => build.commit_metadata[:author],
108
+ :committed_at => build.commit_metadata[:date],
109
+ :project_id => build.project_id)
110
+ end
111
+
112
+ Build.create(:commit_id => commit.id,
113
+ :started_at => build.created_at,
114
+ :completed_at => build.updated_at,
115
+ :successful => build.successful,
116
+ :output => build.output)
117
+ end
118
+ end
119
+
120
+ down do
121
+ modify_table :integrity_builds do
122
+ add_column :commit_identifier, String, :nullable => false
123
+ add_column :commit_metadata, Yaml, :nullable => false
124
+ add_column :project_id, Integer
125
+ end
126
+
127
+ # sqlite hodgepockery
128
+ all_builds = Build.all.map {|b| b.freeze }
129
+ drop_table :integrity_builds
130
+ create_table :integrity_builds do
131
+ column :id, Integer, :serial => true
132
+ column :output, Text, :nullable => false, :default => ""
133
+ column :successful, Boolean, :nullable => false, :default => false
134
+ column :commit_identifier, String, :nullable => false
135
+ column :commit_metadata, Yaml, :nullable => false
136
+ column :created_at, DateTime
137
+ column :updated_at, DateTime
138
+ column :project_id, Integer
139
+ end
140
+
141
+ all_builds.each do |build|
142
+ Build.create(:project_id => build.commit.project_id,
143
+ :output => build.output,
144
+ :successful => build.successful,
145
+ :commit_identifier => build.commit.identifier,
146
+ :commit_metadata => {
147
+ :message => build.commit.message,
148
+ :author => build.commit.author.full,
149
+ :date => commit.committed_at
150
+ }.to_yaml)
151
+ end
152
+
153
+ drop_table :commits
154
+ end
155
+ end
49
156
  end
50
157
  end
data/test/helpers.rb CHANGED
@@ -14,10 +14,10 @@ rescue LoadError
14
14
  puts "You're missing some gems required to run the tests."
15
15
  puts "Please run `rake test:install_dependencies`"
16
16
  puts "You'll probably need to run that command as root or with sudo."
17
- puts
17
+ puts
18
18
  puts "Thanks :)"
19
19
  puts
20
-
20
+
21
21
  exit 1
22
22
  end
23
23
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foca-integrity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Nicol\xC3\xA1s Sanguinetti"
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-01-29 00:00:00 -08:00
13
+ date: 2009-01-31 00:00:00 -08:00
14
14
  default_executable: integrity
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency