keithsalisbury-subtrac 0.1.15 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.rdoc +3 -0
- data/{lib/subtrac/templates/projects/blank/svn/branches/README → README.rdoc} +0 -0
- data/bin/subtrac +1 -3
- data/lib/subtrac.rb +97 -292
- data/spec/subtrac_spec.rb +54 -0
- data/subtrac.gemspec +37 -0
- data/tasks/docs.rake +13 -0
- data/tasks/gemspec.rake +3 -0
- data/tasks/spec.rake +25 -0
- metadata +27 -45
- data/LICENSE +0 -20
- data/README.markdown +0 -200
- data/Rakefile +0 -56
- data/VERSION.yml +0 -4
- data/lib/subtrac/commands.rb +0 -6
- data/lib/subtrac/commands/create.rb +0 -13
- data/lib/subtrac/commands/install.rb +0 -10
- data/lib/subtrac/common/clients/index.wsgi +0 -89
- data/lib/subtrac/common/favicon.ico +0 -0
- data/lib/subtrac/common/images/trac/banner_bg.jpg +0 -0
- data/lib/subtrac/common/images/trac/bar_bg.gif +0 -0
- data/lib/subtrac/common/images/trac/footer_back.png +0 -0
- data/lib/subtrac/common/images/trac/main_bg.gif +0 -0
- data/lib/subtrac/common/images/trac/saint_logo_small.png +0 -0
- data/lib/subtrac/common/static/404.html +0 -14
- data/lib/subtrac/common/styles/trac.css +0 -222
- data/lib/subtrac/config/config.yml +0 -58
- data/lib/subtrac/passwords +0 -3
- data/lib/subtrac/shared/trac.ini +0 -178
- data/lib/subtrac/templates/location.erb +0 -16
- data/lib/subtrac/templates/projects/blank/svn/tags/README +0 -0
- data/lib/subtrac/templates/projects/blank/svn/trunk/README +0 -0
- data/lib/subtrac/templates/projects/blank/trac/wiki/WikiStart +0 -57
- data/lib/subtrac/templates/projects/new/svn/trunk/trac/wiki/WikiStart +0 -46
- data/lib/subtrac/templates/projects/new/trac/wiki/WikiStart +0 -23
- data/lib/subtrac/templates/projects/trac_theme/svn/trunk/index/index.html +0 -21
- data/lib/subtrac/templates/projects/trac_theme/svn/trunk/templates/layout.html +0 -56
- data/lib/subtrac/templates/projects/trac_theme/svn/trunk/templates/site.html +0 -27
- data/lib/subtrac/templates/projects/trac_theme/svn/trunk/templates/theme.html +0 -86
- data/lib/subtrac/templates/projects/trac_theme/trac/wiki/WikiStart +0 -4
- data/lib/subtrac/templates/trac.erb +0 -25
- data/lib/subtrac/templates/vhost.erb +0 -38
- data/lib/subtrac/version.rb +0 -4
data/History.rdoc
ADDED
File without changes
|
data/bin/subtrac
CHANGED
data/lib/subtrac.rb
CHANGED
@@ -39,384 +39,189 @@ require 'yaml'
|
|
39
39
|
require 'erb'
|
40
40
|
require 'fileutils'
|
41
41
|
require 'subtrac/version'
|
42
|
-
require 'subtrac/commands'
|
43
|
-
|
44
42
|
|
45
43
|
module Subtrac
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
def configuration
|
55
|
-
@@configuration
|
56
|
-
end
|
57
|
-
|
58
|
-
def configuration=(configuration)
|
59
|
-
@@configuration = configuration
|
60
|
-
end
|
61
|
-
|
62
|
-
def initialized?
|
63
|
-
@initialized || false
|
64
|
-
end
|
65
|
-
|
66
|
-
def initialized=(initialized)
|
67
|
-
@initialized ||= initialized
|
68
|
-
end
|
69
|
-
|
70
|
-
def root
|
71
|
-
Pathname.new(SUBTRAC_ROOT) if defined?(SUBTRAC_ROOT)
|
72
|
-
end
|
73
|
-
|
74
|
-
def public_path
|
75
|
-
@@public_path ||= self.root ? File.join(self.root, "public") : "public"
|
76
|
-
end
|
77
|
-
|
78
|
-
def subtrac_path
|
79
|
-
@@subtrac_path ||= self.root ? File.join(self.root, "subtrac") : "subtrac"
|
80
|
-
end
|
81
|
-
|
82
|
-
def public_path=(path)
|
83
|
-
@@public_path = path
|
84
|
-
end
|
85
|
-
|
86
|
-
def docs_dir
|
87
|
-
@@docs_dir ||= File.join(@install_dir,@APP_CONFIG[:dirs][:docs])
|
88
|
-
end
|
89
|
-
|
90
|
-
def docs_dir=(dir)
|
91
|
-
@@docs_dir = dir
|
92
|
-
end
|
93
|
-
|
94
|
-
def svn_dir
|
95
|
-
@@svn_dir ||= File.join(@install_dir,@APP_CONFIG[:dirs][:svn])
|
96
|
-
end
|
97
|
-
|
98
|
-
def svn_dir=(dir)
|
99
|
-
@@svn_dir = dir
|
100
|
-
end
|
101
|
-
|
102
|
-
def trac_dir
|
103
|
-
@@trac_dir ||= File.join(@install_dir,@APP_CONFIG[:dirs][:trac])
|
104
|
-
end
|
105
|
-
|
106
|
-
def trac_dir=(dir)
|
107
|
-
@@trac_dir = dir
|
108
|
-
end
|
109
|
-
|
110
|
-
def temp_dir
|
111
|
-
@@temp_dir ||= File.join(@install_dir,@APP_CONFIG[:dirs][:temp])
|
112
|
-
end
|
113
|
-
|
114
|
-
def temp_dir=(dir)
|
115
|
-
@@temp_dir = dir
|
116
|
-
end
|
117
|
-
|
118
|
-
def log_dir
|
119
|
-
@@log_dir ||= File.join(@install_dir,@APP_CONFIG[:dirs][:log])
|
120
|
-
end
|
121
|
-
|
122
|
-
def log_dir=(dir)
|
123
|
-
@@log_dir = dir
|
44
|
+
DEV_ENV = 'test' # should be a system environment var
|
45
|
+
DEV_ROOT = Dir.getwd
|
46
|
+
module Commands
|
47
|
+
class Install
|
48
|
+
def initialize(args, options)
|
49
|
+
Devserver.load_config()
|
50
|
+
Devserver.install(args,options)
|
51
|
+
end
|
124
52
|
end
|
125
|
-
|
126
|
-
|
127
|
-
|
53
|
+
class Create
|
54
|
+
def initialize(args, options)
|
55
|
+
project = ask("What is the name of the project you would like to create?") if !options.project
|
56
|
+
client = ask("Which client is this project for?") if !options.client
|
57
|
+
Devserver.load_config()
|
58
|
+
Devserver.create_project(options.project,options.client)
|
59
|
+
end
|
128
60
|
end
|
61
|
+
end
|
129
62
|
|
130
|
-
|
131
|
-
|
63
|
+
# Install
|
64
|
+
def self.install(args,options)
|
65
|
+
# Ask if the user agrees (yes or no)
|
66
|
+
confirm = agree("Are you sure?") if options.clean
|
67
|
+
if confirm
|
68
|
+
# clear previous data
|
69
|
+
clean()
|
70
|
+
create_environment_directories()
|
71
|
+
else
|
72
|
+
puts "\nAttempt install without overwrites"
|
132
73
|
end
|
133
|
-
|
74
|
+
install_common_files()
|
75
|
+
create_virtual_host()
|
76
|
+
# create default project and client
|
77
|
+
#create_client(@APP_CONFIG[:default_client])
|
78
|
+
create_project(@APP_CONFIG[:default_project],@APP_CONFIG[:default_client])
|
134
79
|
end
|
80
|
+
|
81
|
+
private
|
135
82
|
|
136
83
|
# Loads the configuration YML file
|
137
84
|
def self.load_config
|
138
|
-
# TODO: We need to refactor this code so it will load the default configuration only if one has not been created
|
139
85
|
puts "\n==== Loading configuration file ===="
|
140
86
|
# load configuration file
|
141
|
-
file_path = File.join(subtrac_path, USER_CONFIG)
|
142
|
-
file_path = File.join(subtrac_path,"/config/config.yml") if not File.exists?(file_path)
|
143
|
-
puts "Attempting to read config file: #{file_path}"
|
144
87
|
begin
|
145
|
-
|
146
|
-
yamlFile = YAML.load(raw_config)
|
88
|
+
yamlFile = YAML.load_file("#{DEV_ROOT}/config/config.yml")
|
147
89
|
rescue Exception => e
|
148
|
-
raise StandardError, "
|
90
|
+
raise StandardError, "config/config.yml could not be loaded."
|
149
91
|
end
|
150
92
|
if yamlFile
|
151
|
-
if yamlFile[
|
152
|
-
@APP_CONFIG = yamlFile[
|
93
|
+
if yamlFile[DEV_ENV]
|
94
|
+
@APP_CONFIG = yamlFile[DEV_ENV]
|
153
95
|
else
|
154
|
-
raise StandardError, "config/config.yml exists, but doesn't have a configuration for
|
96
|
+
raise StandardError, "config/config.yml exists, but doesn't have a configuration for DEV_ENV=#{DEV_ENV}."
|
155
97
|
end
|
156
98
|
else
|
157
99
|
raise StandardError, "config/config.yml does not exist."
|
158
100
|
end
|
159
|
-
puts "\n==== Installation options ===="
|
160
|
-
|
161
|
-
say("Setting up default configuration...")
|
162
|
-
@server_name = @APP_CONFIG[:server_name]
|
163
|
-
@server_hostname = @APP_CONFIG[:server_hostname]
|
164
|
-
@server_ip = @APP_CONFIG[:server_ip]
|
165
|
-
|
166
|
-
@default_client = @APP_CONFIG[:default_client]
|
167
|
-
@default_project = @APP_CONFIG[:default_project]
|
168
|
-
|
169
|
-
@install_dir = File.expand_path(@APP_CONFIG[:installation_dir])
|
170
|
-
@conf_dir = @APP_CONFIG[:apache2_conf]
|
171
|
-
|
172
|
-
@ldap_enable = @APP_CONFIG[:ldap][:enable]
|
173
|
-
if (@ldap_enable) then
|
174
|
-
@ldap_bind_dn = @APP_CONFIG[:ldap][:bind_dn]
|
175
|
-
@ldap_bind_password = @APP_CONFIG[:ldap][:bind_password]
|
176
|
-
@ldap_url = @APP_CONFIG[:ldap][:host]
|
177
|
-
end
|
178
|
-
|
179
|
-
end
|
180
|
-
|
181
|
-
|
182
|
-
# Install
|
183
|
-
def self.install(args,options)
|
184
|
-
puts "\n==== Installing development server files ===="
|
185
|
-
# check where we are installing
|
186
|
-
change_install_dir = agree("The default installation directory is \"#{@install_dir}\". Would you like to change this? [Y/n]")
|
187
|
-
@install_dir = ask("Where would you like to install this server?") if change_install_dir
|
188
|
-
|
189
|
-
unless !File.directory?(@install_dir)
|
190
|
-
# Ask if the user agrees (yes or no)
|
191
|
-
confirm_clean = agree("Err, it seems there's some stuff in there. You sure you want me to overwrite? [Y/n]") if options.clean
|
192
|
-
confirm_clean = agree("Doubly sure? I can't undo this....[Y/n]") if confirm_clean
|
193
|
-
end
|
194
|
-
|
195
|
-
# right lets install
|
196
|
-
change_server_name = agree("The default server name is \"#{@server_name}\". Would you like to change this? [Y/n]")
|
197
|
-
@server_name = ask("What would you like to call your new development server? ") if change_server_name
|
198
|
-
|
199
|
-
create_environment_directories(confirm_clean)
|
200
|
-
install_common_files()
|
201
|
-
configure_admin_user()
|
202
|
-
# TODO: Need to check for default client/project before creating virtual host
|
203
|
-
# otherwise we need remove the rewrite rule
|
204
|
-
create_virtual_host()
|
205
|
-
confirm_default_client = agree("Do you want to create a default client project? [Y/n]")
|
206
|
-
# create default project and client
|
207
|
-
if confirm_default_client
|
208
|
-
change_client = agree("The default client name is \"#{@default_client}\". Would you like to change this? [Y/n]")
|
209
|
-
@default_client = ask("What client name would you like to use? ") if change_client
|
210
|
-
change_project = agree("The default project name is \"#{@default_project}\". Would you like to change this? [Y/n]")
|
211
|
-
@default_project = ask("What would you like to call your new project? ") if change_project
|
212
|
-
create_project(@default_project,@default_client)
|
213
|
-
end
|
214
|
-
save_config()
|
215
|
-
end
|
216
|
-
|
217
|
-
private
|
218
|
-
|
219
|
-
# Write the changes configuration to disk
|
220
|
-
def self.save_config
|
221
|
-
# save the things that might have changed
|
222
|
-
@APP_CONFIG[:server_name] = @server_name
|
223
|
-
@APP_CONFIG[:server_hostname] = @server_hostname
|
224
|
-
@APP_CONFIG[:server_ip] = @server_ip
|
225
|
-
|
226
|
-
@APP_CONFIG[:default_client] = @default_client
|
227
|
-
@APP_CONFIG[:default_project] = @default_project
|
228
|
-
|
229
|
-
@APP_CONFIG[:installation_dir] = @install_dir
|
230
|
-
@APP_CONFIG[:apache2_conf] = @conf_dir
|
231
|
-
|
232
|
-
@APP_CONFIG[:ldap][:bind_dn] = @ldap_bind_dn
|
233
|
-
@APP_CONFIG[:ldap][:bind_password] = @ldap_bind_password
|
234
|
-
@APP_CONFIG[:ldap][:host] = @ldap_url
|
235
|
-
|
236
|
-
file_path = File.join(subtrac_path, USER_CONFIG)
|
237
|
-
open(file_path, 'w') {|f| YAML.dump({SUBTRAC_ENV => @APP_CONFIG}, f)}
|
238
101
|
end
|
239
102
|
|
240
103
|
# creates a directory if it does not exist
|
241
|
-
def self.create_if_missing
|
242
|
-
|
243
|
-
|
244
|
-
puts "Creating directory called #{names}..."
|
245
|
-
FileUtils.mkdir_p(name)
|
246
|
-
end
|
247
|
-
end
|
104
|
+
def self.create_if_missing *names
|
105
|
+
puts "\n==== Creating directory #{names} ===="
|
106
|
+
names.each do |name| FileUtils.mkdir_p(name) unless File.directory?(name) end
|
248
107
|
end
|
249
108
|
|
250
109
|
# publishes an erb template
|
251
110
|
def self.parse_template(infile,outfile,binding)
|
252
|
-
file = File.
|
111
|
+
file = File.new(outfile, "w")
|
253
112
|
if file
|
254
|
-
|
255
|
-
if template
|
256
|
-
file.syswrite(template.result(binding))
|
257
|
-
else
|
258
|
-
raise "Could not read template. file #{infile}"
|
259
|
-
end
|
113
|
+
file.syswrite(ERB.new(IO.read(infile)).result(binding))
|
260
114
|
else
|
261
|
-
|
115
|
+
puts "Unable to write to file #{outfile}!"
|
262
116
|
end
|
263
117
|
end
|
264
118
|
|
265
119
|
# creates a new virtual host and reloads apache and enables the new virtual host
|
266
120
|
def self.create_virtual_host
|
267
121
|
puts "\n==== Creating new virtual host ===="
|
268
|
-
|
269
|
-
puts "group apache tempalte: #{vhost_template}"
|
270
|
-
new_vhost = File.join(@conf_dir,@server_hostname)
|
271
|
-
puts "group apache file: #{new_vhost}"
|
272
|
-
parse_template(vhost_template,new_vhost,binding) if SUBTRAC_ENV != 'test'
|
122
|
+
parse_template(@APP_CONFIG[:templates][:virtual_host],"#{@APP_CONFIG[:dirs][:apache2_conf]}/#{@APP_CONFIG[:server][:hostname]}",binding)
|
273
123
|
# reload apache configuration
|
274
|
-
`/etc/init.d/apache2 force-reload` if
|
275
|
-
`a2ensite #{@
|
124
|
+
`/etc/init.d/apache2 force-reload` if DEV_ENV != 'test'
|
125
|
+
`a2ensite #{@APP_CONFIG[:server][:hostname]}` if DEV_ENV != 'test'
|
276
126
|
end
|
277
127
|
|
278
128
|
def self.install_common_files
|
279
129
|
puts "\n==== Installing common files ===="
|
280
|
-
# TODO: implement a
|
130
|
+
# TODO: implement a mash for .svn folders
|
281
131
|
# TODO: refactor /common to the app config
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
#FileUtils.cp(,@install_dir)
|
286
|
-
end
|
287
|
-
|
288
|
-
def self.configure_admin_user
|
289
|
-
puts "\n==== Configure admin user ===="
|
290
|
-
# create admin user
|
291
|
-
passwd_file = File.join(@install_dir, ".passwd")
|
292
|
-
admin_user = ask("Pick an admin username: ") { |q| q.echo = true }
|
293
|
-
`htpasswd -c #{passwd_file} #{admin_user}`
|
294
|
-
@APP_CONFIG[:admin_user] = admin_user
|
295
|
-
# ensure this guy is added to trac admin group
|
296
|
-
@APP_CONFIG[:trac][:permissions][admin_user] = "admins"
|
297
|
-
#FileUtils.chown_R('www-data', 'www-data', passwd_file, :verbose => true) if SUBTRAC_ENV != 'test'
|
132
|
+
source = Dir.glob("#{DEV_ROOT}/common/.")
|
133
|
+
dest = @APP_CONFIG[:dirs][:document]
|
134
|
+
FileUtils.cp_r(source,dest)
|
298
135
|
end
|
299
136
|
|
300
|
-
def self.create_environment_directories
|
137
|
+
def self.create_environment_directories
|
301
138
|
puts "\n==== Creating new environment directories ===="
|
302
|
-
FileUtils.rm_rf @install_dir if overwrite
|
303
|
-
create_if_missing @install_dir
|
304
139
|
# create the environment directories
|
305
140
|
@APP_CONFIG[:dirs].each do |key, value|
|
306
|
-
|
307
|
-
create_if_missing dir
|
141
|
+
create_if_missing value
|
308
142
|
end
|
309
143
|
end
|
310
144
|
|
145
|
+
def self.clean
|
146
|
+
puts "\n==== Remove old data if exists ===="
|
147
|
+
@APP_CONFIG[:dirs].each do |key, value|
|
148
|
+
unless [@APP_CONFIG[:dirs][:install]].include? value
|
149
|
+
#TODO: Ask for confirmation - yes,no,All
|
150
|
+
puts "Deleting #{value}"
|
151
|
+
FileUtils.rm_rf value
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
311
156
|
def self.create_client(name)
|
312
|
-
puts "\n==== Create a new client
|
157
|
+
puts "\n==== Create a new client #{name} ===="
|
313
158
|
client_name = name.downcase
|
314
159
|
# create apache configuration
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
puts "location_template: #{location_template}"
|
319
|
-
location_conf = File.join(locations_dir,"#{client_name}.conf")
|
320
|
-
puts "location_conf: #{location_conf}"
|
321
|
-
parse_template(location_template,location_conf,binding)
|
322
|
-
`/etc/init.d/apache2 force-reload` if SUBTRAC_ENV != 'test'
|
160
|
+
# create apache template
|
161
|
+
parse_template(@APP_CONFIG[:templates][:location],"#{@APP_CONFIG[:dirs][:conf_locations]}/#{client_name}.conf",binding)
|
162
|
+
`/etc/init.d/apache2 force-reload` if DEV_ENV != 'test'
|
323
163
|
|
324
164
|
# create svn+trac directory
|
325
|
-
create_if_missing
|
326
|
-
create_if_missing
|
327
|
-
|
328
|
-
# create a project for this clients trac theme
|
329
|
-
create_project("trac_theme", client_name,@APP_CONFIG[:default_theme_template])
|
330
|
-
|
331
|
-
# check the theme project out
|
332
|
-
client_theme_dir = File.join(trac_dir,client_name,".theme")
|
333
|
-
create_if_missing(client_theme_dir)
|
334
|
-
FileUtils.chown_R('www-data', 'www-data', client_theme_dir, :verbose => true) if SUBTRAC_ENV != 'test'
|
335
|
-
puts "Attempting checkout of theme project..."
|
336
|
-
|
337
|
-
`sudo svn co --username #{@APP_CONFIG[:admin][:username]} --password #{@APP_CONFIG[:admin][:password]} \
|
338
|
-
file://#{svn_dir}/#{client_name}/trac_theme/trunk #{client_theme_dir}` if SUBTRAC_ENV != 'test'
|
339
|
-
|
165
|
+
create_if_missing "#{@APP_CONFIG[:dirs][:svn]}/#{client_name}"
|
166
|
+
create_if_missing "#{@APP_CONFIG[:dirs][:trac]}/#{client_name}"
|
340
167
|
end
|
341
168
|
|
342
|
-
def self.create_project(project, client
|
343
|
-
puts "\n==== Create a new project
|
169
|
+
def self.create_project(project, client)
|
170
|
+
puts "\n==== Create a new project #{project} for #{client} ===="
|
344
171
|
|
345
172
|
client_name = client.downcase
|
346
173
|
project_name = project.downcase
|
347
174
|
|
348
175
|
# create client directory if needed
|
349
|
-
create_client(client_name) if (!File.directory?
|
176
|
+
create_client(client_name) if (!File.directory? "#{@APP_CONFIG[:dirs][:svn]}/#{client_name}")
|
350
177
|
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
# TODO: Need to change this to use a 'groups' yml file
|
355
|
-
if (File.directory? project_svn_dir) then
|
178
|
+
svn_dir = "#{@APP_CONFIG[:dirs][:svn]}/#{client_name}/#{project_name}"
|
179
|
+
trac_dir = "#{@APP_CONFIG[:dirs][:trac]}/#{client_name}/#{project_name}"
|
180
|
+
if (File.directory? svn_dir) then
|
356
181
|
raise StandardError, "A project called #{project} already exists in the #{client} repository. Would you like to replace it?"
|
357
182
|
end
|
358
183
|
|
359
|
-
# create new project directories
|
360
|
-
say("Create project directories...")
|
361
|
-
create_if_missing project_svn_dir
|
362
|
-
create_if_missing project_trac_dir
|
363
|
-
|
364
|
-
project_template = File.join(subtrac_path, @APP_CONFIG[:templates][:projects],project_type)
|
365
|
-
|
366
184
|
# copy template svn project to a temp folder, then svn import it into the repo
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
FileUtils.cp_r(svn_template_dir,project_temp_dir)
|
185
|
+
svn_template_dir = "#{@APP_CONFIG[:templates][:blank]}/svn/."
|
186
|
+
temp_dir = "#{@APP_CONFIG[:dirs][:temp]}/#{project_name}"
|
187
|
+
FileUtils.cp_r(svn_template_dir,temp_dir)
|
371
188
|
|
372
189
|
# create a new subversion repository
|
373
|
-
|
374
|
-
`svnadmin create #{project_svn_dir}` if SUBTRAC_ENV != 'test'
|
190
|
+
`svnadmin create #{svn_dir}` if DEV_ENV != 'test'
|
375
191
|
|
376
|
-
# import into svn
|
377
|
-
|
378
|
-
|
379
|
-
# delete the temporary directory
|
380
|
-
FileUtils.rm_r(project_temp_dir, :force => true)
|
192
|
+
# import into svn and delete the temporary directory
|
193
|
+
`svn import #{temp_dir} file:///#{svn_dir} --message "initial import"` if DEV_ENV != 'test'
|
194
|
+
FileUtils.rm_r(temp_dir, :force => true)
|
381
195
|
|
382
196
|
# create a new trac site
|
383
|
-
|
384
|
-
|
385
|
-
FileUtils.
|
386
|
-
FileUtils.mkdir_p("#{project_trac_dir}/conf") if SUBTRAC_ENV == 'test' # fake the folder for tests
|
197
|
+
`trac-admin #{trac_dir} initenv #{project_name} sqlite:#{trac_dir}/db/trac.db svn #{svn_dir}` if DEV_ENV != 'test'
|
198
|
+
FileUtils.chown_R('www-data', 'www-data', trac_dir, :verbose => true) if DEV_ENV != 'test'
|
199
|
+
FileUtils.mkdir_p("#{trac_dir}/conf") if DEV_ENV == 'test' # fake the folder for tests
|
387
200
|
|
388
|
-
say("Installing trac configuration...")
|
389
201
|
# install shared trac.ini
|
390
|
-
|
391
|
-
parse_template(trac_ini_template,File.join(project_trac_dir,"/conf/trac.ini"),binding)
|
202
|
+
parse_template(@APP_CONFIG[:templates][:trac],"#{trac_dir}/conf/trac.ini",binding)
|
392
203
|
|
393
204
|
# remove custom templates directory so trac uses the shared location (while we wait for trac patch)
|
394
|
-
FileUtils.rm_rf("#{
|
205
|
+
FileUtils.rm_rf("#{trac_dir}/templates")
|
395
206
|
|
396
|
-
|
207
|
+
puts "Setting up default trac permission..."
|
397
208
|
# set up trac permissions
|
398
209
|
@APP_CONFIG[:trac][:permissions].each do |key, value|
|
399
|
-
`
|
210
|
+
`trac-admin #{trac_dir} permission add #{key} #{value}` if DEV_ENV != 'test'
|
400
211
|
end
|
401
212
|
|
402
|
-
|
403
|
-
# loop through the directory and import all pages
|
404
|
-
Dir.foreach("#{
|
213
|
+
puts "Adding default trac wiki pages..."
|
214
|
+
# this needs to loop through the directory and import all pages
|
215
|
+
Dir.foreach("#{DEV_ROOT}/#{@APP_CONFIG[:default_project_template]}/trac/wiki/.") do |file|
|
405
216
|
# do something with the file here
|
406
217
|
unless ['.', '..','.svn'].include? file
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
`trac-admin #{project_trac_dir} wiki import #{file} #{temp_file}` if SUBTRAC_ENV != 'test'
|
411
|
-
FileUtils.rm(temp_file)
|
218
|
+
parse_template("#{DEV_ROOT}/#{@APP_CONFIG[:default_project_template]}/trac/wiki/#{file}","#{@APP_CONFIG[:dirs][:temp]}/#{file}", binding)
|
219
|
+
`trac-admin #{trac_dir} wiki import #{file} #{@APP_CONFIG[:dirs][:temp]}/#{file}` if DEV_ENV != 'test'
|
220
|
+
FileUtils.rm("#{@APP_CONFIG[:dirs][:temp]}/#{file}")
|
412
221
|
end
|
413
222
|
end
|
414
|
-
|
415
|
-
# run trac upgrade
|
416
|
-
say("Upgrading the trac installation...")
|
417
|
-
`trac-admin #{project_trac_dir} upgrade` if SUBTRAC_ENV != 'test'
|
418
|
-
|
419
223
|
end
|
224
|
+
|
420
225
|
end
|
421
226
|
|
422
227
|
|