gitdocs 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
30
30
  s.add_dependency 'haml'
31
31
  s.add_dependency 'sqlite3', "~> 1.3.4"
32
32
  s.add_dependency 'activerecord', "~> 3.1.0"
33
+ s.add_dependency 'grit', "~> 2.4.1"
33
34
 
34
35
  s.add_development_dependency 'minitest', "~> 2.6.1"
35
36
  s.add_development_dependency 'rake'
@@ -3,44 +3,24 @@ require 'gitdocs/configuration'
3
3
  require 'gitdocs/runner'
4
4
  require 'gitdocs/server'
5
5
  require 'gitdocs/cli'
6
+ require 'gitdocs/manager'
6
7
  require 'thread'
7
8
  require 'rb-fsevent'
8
9
  require 'growl'
9
10
  require 'yajl'
10
11
  require 'dante'
12
+ require 'socket'
11
13
 
12
14
  module Gitdocs
13
15
 
14
16
  DEBUG = ENV['DEBUG']
15
17
 
16
- def self.run(config_root = nil, debug = DEBUG)
17
- loop do
18
- config = Configuration.new(config_root)
19
- yield config if block_given?
20
- puts "Gitdocs v#{VERSION}" if debug
21
- puts "Using configuration root: '#{config.config_root}'" if debug
22
- puts "Shares: #{config.shares.map(&:inspect).join(", ")}" if debug
23
- # Start the repo watchers
24
- runners = []
25
- threads = config.shares.map do |share|
26
- t = Thread.new(runners) { |r|
27
- runner = Runner.new(share)
28
- r << runner
29
- runner.run
30
- }
31
- t.abort_on_exception = true
32
- t
33
- end
34
- sleep 1
35
- unless defined?(pid) && pid
36
- # Start the web front-end
37
- pid = fork { Server.new(config, *runners).start }
38
- at_exit { Process.kill("KILL", pid) rescue nil }
39
- end
40
- puts "Watch threads: #{threads.map { |t| "Thread status: '#{t.status}', running: #{t.alive?}" }}" if debug
41
- puts "Joined #{threads.size} watch threads...running" if debug
42
- threads.each(&:join)
43
- sleep(60)
44
- end
18
+ def self.run(config_root = nil, debug = DEBUG, &blk)
19
+ @manager = Manager.new(config_root, debug, &blk)
20
+ @manager.run
21
+ end
22
+
23
+ def self.restart
24
+ @manager.restart
45
25
  end
46
26
  end
@@ -1,4 +1,5 @@
1
1
  require 'active_record'
2
+ require 'grit'
2
3
 
3
4
  module Gitdocs
4
5
  class Configuration
@@ -17,6 +18,24 @@ module Gitdocs
17
18
 
18
19
  class Share < ActiveRecord::Base
19
20
  attr_accessible :polling_interval, :path, :notification, :branch_name, :remote_name
21
+
22
+ def available_remotes
23
+ repo = Grit::Repo.new(path)
24
+ repo.remotes.map{|r| r.name}
25
+ rescue
26
+ nil
27
+ end
28
+
29
+ def available_branches
30
+ repo = Grit::Repo.new(path)
31
+ repo.heads.map{|r| r.name}
32
+ rescue
33
+ nil
34
+ end
35
+ end
36
+
37
+ class Config < ActiveRecord::Base
38
+ attr_accessible :load_browser_on_startup
20
39
  end
21
40
 
22
41
  def add_path(path, opts = nil)
@@ -33,6 +52,12 @@ module Gitdocs
33
52
  Share.all
34
53
  end
35
54
 
55
+ def global
56
+ raise if Config.all.size > 1
57
+ Config.create! if Config.all.empty?
58
+ Config.all.first
59
+ end
60
+
36
61
  def normalize_path(path)
37
62
  File.expand_path(path, Dir.pwd)
38
63
  end
