heidi 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/Gemfile.lock +3 -0
- data/README.rdoc +20 -0
- data/VERSION +1 -1
- data/bin/heidi +8 -82
- data/heidi.gemspec +49 -10
- data/lib/heidi.rb +4 -0
- data/lib/heidi/build.rb +42 -10
- data/lib/heidi/builder.rb +7 -2
- data/lib/heidi/hook.rb +2 -0
- data/lib/heidi/integrator.rb +11 -5
- data/lib/heidi/project.rb +37 -24
- data/lib/heidi/shell.rb +119 -0
- data/lib/heidi/tester.rb +6 -5
- data/lib/heidi/web.rb +65 -4
- data/lib/heidi/web/assets/css/bootstrap-responsive.css +643 -0
- data/lib/heidi/web/assets/css/bootstrap.css +3682 -0
- data/lib/heidi/web/{public/css/screen.css → assets/css/colors.css} +1 -75
- data/lib/heidi/web/assets/css/docs.css +772 -0
- data/lib/heidi/web/{public → assets}/images/HeidiBlue-480.png +0 -0
- data/lib/heidi/web/{public → assets}/images/HeidiBlue.gif +0 -0
- data/lib/heidi/web/{public → assets}/images/OrganisedMinds.png +0 -0
- data/lib/heidi/web/{public → assets}/images/heidi.jpeg +0 -0
- data/lib/heidi/web/assets/img/glyphicons-halflings-white.png +0 -0
- data/lib/heidi/web/assets/img/glyphicons-halflings.png +0 -0
- data/lib/heidi/web/assets/img/glyphicons/glyphicons_009_magic.png +0 -0
- data/lib/heidi/web/assets/img/glyphicons/glyphicons_042_group.png +0 -0
- data/lib/heidi/web/assets/img/glyphicons/glyphicons_079_podium.png +0 -0
- data/lib/heidi/web/assets/img/glyphicons/glyphicons_082_roundabout.png +0 -0
- data/lib/heidi/web/assets/img/glyphicons/glyphicons_155_show_thumbnails.png +0 -0
- data/lib/heidi/web/assets/img/glyphicons/glyphicons_163_iphone.png +0 -0
- data/lib/heidi/web/assets/img/glyphicons/glyphicons_214_resize_small.png +0 -0
- data/lib/heidi/web/assets/img/glyphicons/glyphicons_266_book_open.png +0 -0
- data/lib/heidi/web/assets/js/README.md +106 -0
- data/lib/heidi/web/assets/js/application.js +180 -0
- data/lib/heidi/web/assets/js/bootstrap-alert.js +94 -0
- data/lib/heidi/web/assets/js/bootstrap-button.js +100 -0
- data/lib/heidi/web/assets/js/bootstrap-carousel.js +157 -0
- data/lib/heidi/web/assets/js/bootstrap-collapse.js +136 -0
- data/lib/heidi/web/assets/js/bootstrap-dropdown.js +92 -0
- data/lib/heidi/web/assets/js/bootstrap-modal.js +210 -0
- data/lib/heidi/web/assets/js/bootstrap-popover.js +95 -0
- data/lib/heidi/web/assets/js/bootstrap-scrollspy.js +125 -0
- data/lib/heidi/web/assets/js/bootstrap-tab.js +130 -0
- data/lib/heidi/web/assets/js/bootstrap-tooltip.js +270 -0
- data/lib/heidi/web/assets/js/bootstrap-transition.js +51 -0
- data/lib/heidi/web/assets/js/bootstrap-typeahead.js +271 -0
- data/lib/heidi/web/assets/js/google-code-prettify/prettify.css +30 -0
- data/lib/heidi/web/assets/js/google-code-prettify/prettify.js +28 -0
- data/lib/heidi/web/assets/js/jquery.js +9252 -0
- data/lib/heidi/web/views/build.erb +40 -24
- data/lib/heidi/web/views/commit.erb +10 -7
- data/lib/heidi/web/views/config.erb +34 -18
- data/lib/heidi/web/views/home.erb +44 -25
- data/lib/heidi/web/views/layout.erb +57 -4
- data/lib/heidi/web/views/new_project.erb +56 -0
- data/lib/heidi/web/views/project.erb +114 -32
- data/lib/heidi/web/views/project_header.erb +20 -0
- data/spec/heidi/build_spec.rb +163 -2
- data/spec/heidi/builder_spec.rb +61 -1
- data/spec/heidi/hook_spec.rb +47 -1
- data/spec/heidi/integrator_spec.rb +96 -1
- data/spec/heidi/project_spec.rb +177 -2
- data/spec/heidi/shell_spec.rb +67 -0
- data/spec/heidi/web_spec.rb +78 -2
- data/spec/heidi_spec.rb +16 -5
- data/spec/spec_helper.rb +1 -1
- data/spec/support/01_rworld.rb +9 -0
- data/spec/support/mock_project.rb +39 -0
- data/spec/support/survivable.rb +10 -0
- metadata +131 -79
- data/spec/heidi/tester_spec.rb +0 -5
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'heidi/shell'
|
3
|
+
|
4
|
+
require 'tmpdir'
|
5
|
+
require 'fileutils'
|
6
|
+
|
7
|
+
describe Heidi::Shell do
|
8
|
+
before(:all) do
|
9
|
+
@here = Dir.pwd
|
10
|
+
@dir = Dir.mktmpdir(nil, "/tmp")
|
11
|
+
FileUtils.chdir(@dir)
|
12
|
+
end
|
13
|
+
|
14
|
+
after(:all) do
|
15
|
+
FileUtils.remove_entry_secure @dir
|
16
|
+
FileUtils.chdir(@here)
|
17
|
+
end
|
18
|
+
|
19
|
+
before(:each) do
|
20
|
+
@shell = Class.new
|
21
|
+
@shell.extend(Heidi::Shell)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should create a root directory" do
|
25
|
+
@shell.new_heidi_root("test")
|
26
|
+
File.exists?(File.join(@dir, "test")).should be_true
|
27
|
+
File.directory?(File.join(@dir, "test", "projects")).should be_true
|
28
|
+
File.exists?(File.join(@dir, "test", "Gemfile")).should be_true
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should create a project directory" do
|
32
|
+
FileUtils.chdir(File.join(@dir, "test"))
|
33
|
+
@shell.new_project("test", "git://github.com/OrganisedMinds/heidi.git")
|
34
|
+
File.directory?(File.join(@dir, "test", "projects", "test")).should be_true
|
35
|
+
File.directory?(File.join(@dir, "test", "projects", "test", "cached")).should be_true
|
36
|
+
File.directory?(File.join(@dir, "test", "projects", "test", "cached", ".git")).should be_true
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should perform integration" do
|
40
|
+
FileUtils.chdir(File.join(@dir, "test"))
|
41
|
+
|
42
|
+
# Patch the default test so it will write a random file.
|
43
|
+
# Then we can test the existance of the file
|
44
|
+
rndm = "#{rand(1000)}.#{rand(1000)}"
|
45
|
+
File.exists?(File.join(@dir, "test", "projects", "test", ".test_#{rndm}")).should be_false
|
46
|
+
|
47
|
+
File.open(File.join(@dir, "test", "projects", "test", "hooks", "tests", "01_rspec"), File::TRUNC|File::WRONLY) do |f|
|
48
|
+
f.puts %Q{#!/bin/sh
|
49
|
+
|
50
|
+
touch $HEIDI_DIR/.test_#{rndm}
|
51
|
+
}
|
52
|
+
end
|
53
|
+
|
54
|
+
# do the integration
|
55
|
+
@shell.integrate("test")
|
56
|
+
|
57
|
+
# and now it should be true
|
58
|
+
File.exists?(File.join(@dir, "test", "projects", "test", ".test_#{rndm}")).should be_true
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should remove a project directory" do
|
62
|
+
FileUtils.chdir(File.join(@dir, "test"))
|
63
|
+
@shell.remove_project("test")
|
64
|
+
File.directory?(File.join(@dir, "test", "projects", "test", "cached")).should be_false
|
65
|
+
File.directory?(File.join(@dir, "test", "projects", "test")).should be_true
|
66
|
+
end
|
67
|
+
end
|
data/spec/heidi/web_spec.rb
CHANGED
@@ -1,6 +1,82 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'rack/test'
|
2
3
|
require 'heidi/web'
|
3
4
|
|
4
5
|
describe Heidi::Web do
|
5
|
-
|
6
|
-
|
6
|
+
before :all do
|
7
|
+
fake_me_a_heidi
|
8
|
+
end
|
9
|
+
|
10
|
+
before :each do
|
11
|
+
Heidi::Web.stub(:project_path).and_return(@fake)
|
12
|
+
@project = @heidi[:heidi_test]
|
13
|
+
@project.name = "Heidi Test Project on the web"
|
14
|
+
end
|
15
|
+
|
16
|
+
after :all do
|
17
|
+
FileUtils.remove_entry_secure @fake
|
18
|
+
end
|
19
|
+
|
20
|
+
include Rack::Test::Methods
|
21
|
+
|
22
|
+
def app
|
23
|
+
Heidi::Web
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should show a homepage" do
|
27
|
+
get '/'
|
28
|
+
last_response.status.should == 200
|
29
|
+
last_response.body.should =~ /Heidi/
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should display the projects on the homepage" do
|
33
|
+
get '/'
|
34
|
+
last_response.status.should == 200
|
35
|
+
last_response.body.should =~ /heidi_test/
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should display a project creation form" do
|
39
|
+
get '/projects/'
|
40
|
+
last_response.status.should == 200
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should display the project page" do
|
44
|
+
get '/projects/heidi_test'
|
45
|
+
last_response.status.should == 200
|
46
|
+
last_response.body.should =~ /<h1>Heidi Test Project on the web<\/h1>/
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should display the configuration page" do
|
50
|
+
get '/projects/heidi_test/configure'
|
51
|
+
last_response.status.should == 200
|
52
|
+
last_response.body.should =~ /Configuration/
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "Project internals" do
|
56
|
+
before :each do
|
57
|
+
@project.integrate
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should display a build" do
|
61
|
+
get "/projects/heidi_test/build/#{@project.builds.last.commit}"
|
62
|
+
last_response.status.should == 200
|
63
|
+
|
64
|
+
title = Regexp.new("<h2 class=[^>]+>build #{@project.builds.last.commit}</h2>", true)
|
65
|
+
last_response.body.should =~ title
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should display a commit" do
|
69
|
+
get "/projects/heidi_test/commit/#{@project.commit}"
|
70
|
+
last_response.status.should == 200
|
71
|
+
last_response.body.should =~ Regexp.new("<h2>#{@project.commit}</h2>")
|
72
|
+
|
73
|
+
author = @project.author.gsub("<", "<")
|
74
|
+
author.gsub!(">", ">")
|
75
|
+
check = Regexp.new("Author: #{author}")
|
76
|
+
last_response.body.should =~ check
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should be able to lock the project" do
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
data/spec/heidi_spec.rb
CHANGED
@@ -2,13 +2,24 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Heidi do
|
4
4
|
before(:all) do
|
5
|
-
|
6
|
-
|
5
|
+
fake_me_a_heidi
|
6
|
+
end
|
7
|
+
|
8
|
+
after(:all) do
|
9
|
+
FileUtils.remove_entry_secure @fake
|
7
10
|
end
|
8
11
|
|
9
12
|
it "should gather projects on load" do
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
+
@heidi.projects.should be_kind_of(Array)
|
14
|
+
@heidi.projects.count.should == 1
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should return projects" do
|
18
|
+
@heidi.projects.first.should be_kind_of(Heidi::Project)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should respond to [] syntax" do
|
22
|
+
@heidi[:heidi_test].should be_kind_of(Heidi::Project)
|
23
|
+
@heidi["heidi_test"].should == @heidi.projects.first
|
13
24
|
end
|
14
25
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -5,7 +5,7 @@ require 'heidi'
|
|
5
5
|
|
6
6
|
# Requires supporting files with custom matchers and macros, etc,
|
7
7
|
# in ./support/ and its subdirectories.
|
8
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
8
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].sort.each {|f| require f}
|
9
9
|
|
10
10
|
RSpec.configure do |config|
|
11
11
|
config.tty = true
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'simple_shell'
|
2
|
+
require 'tmpdir'
|
3
|
+
|
4
|
+
module MockProject
|
5
|
+
def fake_me_a_heidi
|
6
|
+
this_repo = Dir.pwd rescue ENV['PWD']
|
7
|
+
|
8
|
+
# create a heidi dir with the bare minimum
|
9
|
+
@fake = Dir.mktmpdir(nil, '/tmp')
|
10
|
+
|
11
|
+
shell = SimpleShell.new(@fake)
|
12
|
+
shell.mkdir "-p", "projects/heidi_test"
|
13
|
+
shell.in "projects/heidi_test" do |sh|
|
14
|
+
sh.git %W(clone #{this_repo} cached)
|
15
|
+
sh.mkdir "logs"
|
16
|
+
%w(build tests failure success before).each do |hook|
|
17
|
+
sh.mkdir %W(-p hooks/#{hook})
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
spec = File.join(@fake, "projects/heidi_test/hooks/tests", "01_rspec")
|
22
|
+
|
23
|
+
# this test hook touches a file so we can test if it did touch a file :-)
|
24
|
+
File.open(spec, File::CREAT|File::WRONLY) do |f|
|
25
|
+
f.puts %Q(#!/bin/sh
|
26
|
+
|
27
|
+
touch #{@fake}/#{File.basename(@fake)})
|
28
|
+
end
|
29
|
+
|
30
|
+
shell.chmod %W(+x #{spec})
|
31
|
+
|
32
|
+
@heidi = Heidi.new(@fake)
|
33
|
+
rescue Exception => ex
|
34
|
+
$stderr.puts "Faking heidi failed... #{ex.message}"
|
35
|
+
$stderr.puts ex.backtrace.join("\n")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
RWorld(MockProject)
|
metadata
CHANGED
@@ -1,114 +1,127 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: heidi
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.1
|
3
|
+
version: !ruby/object:Gem::Version
|
5
4
|
prerelease:
|
5
|
+
version: 0.4.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Hartog C. de Mik
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
|
13
|
+
date: 2012-03-01 00:00:00 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
15
16
|
name: thin
|
16
|
-
requirement: &
|
17
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
17
18
|
none: false
|
18
|
-
requirements:
|
19
|
-
- -
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version:
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: "0"
|
22
23
|
type: :runtime
|
23
24
|
prerelease: false
|
24
|
-
version_requirements: *
|
25
|
-
- !ruby/object:Gem::Dependency
|
25
|
+
version_requirements: *id001
|
26
|
+
- !ruby/object:Gem::Dependency
|
26
27
|
name: sinatra
|
27
|
-
requirement: &
|
28
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
28
29
|
none: false
|
29
|
-
requirements:
|
30
|
-
- -
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version:
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements: *
|
36
|
-
- !ruby/object:Gem::Dependency
|
36
|
+
version_requirements: *id002
|
37
|
+
- !ruby/object:Gem::Dependency
|
37
38
|
name: simple_shell
|
38
|
-
requirement: &
|
39
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
39
40
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version:
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: "0"
|
44
45
|
type: :runtime
|
45
46
|
prerelease: false
|
46
|
-
version_requirements: *
|
47
|
-
- !ruby/object:Gem::Dependency
|
47
|
+
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
48
49
|
name: rspec
|
49
|
-
requirement: &
|
50
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
51
|
none: false
|
51
|
-
requirements:
|
52
|
+
requirements:
|
52
53
|
- - ~>
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
+
- !ruby/object:Gem::Version
|
54
55
|
version: 2.8.0
|
55
56
|
type: :development
|
56
57
|
prerelease: false
|
57
|
-
version_requirements: *
|
58
|
-
- !ruby/object:Gem::Dependency
|
58
|
+
version_requirements: *id004
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: rack-test
|
61
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: "0"
|
67
|
+
type: :development
|
68
|
+
prerelease: false
|
69
|
+
version_requirements: *id005
|
70
|
+
- !ruby/object:Gem::Dependency
|
59
71
|
name: rdoc
|
60
|
-
requirement: &
|
72
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
61
73
|
none: false
|
62
|
-
requirements:
|
74
|
+
requirements:
|
63
75
|
- - ~>
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version:
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: "3.12"
|
66
78
|
type: :development
|
67
79
|
prerelease: false
|
68
|
-
version_requirements: *
|
69
|
-
- !ruby/object:Gem::Dependency
|
80
|
+
version_requirements: *id006
|
81
|
+
- !ruby/object:Gem::Dependency
|
70
82
|
name: bundler
|
71
|
-
requirement: &
|
83
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
72
84
|
none: false
|
73
|
-
requirements:
|
85
|
+
requirements:
|
74
86
|
- - ~>
|
75
|
-
- !ruby/object:Gem::Version
|
87
|
+
- !ruby/object:Gem::Version
|
76
88
|
version: 1.0.0
|
77
89
|
type: :development
|
78
90
|
prerelease: false
|
79
|
-
version_requirements: *
|
80
|
-
- !ruby/object:Gem::Dependency
|
91
|
+
version_requirements: *id007
|
92
|
+
- !ruby/object:Gem::Dependency
|
81
93
|
name: jeweler
|
82
|
-
requirement: &
|
94
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
83
95
|
none: false
|
84
|
-
requirements:
|
96
|
+
requirements:
|
85
97
|
- - ~>
|
86
|
-
- !ruby/object:Gem::Version
|
98
|
+
- !ruby/object:Gem::Version
|
87
99
|
version: 1.8.3
|
88
100
|
type: :development
|
89
101
|
prerelease: false
|
90
|
-
version_requirements: *
|
91
|
-
- !ruby/object:Gem::Dependency
|
102
|
+
version_requirements: *id008
|
103
|
+
- !ruby/object:Gem::Dependency
|
92
104
|
name: rcov
|
93
|
-
requirement: &
|
105
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
94
106
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version:
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: "0"
|
99
111
|
type: :development
|
100
112
|
prerelease: false
|
101
|
-
version_requirements: *
|
113
|
+
version_requirements: *id009
|
102
114
|
description: CI-Joe alike CI system called Heidi.
|
103
115
|
email: hartog@organisedminds.com
|
104
|
-
executables:
|
116
|
+
executables:
|
105
117
|
- heidi
|
106
118
|
- heidi_web
|
107
119
|
extensions: []
|
108
|
-
|
120
|
+
|
121
|
+
extra_rdoc_files:
|
109
122
|
- LICENSE.txt
|
110
123
|
- README.rdoc
|
111
|
-
files:
|
124
|
+
files:
|
112
125
|
- .document
|
113
126
|
- .rspec
|
114
127
|
- Gemfile
|
@@ -127,55 +140,94 @@ files:
|
|
127
140
|
- lib/heidi/hook.rb
|
128
141
|
- lib/heidi/integrator.rb
|
129
142
|
- lib/heidi/project.rb
|
143
|
+
- lib/heidi/shell.rb
|
130
144
|
- lib/heidi/tester.rb
|
131
145
|
- lib/heidi/web.rb
|
132
|
-
- lib/heidi/web/
|
133
|
-
- lib/heidi/web/
|
134
|
-
- lib/heidi/web/
|
135
|
-
- lib/heidi/web/
|
136
|
-
- lib/heidi/web/
|
146
|
+
- lib/heidi/web/assets/css/bootstrap-responsive.css
|
147
|
+
- lib/heidi/web/assets/css/bootstrap.css
|
148
|
+
- lib/heidi/web/assets/css/colors.css
|
149
|
+
- lib/heidi/web/assets/css/docs.css
|
150
|
+
- lib/heidi/web/assets/images/HeidiBlue-480.png
|
151
|
+
- lib/heidi/web/assets/images/HeidiBlue.gif
|
152
|
+
- lib/heidi/web/assets/images/OrganisedMinds.png
|
153
|
+
- lib/heidi/web/assets/images/heidi.jpeg
|
154
|
+
- lib/heidi/web/assets/img/glyphicons-halflings-white.png
|
155
|
+
- lib/heidi/web/assets/img/glyphicons-halflings.png
|
156
|
+
- lib/heidi/web/assets/img/glyphicons/glyphicons_009_magic.png
|
157
|
+
- lib/heidi/web/assets/img/glyphicons/glyphicons_042_group.png
|
158
|
+
- lib/heidi/web/assets/img/glyphicons/glyphicons_079_podium.png
|
159
|
+
- lib/heidi/web/assets/img/glyphicons/glyphicons_082_roundabout.png
|
160
|
+
- lib/heidi/web/assets/img/glyphicons/glyphicons_155_show_thumbnails.png
|
161
|
+
- lib/heidi/web/assets/img/glyphicons/glyphicons_163_iphone.png
|
162
|
+
- lib/heidi/web/assets/img/glyphicons/glyphicons_214_resize_small.png
|
163
|
+
- lib/heidi/web/assets/img/glyphicons/glyphicons_266_book_open.png
|
164
|
+
- lib/heidi/web/assets/js/README.md
|
165
|
+
- lib/heidi/web/assets/js/application.js
|
166
|
+
- lib/heidi/web/assets/js/bootstrap-alert.js
|
167
|
+
- lib/heidi/web/assets/js/bootstrap-button.js
|
168
|
+
- lib/heidi/web/assets/js/bootstrap-carousel.js
|
169
|
+
- lib/heidi/web/assets/js/bootstrap-collapse.js
|
170
|
+
- lib/heidi/web/assets/js/bootstrap-dropdown.js
|
171
|
+
- lib/heidi/web/assets/js/bootstrap-modal.js
|
172
|
+
- lib/heidi/web/assets/js/bootstrap-popover.js
|
173
|
+
- lib/heidi/web/assets/js/bootstrap-scrollspy.js
|
174
|
+
- lib/heidi/web/assets/js/bootstrap-tab.js
|
175
|
+
- lib/heidi/web/assets/js/bootstrap-tooltip.js
|
176
|
+
- lib/heidi/web/assets/js/bootstrap-transition.js
|
177
|
+
- lib/heidi/web/assets/js/bootstrap-typeahead.js
|
178
|
+
- lib/heidi/web/assets/js/google-code-prettify/prettify.css
|
179
|
+
- lib/heidi/web/assets/js/google-code-prettify/prettify.js
|
180
|
+
- lib/heidi/web/assets/js/jquery.js
|
137
181
|
- lib/heidi/web/views/build.erb
|
138
182
|
- lib/heidi/web/views/commit.erb
|
139
183
|
- lib/heidi/web/views/config.erb
|
140
184
|
- lib/heidi/web/views/home.erb
|
141
185
|
- lib/heidi/web/views/layout.erb
|
186
|
+
- lib/heidi/web/views/new_project.erb
|
142
187
|
- lib/heidi/web/views/project.erb
|
188
|
+
- lib/heidi/web/views/project_header.erb
|
143
189
|
- spec/heidi/build_spec.rb
|
144
190
|
- spec/heidi/builder_spec.rb
|
145
191
|
- spec/heidi/git_spec.rb
|
146
192
|
- spec/heidi/hook_spec.rb
|
147
193
|
- spec/heidi/integrator_spec.rb
|
148
194
|
- spec/heidi/project_spec.rb
|
149
|
-
- spec/heidi/
|
195
|
+
- spec/heidi/shell_spec.rb
|
150
196
|
- spec/heidi/web_spec.rb
|
151
197
|
- spec/heidi_spec.rb
|
152
198
|
- spec/spec_helper.rb
|
199
|
+
- spec/support/01_rworld.rb
|
200
|
+
- spec/support/mock_project.rb
|
201
|
+
- spec/support/survivable.rb
|
153
202
|
homepage: http://github.com/coffeeaddict/heid
|
154
|
-
licenses:
|
203
|
+
licenses:
|
155
204
|
- MIT
|
156
205
|
post_install_message:
|
157
206
|
rdoc_options: []
|
158
|
-
|
207
|
+
|
208
|
+
require_paths:
|
159
209
|
- lib
|
160
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
210
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
161
211
|
none: false
|
162
|
-
requirements:
|
163
|
-
- -
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
|
166
|
-
segments:
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
hash: -4420829798417389444
|
216
|
+
segments:
|
167
217
|
- 0
|
168
|
-
|
169
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
|
+
version: "0"
|
219
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
170
220
|
none: false
|
171
|
-
requirements:
|
172
|
-
- -
|
173
|
-
- !ruby/object:Gem::Version
|
174
|
-
version:
|
221
|
+
requirements:
|
222
|
+
- - ">="
|
223
|
+
- !ruby/object:Gem::Version
|
224
|
+
version: "0"
|
175
225
|
requirements: []
|
226
|
+
|
176
227
|
rubyforge_project:
|
177
|
-
rubygems_version: 1.8.
|
228
|
+
rubygems_version: 1.8.16
|
178
229
|
signing_key:
|
179
230
|
specification_version: 3
|
180
231
|
summary: A naive CI system
|
181
232
|
test_files: []
|
233
|
+
|