@@ -0,0 +1,58 @@
1
+ module Gitdocs
2
+ Restart = Class.new(RuntimeError)
3
+
4
+ class Manager
5
+ attr_reader :config, :debug
6
+
7
+ def initialize(config_root, debug)
8
+ @config = Configuration.new(config_root)
9
+ @debug = debug
10
+ yield @config if block_given?
11
+ end
12
+
13
+ def run
14
+ loop do
15
+ puts "Gitdocs v#{VERSION}" if self.debug
16
+ puts "Using configuration root: '#{self.config.config_root}'" if self.debug
17
+ puts "Shares: #{config.shares.map(&:inspect).join(", ")}" if self.debug
18
+ # Start the repo watchers
19
+ runners = []
20
+ threads = config.shares.map do |share|
21
+ t = Thread.new(runners) { |r|
22
+ runner = Runner.new(share)
23
+ r << runner
24
+ runner.run
25
+ }
26
+ t.abort_on_exception = true
27
+ t
28
+ end
29
+ trap("USR1") { puts "stopping threads: #{threads.map(&:alive?)}"; runners.each { |r| r.listener.stop } }
30
+ sleep 1
31
+ unless @pid
32
+ # Start the web front-end
33
+ @pid = fork { Server.new(self, *runners).start }
34
+ at_exit { Process.kill("KILL", @pid) rescue nil }
35
+ end
36
+ puts "Watch threads: #{threads.map { |t| "Thread status: '#{t.status}', running: #{t.alive?}" }}" if self.debug
37
+ puts "Joined #{threads.size} watch threads...running" if self.debug
38
+ i = 0
39
+ web_started = false
40
+ begin
41
+ TCPSocket.open('127.0.0.1', 8888).close
42
+ web_started = true
43
+ rescue Errno::ECONNREFUSED
44
+ sleep 0.2
45
+ i += 1
46
+ retry if i <= 20
47
+ end
48
+ system("open http://localhost:8888/") if self.config.global.load_browser_on_startup && web_started
49
+ threads.each(&:join)
50
+ sleep(60) if threads.empty?
51
+ end
52
+ end
53
+
54
+ def restart
55
+ Process.kill("USR1", Process.pid)
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,11 @@
1
+ class CreateConfigs < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :configs do |t|
4
+ t.column :load_browser_on_startup, :boolean, :default => true
5
+ end
6
+ end
7
+
8
+ def self.down
9
+ raise
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ class AddIndexForPath < ActiveRecord::Migration
2
+ def self.up
3
+ shares = Gitdocs::Configuration::Share.all.inject(Hash.new{|h,k| h[k] = []}) {|h, s| h[s.path] << s; h}
4
+ shares.each do |path, shares|
5
+ shares.shift
6
+ shares.each(&:destroy) unless shares.empty?
7
+ end
8
+ add_index :shares, :path, :unique => true
9
+ end
10
+ end
@@ -1,6 +1,6 @@
1
1
  module Gitdocs
2
2
  class Runner
3
- attr_accessor :root
3
+ attr_reader :root, :listener
4
4
 
5
5
  def initialize(share)
6
6
  @share = share
@@ -29,16 +29,16 @@ module Gitdocs
29
29
  end.abort_on_exception = true
30
30
 
31
31
  # Listen for changes in local repository
32
- listener = FSEvent.new
33
- listener.watch(@root) do |directories|
32
+ @listener = FSEvent.new
33
+ @listener.watch(@root) do |directories|
34
34
  directories.uniq!
35
35
  directories.delete_if {|d| d =~ /\/\.git/}
36
36
  unless directories.empty?
37
37
  mutex.synchronize { push_changes }
38
38
  end
39
39
  end
40
- at_exit { listener.stop }
41
- listener.run
40
+ at_exit { @listener.stop }
41
+ @listener.run
42
42
  end
43
43
 
44
44
  def sync_changes
@@ -4,14 +4,14 @@ require 'coderay'
4
4
 
5
5
  module Gitdocs
6
6
  class Server
7
- def initialize(config, *gitdocs)
8
- @config = config
7
+ def initialize(manager, *gitdocs)
8
+ @manager = manager
9
9
  @gitdocs = gitdocs
10
10
  end
11
11
 
12
12
  def start(port = 8888)
13
13
  gds = @gitdocs
14
- conf = @config
14
+ manager = @manager
15
15
  Thin::Server.start('127.0.0.1', port) do
16
16
  use Rack::Static, :urls => ['/css', '/js', '/img', '/doc'], :root => File.expand_path("../public", __FILE__)
17
17
  run Renee {
@@ -19,12 +19,17 @@ module Gitdocs
19
19
  render! "home", :layout => 'app', :locals => {:gds => gds}
20
20
  else
21
21
  path 'settings' do
22
- get.render! 'settings', :layout => 'app', :locals => {:conf => conf}
22
+ get.render! 'settings', :layout => 'app', :locals => {:conf => manager.config}
23
23
  post do
24
- shares = conf.shares
24
+ shares = manager.config.shares
25
+ manager.config.global.update_attributes(request.POST['config'])
25
26
  request.POST['share'].each do |idx, share|
27
+ if remote_branch = share.delete('remote_branch')
28
+ share['remote_name'], share['branch_name'] = remote_branch.split('/', 2)
29
+ end
26
30
  shares[Integer(idx)].update_attributes(share)
27
31
  end
32
+ manager.restart
28
33
  redirect! '/settings'
29
34
  end
30
35
  end
@@ -1,3 +1,3 @@
1
1
  module Gitdocs
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
@@ -1,8 +1,16 @@
1
1
  %h1 Settings
2
2
 
3
- %h2 Shares
4
-
5
3
  %form{:method => 'POST', :action => '/settings'}
4
+ %h2 Gitdocs
5
+ %div{:id => "config", :class => "config"}
6
+ %dl
7
+ %dt Open browser on startup?
8
+ %dd
9
+ %input{:type =>'hidden', :value => '0', :name=>"config[load_browser_on_startup]"}
10
+ %input{:type =>'checkbox', :value => '1', :name=>"config[load_browser_on_startup]", :checked => conf.global.load_browser_on_startup ? 'checked' : nil}
11
+
12
+
13
+ %h2 Shares
6
14
  -conf.shares.each_with_index do |share, idx|
7
15
  %div{:id => "share-#{idx}", :class => "share #{idx % 2 == 0 ? 'even' : 'odd'}"}
8
16
  %dl
@@ -13,14 +21,23 @@
13
21
  %dt Polling interval
14
22
  %dd
15
23
  %input{:name=>"share[#{idx}][polling_interval]", :value => share.polling_interval}
16
- %dl
17
- %dt Remote
18
- %dd
19
- %input{:name=>"share[#{idx}][remote_name]", :value => share.remote_name}
20
- %dl
21
- %dt Branch
22
- %dd
23
- %input{:name=>"share[#{idx}][branch_name]", :value => share.branch_name}
24
+ -if share.available_remotes
25
+ %dl
26
+ %dt Remote
27
+ %dd
28
+ %select{:name=>"share[#{idx}][remote_branch]"}
29
+ -share.available_remotes.each do |remote|
30
+ %option{:value => remote, :selected => remote == "#{share.remote_name}/#{share.branch_name}" ? 'selected' : nil}
31
+ =remote
32
+ -else
33
+ %dl
34
+ %dt Remote
35
+ %dd
36
+ %input{:name=>"share[#{idx}][remote_name]", :value => share.remote_name}
37
+ %dl
38
+ %dt Branch
39
+ %dd
40
+ %input{:name=>"share[#{idx}][branch_name]", :value => share.branch_name}
24
41
  %dl
25
42
  %dt Notifications?
26
43
  %dd
@@ -56,6 +56,7 @@ class MiniTest::Spec
56
56
  begin
57
57
  puts "RUNNING!"
58
58
  Gitdocs.run(conf_path) do |conf|
59
+ conf.global.update_attributes(:load_browser_on_startup => false)
59
60
  conf.add_path(path, :polling_interval => 0.1, :notification => false)
60
61
  end
61
62
  rescue
metadata CHANGED
@@ -1,202 +1,217 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: gitdocs
3
- version: !ruby/object:Gem::Version
4
- version: 0.3.0
3
+ version: !ruby/object:Gem::Version
5
4
  prerelease:
5
+ version: 0.3.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Josh Hull
9
9
  - Nathan Esquenazi
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-12-05 00:00:00.000000000Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
13
+
14
+ date: 2011-12-05 00:00:00 -08:00
15
+ default_executable:
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
16
18
  name: rb-fsevent
17
- requirement: &70265086574980 !ruby/object:Gem::Requirement
19
+ prerelease: false
20
+ requirement: &id001 !ruby/object:Gem::Requirement
18
21
  none: false
19
- requirements:
22
+ requirements:
20
23
  - - ~>
21
- - !ruby/object:Gem::Version
24
+ - !ruby/object:Gem::Version
22
25
  version: 0.4.3.1
23
26
  type: :runtime
24
- prerelease: false
25
- version_requirements: *70265086574980
26
- - !ruby/object:Gem::Dependency
27
+ version_requirements: *id001
28
+ - !ruby/object:Gem::Dependency
27
29
  name: thin
28
- requirement: &70265086574080 !ruby/object:Gem::Requirement
30
+ prerelease: false
31
+ requirement: &id002 !ruby/object:Gem::Requirement
29
32
  none: false
30
- requirements:
31
- - - ! '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: "0"
34
37
  type: :runtime
35
- prerelease: false
36
- version_requirements: *70265086574080
37
- - !ruby/object:Gem::Dependency
38
+ version_requirements: *id002
39
+ - !ruby/object:Gem::Dependency
38
40
  name: renee
39
- requirement: &70265086572080 !ruby/object:Gem::Requirement
41
+ prerelease: false
42
+ requirement: &id003 !ruby/object:Gem::Requirement
40
43
  none: false
41
- requirements:
44
+ requirements:
42
45
  - - ~>
43
- - !ruby/object:Gem::Version
46
+ - !ruby/object:Gem::Version
44
47
  version: 0.3.6
45
48
  type: :runtime
46
- prerelease: false
47
- version_requirements: *70265086572080
48
- - !ruby/object:Gem::Dependency
49
+ version_requirements: *id003
50
+ - !ruby/object:Gem::Dependency
49
51
  name: redcarpet
50
- requirement: &70265086571200 !ruby/object:Gem::Requirement
52
+ prerelease: false
53
+ requirement: &id004 !ruby/object:Gem::Requirement
51
54
  none: false
52
- requirements:
53
- - - ! '>='
54
- - !ruby/object:Gem::Version
55
- version: '0'
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: "0"
56
59
  type: :runtime
57
- prerelease: false
58
- version_requirements: *70265086571200
59
- - !ruby/object:Gem::Dependency
60
+ version_requirements: *id004
61
+ - !ruby/object:Gem::Dependency
60
62
  name: thor
61
- requirement: &70265086570280 !ruby/object:Gem::Requirement
63
+ prerelease: false
64
+ requirement: &id005 !ruby/object:Gem::Requirement
62
65
  none: false
63
- requirements:
64
- - - ! '>='
65
- - !ruby/object:Gem::Version
66
- version: '0'
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: "0"
67
70
  type: :runtime
68
- prerelease: false
69
- version_requirements: *70265086570280
70
- - !ruby/object:Gem::Dependency
71
+ version_requirements: *id005
72
+ - !ruby/object:Gem::Dependency
71
73
  name: coderay
72
- requirement: &70265086568440 !ruby/object:Gem::Requirement
74
+ prerelease: false
75
+ requirement: &id006 !ruby/object:Gem::Requirement
73
76
  none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: "0"
78
81
  type: :runtime
79
- prerelease: false
80
- version_requirements: *70265086568440
81
- - !ruby/object:Gem::Dependency
82
+ version_requirements: *id006
83
+ - !ruby/object:Gem::Dependency
82
84
  name: dante
83
- requirement: &70265086567200 !ruby/object:Gem::Requirement
85
+ prerelease: false
86
+ requirement: &id007 !ruby/object:Gem::Requirement
84
87
  none: false
85
- requirements:
88
+ requirements:
86
89
  - - ~>
87
- - !ruby/object:Gem::Version
90
+ - !ruby/object:Gem::Version
88
91
  version: 0.0.4
89
92
  type: :runtime
90
- prerelease: false
91
- version_requirements: *70265086567200
92
- - !ruby/object:Gem::Dependency
93
+ version_requirements: *id007
94
+ - !ruby/object:Gem::Dependency
93
95
  name: growl
94
- requirement: &70265086565200 !ruby/object:Gem::Requirement
96
+ prerelease: false
97
+ requirement: &id008 !ruby/object:Gem::Requirement
95
98
  none: false
96
- requirements:
99
+ requirements:
97
100
  - - ~>
98
- - !ruby/object:Gem::Version
101
+ - !ruby/object:Gem::Version
99
102
  version: 1.0.3
100
103
  type: :runtime
101
- prerelease: false
102
- version_requirements: *70265086565200
103
- - !ruby/object:Gem::Dependency
104
+ version_requirements: *id008
105
+ - !ruby/object:Gem::Dependency
104
106
  name: yajl-ruby
105
- requirement: &70265086564420 !ruby/object:Gem::Requirement
107
+ prerelease: false
108
+ requirement: &id009 !ruby/object:Gem::Requirement
106
109
  none: false
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: "0"
111
114
  type: :runtime
112
- prerelease: false
113
- version_requirements: *70265086564420
114
- - !ruby/object:Gem::Dependency
115
+ version_requirements: *id009
116
+ - !ruby/object:Gem::Dependency
115
117
  name: haml
116
- requirement: &70265086563360 !ruby/object:Gem::Requirement
118
+ prerelease: false
119
+ requirement: &id010 !ruby/object:Gem::Requirement
117
120
  none: false
118
- requirements:
119
- - - ! '>='
120
- - !ruby/object:Gem::Version
121
- version: '0'
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: "0"
122
125
  type: :runtime
123
- prerelease: false
124
- version_requirements: *70265086563360
125
- - !ruby/object:Gem::Dependency
126
+ version_requirements: *id010
127
+ - !ruby/object:Gem::Dependency
126
128
  name: sqlite3
127
- requirement: &70265086562040 !ruby/object:Gem::Requirement
129
+ prerelease: false
130
+ requirement: &id011 !ruby/object:Gem::Requirement
128
131
  none: false
129
- requirements:
132
+ requirements:
130
133
  - - ~>
131
- - !ruby/object:Gem::Version
134
+ - !ruby/object:Gem::Version
132
135
  version: 1.3.4
133
136
  type: :runtime
134
- prerelease: false
135
- version_requirements: *70265086562040
136
- - !ruby/object:Gem::Dependency
137
+ version_requirements: *id011
138
+ - !ruby/object:Gem::Dependency
137
139
  name: activerecord
138
- requirement: &70265086560080 !ruby/object:Gem::Requirement
140
+ prerelease: false
141
+ requirement: &id012 !ruby/object:Gem::Requirement
139
142
  none: false
140
- requirements:
143
+ requirements:
141
144
  - - ~>
142
- - !ruby/object:Gem::Version
145
+ - !ruby/object:Gem::Version
143
146
  version: 3.1.0
144
147
  type: :runtime
148
+ version_requirements: *id012
149
+ - !ruby/object:Gem::Dependency
150
+ name: grit
145
151
  prerelease: false
146
- version_requirements: *70265086560080
147
- - !ruby/object:Gem::Dependency
152
+ requirement: &id013 !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ~>
156
+ - !ruby/object:Gem::Version
157
+ version: 2.4.1
158
+ type: :runtime
159
+ version_requirements: *id013
160
+ - !ruby/object:Gem::Dependency
148
161
  name: minitest
149
- requirement: &70265086558540 !ruby/object:Gem::Requirement
162
+ prerelease: false
163
+ requirement: &id014 !ruby/object:Gem::Requirement
150
164
  none: false
151
- requirements:
165
+ requirements:
152
166
  - - ~>
153
- - !ruby/object:Gem::Version
167
+ - !ruby/object:Gem::Version
154
168
  version: 2.6.1
155
169
  type: :development
156
- prerelease: false
157
- version_requirements: *70265086558540
158
- - !ruby/object:Gem::Dependency
170
+ version_requirements: *id014
171
+ - !ruby/object:Gem::Dependency
159
172
  name: rake
160
- requirement: &70265086557020 !ruby/object:Gem::Requirement
173
+ prerelease: false
174
+ requirement: &id015 !ruby/object:Gem::Requirement
161
175
  none: false
162
- requirements:
163
- - - ! '>='
164
- - !ruby/object:Gem::Version
165
- version: '0'
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: "0"
166
180
  type: :development
167
- prerelease: false
168
- version_requirements: *70265086557020
169
- - !ruby/object:Gem::Dependency
181
+ version_requirements: *id015
182
+ - !ruby/object:Gem::Dependency
170
183
  name: mocha
171
- requirement: &70265086554480 !ruby/object:Gem::Requirement
184
+ prerelease: false
185
+ requirement: &id016 !ruby/object:Gem::Requirement
172
186
  none: false
173
- requirements:
174
- - - ! '>='
175
- - !ruby/object:Gem::Version
176
- version: '0'
187
+ requirements:
188
+ - - ">="
189
+ - !ruby/object:Gem::Version
190
+ version: "0"
177
191
  type: :development
178
- prerelease: false
179
- version_requirements: *70265086554480
180
- - !ruby/object:Gem::Dependency
192
+ version_requirements: *id016
193
+ - !ruby/object:Gem::Dependency
181
194
  name: fakeweb
182
- requirement: &70265086552960 !ruby/object:Gem::Requirement
195
+ prerelease: false
196
+ requirement: &id017 !ruby/object:Gem::Requirement
183
197
  none: false
184
- requirements:
185
- - - ! '>='
186
- - !ruby/object:Gem::Version
187
- version: '0'
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: "0"
188
202
  type: :development
189
- prerelease: false
190
- version_requirements: *70265086552960
203
+ version_requirements: *id017
191
204
  description: Open-source Dropbox using Ruby and Git.
192
- email:
205
+ email:
193
206
  - joshbuddy@gmail.com
194
207
  - nesquena@gmail.com
195
- executables:
208
+ executables:
196
209
  - gitdocs
197
210
  extensions: []
211
+
198
212
  extra_rdoc_files: []
199
- files:
213
+
214
+ files:
200
215
  - .gitignore
201
216
  - Gemfile
202
217
  - LICENSE
@@ -207,8 +222,11 @@ files:
207
222
  - lib/gitdocs.rb
208
223
  - lib/gitdocs/cli.rb
209
224
  - lib/gitdocs/configuration.rb
225
+ - lib/gitdocs/manager.rb
210
226
  - lib/gitdocs/migration/001_create_shares.rb
211
227
  - lib/gitdocs/migration/002_add_remote_branch.rb
228
+ - lib/gitdocs/migration/003_create_configs.rb
229
+ - lib/gitdocs/migration/004_add_index_for_path.rb
212
230
  - lib/gitdocs/public/css/app.css
213
231
  - lib/gitdocs/public/css/coderay.css
214
232
  - lib/gitdocs/public/css/reset.css
@@ -260,37 +278,35 @@ files:
260
278
  - test/configuration_test.rb
261
279
  - test/runner_test.rb
262
280
  - test/test_helper.rb
281
+ has_rdoc: true
263
282
  homepage: http://engineering.gomiso.com/2011/11/30/collaborate-and-track-tasks-with-ease-using-gitdocs/
264
283
  licenses: []
284
+
265
285
  post_install_message:
266
286
  rdoc_options: []
267
- require_paths:
287
+
288
+ require_paths:
268
289
  - lib
269
- required_ruby_version: !ruby/object:Gem::Requirement
290
+ required_ruby_version: !ruby/object:Gem::Requirement
270
291
  none: false
271
- requirements:
272
- - - ! '>='
273
- - !ruby/object:Gem::Version
274
- version: '0'
275
- segments:
276
- - 0
277
- hash: -859134024134666501
278
- required_rubygems_version: !ruby/object:Gem::Requirement
292
+ requirements:
293
+ - - ">="
294
+ - !ruby/object:Gem::Version
295
+ version: "0"
296
+ required_rubygems_version: !ruby/object:Gem::Requirement
279
297
  none: false
280
- requirements:
281
- - - ! '>='
282
- - !ruby/object:Gem::Version
283
- version: '0'
284
- segments:
285
- - 0
286
- hash: -859134024134666501
298
+ requirements:
299
+ - - ">="
300
+ - !ruby/object:Gem::Version
301
+ version: "0"
287
302
  requirements: []
303
+
288
304
  rubyforge_project: gitdocs
289
- rubygems_version: 1.8.10
305
+ rubygems_version: 1.6.2
290
306
  signing_key:
291
307
  specification_version: 3
292
308
  summary: Open-source Dropbox using Ruby and Git
293
- test_files:
309
+ test_files:
294
310
  - test/configuration_test.rb
295
311
  - test/runner_test.rb
296
312
  - test/test_helper.rb