ktec-subtrac 0.1.43 → 0.1.44

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
3
  :minor: 1
4
- :patch: 43
4
+ :patch: 44
data/lib/subtrac.rb CHANGED
@@ -38,192 +38,16 @@ require 'subtrac/apache'
38
38
  require 'subtrac/svn'
39
39
  require 'subtrac/trac'
40
40
  require 'subtrac/core_ext'
41
+ require 'subtrac/config'
41
42
 
42
43
  module Subtrac
43
44
 
44
45
  SUBTRAC_ROOT = "#{File.dirname(__FILE__)}/" unless defined?(SUBTRAC_ROOT)
45
46
  SUBTRAC_ENV = (ENV['SUBTRAC_ENV'] || 'development').dup unless defined?(SUBTRAC_ENV)
46
- USER_CONFIG_FILE = 'config/user.yml'
47
-
48
- class << self
49
-
50
- # User configured options
51
- def server_name
52
- @server_name ||= @APP_CONFIG[:server_name]
53
- end
54
-
55
- def server_name=(name)
56
- @APP_CONFIG[:server_name] = @server_name = name
57
- end
58
-
59
- def server_hostname
60
- @server_hostname ||= @APP_CONFIG[:server_hostname]
61
- end
62
-
63
- def server_hostname=(name)
64
- @APP_CONFIG[:server_hostname] = @server_hostname = name
65
- end
66
-
67
- def default_client
68
- @default_client ||= @APP_CONFIG[:default_client]
69
- end
70
-
71
- def default_client=(name)
72
- @APP_CONFIG[:default_client] = @default_client = name
73
- end
74
-
75
- def default_project
76
- @default_project ||= @APP_CONFIG[:default_project]
77
- end
78
-
79
- def default_project=(name)
80
- puts "Updating default_project to #{name}"
81
- @APP_CONFIG[:default_project] = @default_project = name
82
- end
83
-
84
- def default_project_type
85
- @default_project_type ||= @APP_CONFIG[:default_project_type]
86
- end
87
-
88
- def default_project_type=(name)
89
- puts "Updating default_project_type to #{name}"
90
- @APP_CONFIG[:default_project_type] = @default_project_type = name
91
- end
92
-
93
-
94
- # Filesystem directories
95
- def root
96
- Pathname.new(SUBTRAC_ROOT) if defined?(SUBTRAC_ROOT)
97
- end
98
-
99
- def public_path
100
- @public_path ||= self.root ? File.join(self.root, "public") : "public"
101
- end
102
-
103
- def public_path=(path)
104
- @public_path = path
105
- end
106
-
107
- def subtrac_path
108
- @subtrac_path ||= self.root ? File.join(self.root, "subtrac") : "subtrac"
109
- end
110
-
111
- def install_dir
112
- @install_dir ||= File.expand_path(@APP_CONFIG[:installation_dir])
113
- end
114
-
115
- def install_dir=(name)
116
- puts "Setting new install_dir variable to #{name}"
117
- @APP_CONFIG[:installation_dir] = @install_dir = name
118
- end
119
-
120
- def apache_conf_dir
121
- @apache_conf_dir ||= @APP_CONFIG[:apache_conf_dir]
122
- end
123
-
124
- def apache_conf_dir=(name)
125
- @APP_CONFIG[:apache_conf_dir] = @apache_conf_dir = name
126
- end
127
-
128
- def docs_dir
129
- @docs_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:docs])
130
- end
131
-
132
- def svn_dir
133
- @svn_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:svn])
134
- end
135
-
136
- def trac_dir
137
- @trac_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:trac])
138
- end
139
-
140
- def temp_dir
141
- @temp_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:temp])
142
- end
143
-
144
- def log_dir
145
- @log_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:log])
146
- end
147
-
148
- def locations_dir
149
- @locations_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:locations])
150
- end
151
-
152
- # Urls
153
- def svn_url
154
- @svn_url ||= @APP_CONFIG[:urls][:svn]
155
- end
156
-
157
- def trac_permissions
158
- @trac_permissions ||= @APP_CONFIG[:trac][:permissions]
159
- end
160
-
161
- # LDAP
162
- def enable_ldap
163
- @enable_ldap ||= @APP_CONFIG[:ldap][:enable]
164
- end
165
-
166
- def enable_ldap=(value)
167
- @APP_CONFIG[:ldap][:enable] = @enable_ldap = value
168
- end
169
-
170
- def ldap_bind_dn
171
- @ldap_bind_dn ||= @APP_CONFIG[:ldap][:bind_dn]
172
- end
173
-
174
- def ldap_bind_dn=(value)
175
- @APP_CONFIG[:ldap][:bind_dn] = @ldap_bind_dn = value
176
- end
177
-
178
- def ldap_bind_password
179
- @ldap_bind_password ||= @APP_CONFIG[:ldap][:bind_password]
180
- end
181
-
182
- def ldap_bind_password=(value)
183
- @APP_CONFIG[:ldap][:bind_password] = @ldap_bind_password = value
184
- end
185
-
186
- def ldap_bind_host
187
- @ldap_bind_host ||= @APP_CONFIG[:ldap][:bind_host]
188
- end
189
-
190
- def ldap_bind_host=(value)
191
- @APP_CONFIG[:ldap][:bind_host] = @ldap_bind_password = value
192
- end
193
-
194
- end
195
-
47
+
196
48
  # Loads the configuration YML file
197
49
  def self.load_config
198
- # TODO: We need to refactor this code so it will load the default configuration only if one has not been created
199
- puts "\n==== Loading configuration file ===="
200
- # load configuration file
201
- file_path = File.join(subtrac_path, USER_CONFIG_FILE)
202
- file_path = File.join(subtrac_path,"/config/config.yml") if not File.exists?(file_path)
203
- puts "Attempting to read config file: #{file_path}"
204
- begin
205
- yamlFile = YAML.load(File.read(file_path))
206
- rescue Exception => e
207
- raise StandardError, "Config #{file_path} could not be loaded."
208
- end
209
- if yamlFile
210
- if yamlFile[SUBTRAC_ENV]
211
- @APP_CONFIG = yamlFile[SUBTRAC_ENV]
212
- else
213
- raise StandardError, "config/config.yml exists, but doesn't have a configuration for #{SUBTRAC_ENV}."
214
- end
215
- else
216
- raise StandardError, "config/config.yml does not exist."
217
- end
218
- say("Configuration loaded successfully...")
219
- end
220
-
221
- # Write the changes configuration to disk
222
- def self.save_config
223
- # save the things that might have changed
224
- file_path = File.join(subtrac_path, USER_CONFIG_FILE)
225
- user_config = {SUBTRAC_ENV => @APP_CONFIG}
226
- open(file_path, 'w') {|f| YAML.dump(user_config, f)}
50
+ Config.load()
227
51
  end
228
52
 
229
53
  # Install
@@ -235,7 +59,7 @@ module Subtrac
235
59
  confirm_default_client = true
236
60
  else
237
61
  # check where we are installing
238
- confirm_or_replace_value(:install_dir,"install_dir")
62
+ Config.confirm_or_update(:install_dir,"install_dir")
239
63
 
240
64
  unless !File.directory?(install_dir)
241
65
  # Ask if the user agrees (yes or no)
@@ -244,24 +68,24 @@ module Subtrac
244
68
  end
245
69
 
246
70
  # confirm server
247
- confirm_or_replace_value(:server_name,"server_name")
71
+ Config.confirm_or_update(:server_name,"server_name")
248
72
 
249
73
  # ask for hostname
250
- confirm_or_replace_value(:server_hostname,"server_hostname")
74
+ Config.confirm_or_update(:server_hostname,"server_hostname")
251
75
 
252
76
  # default client/project name
253
- confirm_or_replace_value(:default_client,"default_client")
254
- confirm_or_replace_value(:default_project,"default_project")
77
+ Config.confirm_or_update(:default_client,"default_client")
78
+ Config.confirm_or_update(:default_project,"default_project")
255
79
 
256
80
  end
257
81
 
258
82
  say("Ok we're about to install now, these are the options you have chosen:
259
- installation directory: #{install_dir}
83
+ installation directory: #{Config.install_dir}
260
84
  overwrite: #{overwrite}
261
- server name: #{server_name}
262
- server hostname: #{server_hostname}
263
- default client: #{default_client}
264
- default project: #{default_project}")
85
+ server name: #{Config.server_name}
86
+ server hostname: #{Config.server_hostname}
87
+ default client: #{Config.default_client}
88
+ default project: #{Config.default_project}")
265
89
 
266
90
  confirm = agree("Is this ok? [y/n]")
267
91
 
@@ -270,42 +94,44 @@ module Subtrac
270
94
  create_environment_directories(overwrite)
271
95
 
272
96
  #create a new virtual host
273
- apache = Apache.new(binding)
97
+ apache = Apache.new
274
98
  apache.create_virtual_host()
275
99
 
276
100
  # create the trac site
277
- trac = Trac.new(trac_dir, binding)
101
+ trac = Trac.new
278
102
  trac.install_common_files()
279
103
 
280
104
  install_common_files()
281
105
  configure_admin_user()
282
106
 
283
107
  # create default project
284
- create_project(default_project,default_client)
108
+ create_project(Config.default_project,Config.default_client)
285
109
 
286
110
  # store any user preferences for later use
287
- save_config()
111
+ Config.save()
288
112
 
289
113
  end
290
114
 
291
115
  def self.create_project(project,client)
292
116
 
293
117
  # create default project
294
- project = Project.new(project,client,default_project_type)
118
+ project = Project.new(project,client,Config.default_project_type)
295
119
 
296
120
  # get these out for binding...we'll tidy up later
297
- client = project.client
121
+ #client = project.client
122
+ Config.project = project
123
+ Config.client = project.client
298
124
 
299
125
  # create the svn repo
300
- svn = Svn.new(svn_dir, binding)
126
+ svn = Svn.new
301
127
  svn.create_project(project)
302
128
 
303
129
  # create the trac site
304
- trac = Trac.new(trac_dir, binding)
130
+ trac = Trac.new
305
131
  trac.create_project(project)
306
132
 
307
133
  # create the apache configuration
308
- apache = Apache.new(binding)
134
+ apache = Apache.new
309
135
  apache.create_project(project)
310
136
 
311
137
  # fix privileges
@@ -317,53 +143,42 @@ module Subtrac
317
143
 
318
144
  def self.give_apache_privileges
319
145
  # make sure apache can operate on these files
320
- `sudo chown -R www-data:www-data #{install_dir}`
321
- end
322
-
323
- # confirms the current value with the user or accepts a new value if required
324
- def self.confirm_or_replace_value(prop, name)
325
- method(prop).call # initialise the property
326
- current_value = instance_variable_get("@#{prop}")
327
- accept_default = agree("The default value for #{prop} @#{prop} is \"#{current_value}\". Is this ok? [y/n]")
328
- if !accept_default then
329
- answer = ask("What would you like to change it to?")
330
- send("#{prop}=", answer)
331
- #instance_variable_set(prop, answer)
332
- end
146
+ `sudo chown -R www-data:www-data #{Config.install_dir}`
333
147
  end
334
148
 
335
- def self.install_common_files
149
+ def self.install_common_files
336
150
  puts "\n==== Installing common files ===="
337
151
  # TODO: implement a mask for .svn folders
338
152
  # TODO: refactor /common to the app config
339
- FileUtils.cp_r(Dir.glob(File.join(subtrac_path, "common/.")),docs_dir)
153
+ FileUtils.cp_r(Dir.glob(File.join(Config.subtrac_path, "common/.")),Config.docs_dir)
340
154
  end
341
155
 
342
156
  def self.configure_admin_user
343
157
  puts "\n==== Configure admin user ===="
344
158
  # create admin user
345
- passwd_file = File.join(install_dir, ".passwd")
346
159
  admin_user = ask("New admin user: ") { |q| q.echo = true }
347
160
  admin_pass = ask("New password: ") { |q| q.echo = "*" }
348
161
  admin_pass_confirm = ask("Re-type new password: ") { |q| q.echo = "*" }
349
162
  if (admin_pass == admin_pass_confirm) then
163
+ passwd_file = File.join(Config.install_dir, ".passwd")
350
164
  `htpasswd -c -b #{passwd_file} #{admin_user} #{admin_pass}`
351
- @APP_CONFIG[:admin_user] = admin_user
352
- @APP_CONFIG[:admin_pass] = admin_pass
165
+ Config.data[:admin_user] = admin_user
166
+ Config.data[:admin_pass] = admin_pass
353
167
  # ensure this guy is added to trac admin group
354
- @APP_CONFIG[:trac][:permissions][admin_user] = "admins"
168
+ Config.data[:trac][:permissions][admin_user] = "admins"
355
169
  else
356
170
  # call the password chooser again
171
+ configure_admin_user()
357
172
  end
358
173
  end
359
174
 
360
175
  def self.create_environment_directories(overwrite=false)
361
176
  puts "\n==== Creating new environment directories ===="
362
- FileUtils.rm_rf install_dir if overwrite
363
- File.create_if_missing install_dir
177
+ FileUtils.rm_rf Config.install_dir if overwrite
178
+ File.create_if_missing Config.install_dir
364
179
  # create the environment directories
365
- @APP_CONFIG[:dirs].each do |key, value|
366
- dir = File.join(install_dir,value)
180
+ Config.data[:dirs].each do |key, value|
181
+ dir = File.join(Config.install_dir,value)
367
182
  File.create_if_missing dir
368
183
  end
369
184
  end
@@ -7,27 +7,26 @@ require 'subtrac/template'
7
7
 
8
8
  module Subtrac
9
9
  class Apache
10
- def initialize(binding)
11
- @apache_conf_dir = Subtrac::apache_conf_dir
12
- @subtrac_path = Subtrac::subtrac_path
13
- @server_hostname = Subtrac::server_hostname
14
- @locations_dir = Subtrac::locations_dir
15
- @binding = binding
10
+ def initialize
11
+
16
12
  end
17
13
  def create_virtual_host()
18
14
  puts "\n==== Creating new virtual host ===="
19
15
  # TODO: Place a file in apache2 conf with Include directive which points to our conf folder
20
- template = Template.new(File.join(File.dirname(__FILE__), "apache", "vhost.conf.erb"))
21
- template.write(File.join(@apache_conf_dir,@server_hostname), @binding)
16
+ template = get_template("vhost.conf.erb")
17
+ template.write(File.join(Config.apache_conf_dir,Config.server_hostname))
18
+ puts("template written")
22
19
  enable_site()
20
+ puts("enabled site")
23
21
  force_reload()
22
+ puts("apache reloaded")
24
23
  end
25
24
  # creates the files necessary for a new client
26
25
  def create_client(client)
27
- client_config = File.join(@locations_dir,"#{client.path}.conf")
26
+ client_config = File.join(Config.locations_dir,"#{Config.client.path}.conf")
28
27
  if (!File.exists?(client_config)) then
29
- template = Template.new(File.join(File.dirname(__FILE__), "apache", "location.conf.erb"))
30
- template.write(client_config,@binding)
28
+ template = get_template("location.conf.erb")
29
+ template.write(client_config)
31
30
  force_reload()
32
31
  end
33
32
  end
@@ -37,11 +36,14 @@ module Subtrac
37
36
  end
38
37
  def enable_site
39
38
  # tell apache enable site
40
- `a2ensite #{@server_hostname}` if SUBTRAC_ENV != 'test'
39
+ `a2ensite #{Config.server_hostname}` if SUBTRAC_ENV != 'test'
41
40
  end
42
41
  def create_project(project)
43
42
  # we dont need to do anything for each project, but we do need to ensure a client location exists
44
43
  create_client(project.client)
45
44
  end
45
+ def get_template(name)
46
+ Template.new(File.join(File.dirname(__FILE__), "apache", name))
47
+ end
46
48
  end
47
49
  end
@@ -2,6 +2,7 @@ module Subtrac
2
2
  class Client
3
3
  attr_reader :display_name, :path
4
4
  def initialize(name)
5
+ puts "Client created"
5
6
  @display_name = name.gsub(/^[a-z]|\s+[a-z]/) { |a| a.upcase }
6
7
  @path = name.downcase
7
8
  end
@@ -7,191 +7,271 @@ require 'fileutils'
7
7
 
8
8
  module Subtrac
9
9
  class Config
10
-
11
- USER_CONFIG_FILE = 'config/user.yml'
10
+ class << self
12
11
 
13
- def initialize()
14
-
15
- end
12
+ USER_CONFIG_FILE = 'config/user.yml'
13
+
14
+ attr_accessor :data
15
+
16
+ def initialize()
17
+ puts "config/initialize"
18
+ end
19
+
20
+ def get_binding
21
+ binding
22
+ end
16
23
 
17
- # Loads the configuration YML file
18
- def load_config
19
- # TODO: We need to refactor this code so it will load the default configuration only if one has not been created
20
- puts "\n==== Loading configuration file ===="
21
- # load configuration file
22
- file_path = File.join(subtrac_path, USER_CONFIG_FILE)
23
- file_path = File.join(subtrac_path,"/config/config.yml") if not File.exists?(file_path)
24
- puts "Attempting to read config file: #{file_path}"
25
- begin
26
- yamlFile = YAML.load(File.read(file_path))
27
- rescue Exception => e
28
- raise StandardError, "Config #{file_path} could not be loaded."
29
- end
30
- if yamlFile
31
- if yamlFile[SUBTRAC_ENV]
32
- @APP_CONFIG = yamlFile[SUBTRAC_ENV]
24
+ # Loads the configuration YML file
25
+ def load
26
+ # TODO: We need to refactor this code so it will load the default configuration only if one has not been created
27
+ puts "\n==== Loading configuration file ===="
28
+ # load configuration file
29
+ file_path = File.join(subtrac_path, USER_CONFIG_FILE)
30
+ file_path = File.join(subtrac_path,"/config/config.yml") if not File.exists?(file_path)
31
+ puts "Attempting to read config file: #{file_path}"
32
+ begin
33
+ yamlFile = YAML.load(File.read(file_path))
34
+ rescue Exception => e
35
+ raise StandardError, "Config #{file_path} could not be loaded."
36
+ end
37
+ if yamlFile
38
+ if yamlFile[SUBTRAC_ENV]
39
+ @APP_CONFIG = yamlFile[SUBTRAC_ENV]
40
+ @data = @APP_CONFIG # TODO: Deprecate APP_CONFIG
41
+ else
42
+ raise StandardError, "config/config.yml exists, but doesn't have a configuration for #{SUBTRAC_ENV}."
43
+ end
33
44
  else
34
- raise StandardError, "config/config.yml exists, but doesn't have a configuration for #{SUBTRAC_ENV}."
45
+ raise StandardError, "config/config.yml does not exist."
35
46
  end
36
- else
37
- raise StandardError, "config/config.yml does not exist."
47
+ say("Configuration loaded successfully...")
38
48
  end
39
- say("Configuration loaded successfully...")
40
- end
41
49
 
42
- # Write the changes configuration to disk
43
- def self.save_config
44
- # save the things that might have changed
45
- file_path = File.join(subtrac_path, USER_CONFIG_FILE)
46
- user_config = {SUBTRAC_ENV => @APP_CONFIG}
47
- open(file_path, 'w') {|f| YAML.dump(user_config, f)}
48
- end
50
+ # Write the changes configuration to disk
51
+ def save
52
+ # save the things that might have changed
53
+ file_path = File.join(subtrac_path, USER_CONFIG_FILE)
54
+ user_config = {SUBTRAC_ENV => @APP_CONFIG}
55
+ open(file_path, 'w') {|f| YAML.dump(user_config, f)}
56
+ end
49
57
 
50
- # User configured options
51
- def server_name
52
- @server_name ||= @APP_CONFIG[:server_name]
53
- end
58
+ # confirms the current value with the user or accepts a new value if required
59
+ def confirm_or_update(prop, name)
60
+ method(prop).call # initialise the property
61
+ current_value = instance_variable_get("@#{prop}")
62
+ accept_default = agree("The default value for #{prop} is \"#{current_value}\". Is this ok? [y/n]")
63
+ if !accept_default then
64
+ answer = ask("What would you like to change it to?")
65
+ send("#{prop}=", answer)
66
+ #instance_variable_set(prop, answer)
67
+ end
68
+ end
69
+
70
+ def project
71
+ @project
72
+ end
54
73
 
55
- def server_name=(name)
56
- @APP_CONFIG[:server_name] = @server_name = name
57
- end
74
+ def project=(name)
75
+ @project = name
76
+ end
77
+
78
+ def client
79
+ @client
80
+ end
81
+
82
+ def client=(name)
83
+ @client = name
84
+ end
58
85
 
59
- def server_hostname
60
- @server_hostname ||= @APP_CONFIG[:server_hostname]
61
- end
86
+ # User configured options
87
+ def server_name
88
+ @server_name ||= @APP_CONFIG[:server_name]
89
+ end
62
90
 
63
- def server_hostname=(name)
64
- @APP_CONFIG[:server_hostname] = @server_hostname = name
65
- end
91
+ def server_name=(name)
92
+ @APP_CONFIG[:server_name] = @server_name = name
93
+ end
66
94
 
67
- def default_client
68
- @default_client ||= @APP_CONFIG[:default_client]
69
- end
95
+ def server_hostname
96
+ @server_hostname ||= @APP_CONFIG[:server_hostname]
97
+ end
70
98
 
71
- def default_client=(name)
72
- @APP_CONFIG[:default_client] = @default_client = name
73
- end
99
+ def server_hostname=(name)
100
+ @APP_CONFIG[:server_hostname] = @server_hostname = name
101
+ end
74
102
 
75
- def default_project
76
- @default_project ||= @APP_CONFIG[:default_project]
77
- end
103
+ def default_client
104
+ @default_client ||= @APP_CONFIG[:default_client]
105
+ end
78
106
 
79
- def default_project=(name)
80
- puts "Updating default_project to #{name}"
81
- @APP_CONFIG[:default_project] = @default_project = name
82
- end
107
+ def default_client=(name)
108
+ @APP_CONFIG[:default_client] = @default_client = name
109
+ end
83
110
 
84
- def default_project_type
85
- @default_project_type ||= @APP_CONFIG[:default_project_type]
86
- end
111
+ def default_project
112
+ @default_project ||= @APP_CONFIG[:default_project]
113
+ end
87
114
 
88
- def default_project_type=(name)
89
- puts "Updating default_project_type to #{name}"
90
- @APP_CONFIG[:default_project_type] = @default_project_type = name
91
- end
115
+ def default_project=(name)
116
+ puts "Updating default_project to #{name}"
117
+ @APP_CONFIG[:default_project] = @default_project = name
118
+ end
119
+
120
+ def default_project_type
121
+ @default_project_type ||= @APP_CONFIG[:default_project_type]
122
+ end
123
+
124
+ def default_project_type=(name)
125
+ puts "Updating default_project_type to #{name}"
126
+ @APP_CONFIG[:default_project_type] = @default_project_type = name
127
+ end
92
128
 
93
129
 
94
- # Filesystem directories
95
- def root
96
- Pathname.new(SUBTRAC_ROOT) if defined?(SUBTRAC_ROOT)
97
- end
130
+ # Filesystem directories
131
+ def root
132
+ Pathname.new(SUBTRAC_ROOT) if defined?(SUBTRAC_ROOT)
133
+ end
98
134
 
99
- def public_path
100
- @public_path ||= self.root ? File.join(self.root, "public") : "public"
101
- end
135
+ def public_path
136
+ @public_path ||= self.root ? File.join(self.root, "public") : "public"
137
+ end
102
138
 
103
- def public_path=(path)
104
- @public_path = path
105
- end
139
+ def public_path=(path)
140
+ @public_path = path
141
+ end
106
142
 
107
- def subtrac_path
108
- @subtrac_path ||= self.root ? File.join(self.root, "subtrac") : "subtrac"
109
- end
143
+ def subtrac_path
144
+ @subtrac_path ||= self.root ? File.join(self.root, "subtrac") : "subtrac"
145
+ end
110
146
 
111
- def install_dir
112
- @install_dir ||= File.expand_path(@APP_CONFIG[:installation_dir])
113
- end
147
+ def install_dir
148
+ @install_dir ||= File.expand_path(@APP_CONFIG[:installation_dir])
149
+ end
114
150
 
115
- def install_dir=(name)
116
- puts "Setting new install_dir variable to #{name}"
117
- @APP_CONFIG[:installation_dir] = @install_dir = name
118
- end
151
+ def install_dir=(name)
152
+ puts "Setting new install_dir variable to #{name}"
153
+ @APP_CONFIG[:installation_dir] = @install_dir = name
154
+ end
119
155
 
120
- def apache_conf_dir
121
- @apache_conf_dir ||= @APP_CONFIG[:apache_conf_dir]
122
- end
156
+ def apache_conf_dir
157
+ @apache_conf_dir ||= @APP_CONFIG[:apache_conf_dir]
158
+ end
123
159
 
124
- def apache_conf_dir=(name)
125
- @APP_CONFIG[:apache_conf_dir] = @apache_conf_dir = name
126
- end
160
+ def apache_conf_dir=(name)
161
+ @APP_CONFIG[:apache_conf_dir] = @apache_conf_dir = name
162
+ end
127
163
 
128
- def docs_dir
129
- @docs_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:docs])
130
- end
164
+ def docs_dir
165
+ @docs_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:docs])
166
+ end
131
167
 
132
- def svn_dir
133
- @svn_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:svn])
134
- end
168
+ def svn_dir
169
+ @svn_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:svn])
170
+ end
135
171
 
136
- def trac_dir
137
- @trac_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:trac])
138
- end
172
+ def trac_dir
173
+ @trac_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:trac])
174
+ end
139
175
 
140
- def temp_dir
141
- @temp_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:temp])
142
- end
176
+ def temp_dir
177
+ @temp_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:temp])
178
+ end
143
179
 
144
- def log_dir
145
- @log_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:log])
146
- end
180
+ def log_dir
181
+ @log_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:log])
182
+ end
147
183
 
148
- def locations_dir
149
- @locations_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:locations])
150
- end
184
+ def locations_dir
185
+ @locations_dir ||= File.join(install_dir,@APP_CONFIG[:dirs][:locations])
186
+ end
151
187
 
152
- # Urls
153
- def svn_url
154
- @svn_url ||= @APP_CONFIG[:urls][:svn]
155
- end
188
+ # Urls
189
+ def svn_url
190
+ @svn_url ||= @APP_CONFIG[:urls][:svn]
191
+ end
156
192
 
157
- def trac_permissions
158
- @trac_permissions ||= @APP_CONFIG[:trac][:permissions]
159
- end
193
+ def trac_permissions
194
+ @trac_permissions ||= @APP_CONFIG[:trac][:permissions]
195
+ end
160
196
 
161
- # LDAP
162
- def enable_ldap
163
- @enable_ldap ||= @APP_CONFIG[:ldap][:enable]
164
- end
197
+ # LDAP
198
+ def enable_ldap
199
+ @enable_ldap ||= @APP_CONFIG[:ldap][:enable]
200
+ end
165
201
 
166
- def enable_ldap=(value)
167
- @APP_CONFIG[:ldap][:enable] = @enable_ldap = value
168
- end
202
+ def enable_ldap=(value)
203
+ @APP_CONFIG[:ldap][:enable] = @enable_ldap = value
204
+ end
169
205
 
170
- def ldap_bind_dn
171
- @ldap_bind_dn ||= @APP_CONFIG[:ldap][:bind_dn]
172
- end
206
+ def ldap_host
207
+ @ldap_host ||= @APP_CONFIG[:ldap][:host]
208
+ end
173
209
 
174
- def ldap_bind_dn=(value)
175
- @APP_CONFIG[:ldap][:bind_dn] = @ldap_bind_dn = value
176
- end
177
-
178
- def ldap_bind_password
179
- @ldap_bind_password ||= @APP_CONFIG[:ldap][:bind_password]
180
- end
210
+ def ldap_host=(value)
211
+ @APP_CONFIG[:ldap][:host] = @ldap_host = value
212
+ end
181
213
 
182
- def ldap_bind_password=(value)
183
- @APP_CONFIG[:ldap][:bind_password] = @ldap_bind_password = value
184
- end
185
-
186
- def ldap_bind_host
187
- @ldap_bind_host ||= @APP_CONFIG[:ldap][:bind_host]
188
- end
214
+ def ldap_port
215
+ @ldap_port ||= @APP_CONFIG[:ldap][:port]
216
+ end
189
217
 
190
- def ldap_bind_host=(value)
191
- @APP_CONFIG[:ldap][:bind_host] = @ldap_bind_password = value
192
- end
218
+ def ldap_port=(value)
219
+ @APP_CONFIG[:ldap][:port] = @ldap_port = value
220
+ end
221
+
222
+ def ldap_basedn
223
+ @ldap_basedn ||= @APP_CONFIG[:ldap][:basedn]
224
+ end
225
+
226
+ def ldap_basedn=(value)
227
+ @APP_CONFIG[:ldap][:basedn] = @ldap_basedn = value
228
+ end
193
229
 
230
+ def ldap_user_rdn
231
+ @ldap_user_rdn ||= @APP_CONFIG[:ldap][:user_rdn]
232
+ end
194
233
 
234
+ def ldap_user_rdn=(value)
235
+ @APP_CONFIG[:ldap][:user_rdn] = @ldap_user_rdn = value
236
+ end
237
+
238
+ def ldap_group_rdn
239
+ @ldap_group_rdn ||= @APP_CONFIG[:ldap][:group_rdn]
240
+ end
241
+
242
+ def ldap_group_rdn=(value)
243
+ @APP_CONFIG[:ldap][:group_rdn] = @ldap_group_rdn = value
244
+ end
245
+
246
+ def ldap_store_bind
247
+ @ldap_store_bind ||= @APP_CONFIG[:ldap][:store_bind]
248
+ end
249
+
250
+ def ldap_store_bind=(value)
251
+ @APP_CONFIG[:ldap][:store_bind] = @ldap_store_bind = value
252
+ end
253
+
254
+ def ldap_store_bind
255
+ @ldap_bind_password ||= @APP_CONFIG[:ldap][:bind_password]
256
+ end
257
+
258
+ def ldap_bind_user
259
+ @ldap_bind_user ||= @APP_CONFIG[:ldap][:bind_user]
260
+ end
261
+
262
+ def ldap_bind_user=(value)
263
+ @APP_CONFIG[:ldap][:bind_user] = @ldap_bind_user = value
264
+ end
265
+
266
+ def ldap_bind_passwd
267
+ @ldap_bind_passwd ||= @APP_CONFIG[:ldap][:bind_passwd]
268
+ end
269
+
270
+ def ldap_bind_passwd=(value)
271
+ @APP_CONFIG[:ldap][:bind_passwd] = @ldap_bind_passwd = value
272
+ end
273
+
274
+ end
195
275
 
196
276
  end
197
277
  end
data/lib/subtrac/svn.rb CHANGED
@@ -8,12 +8,8 @@ require 'fileutils'
8
8
  module Subtrac
9
9
  class Svn
10
10
 
11
- def initialize(svn_dir, binding)
12
- # create svn directory if required
13
- @svn_dir = svn_dir
14
- File.create_if_missing(@svn_dir)
15
- @temp_dir = Subtrac::temp_dir
16
- @binding = binding
11
+ def initialize
12
+ File.create_if_missing(Config.svn_dir)
17
13
  end
18
14
 
19
15
  # creates a new svn repository for the project
@@ -23,10 +19,10 @@ module Subtrac
23
19
  client = project.client
24
20
 
25
21
  # create the client folder
26
- File.create_if_missing(File.join(@svn_dir,client.path))
22
+ File.create_if_missing(File.join(Config.svn_dir,client.path))
27
23
 
28
24
  # create the project folder
29
- project.svn_dir = File.join(@svn_dir,client.path,project.path)
25
+ project.svn_dir = File.join(Config.svn_dir,client.path,project.path)
30
26
 
31
27
  # TODO: Need to handle this exception...
32
28
  if (File.directory? project.svn_dir) then
@@ -40,7 +36,7 @@ module Subtrac
40
36
  # copy template svn project to a temp folder, then svn import it into the repo
41
37
  say("Create temporary project directory and copy template files...")
42
38
  svn_template_dir = File.join(project.template,"svn")
43
- project_temp_dir = File.join(@temp_dir,project.path)
39
+ project_temp_dir = File.join(Config.temp_dir,project.path)
44
40
  FileUtils.cp_r(svn_template_dir,project_temp_dir)
45
41
 
46
42
  # import into svn
@@ -54,7 +50,6 @@ module Subtrac
54
50
  `sudo chmod 770 #{project.svn_dir}`
55
51
  `sudo chmod 755 #{project.svn_dir}/dav/activities`
56
52
  `sudo chown www-data:www-data #{project.svn_dir}/dav/activities`
57
-
58
53
 
59
54
  end
60
55
 
@@ -1,15 +1,20 @@
1
+ require 'subtrac/config'
1
2
  module Subtrac
2
3
  class Template
3
4
  def initialize(template)
4
5
  @template = template
5
6
  end
6
- def render(binding)
7
- ERB.new(IO.read(@template)).result(binding)
7
+ def render
8
+ puts "Template rendering #{@template}"
9
+ b = Config.get_binding
10
+ ERB.new(IO.read(@template)).result(b)
8
11
  end
9
- def write(outfile,binding)
12
+ def write(outfile)
10
13
  file = File.open(outfile, 'w+')
11
14
  if file
12
- file.syswrite(render(binding))
15
+ file_output = render()
16
+ #puts file_output
17
+ file.syswrite(file_output)
13
18
  else
14
19
  raise "Unable to open file for writing. file #{outfile}"
15
20
  end
data/lib/subtrac/trac.rb CHANGED
@@ -5,31 +5,28 @@
5
5
 
6
6
  require 'fileutils'
7
7
  require 'subtrac/template'
8
+ require 'subtrac/config'
8
9
 
9
10
  module Subtrac
10
11
  class Trac
11
12
 
12
- def initialize trac_dir, binding
13
- @trac_dir = trac_dir
14
- @subtrac_path = Subtrac::subtrac_path
15
- @trac_permissions = Subtrac::trac_permissions
16
- @temp_dir = Subtrac::temp_dir
17
- @binding = binding
13
+ def initialize
14
+ File.create_if_missing(Config.trac_dir)
18
15
  end
19
16
 
20
17
  # Install the shared trac.ini file
21
18
  def install_common_files
22
- File.create_if_missing(File.join(@trac_dir, ".shared"))
19
+ File.create_if_missing(File.join(Config.trac_dir, ".shared"))
23
20
  # install trac.ini
24
21
  trac_ini_template = Template.new(File.join(File.dirname(__FILE__), "trac", "common.trac.ini.erb"))
25
- trac_ini_template.write(File.join(@trac_dir,".shared","trac.ini"),@binding)
22
+ trac_ini_template.write(File.join(Config.trac_dir,".shared","trac.ini"))
26
23
  end
27
24
 
28
25
  def create_project(project)
29
26
 
30
27
  client = project.client
31
28
 
32
- project.trac_dir = File.join(@trac_dir,client.path,project.path)
29
+ project.trac_dir = File.join(Config.trac_dir,client.path,project.path)
33
30
 
34
31
  # create new project directories
35
32
  say("Create project directories...")
@@ -43,11 +40,11 @@ module Subtrac
43
40
  say("Installing trac configuration...")
44
41
  # install project trac.ini
45
42
  trac_ini_template = Template.new(File.join(File.dirname(__FILE__), "trac", "trac.ini.erb"))
46
- trac_ini_template.write(File.join(project.trac_dir,"/conf/trac.ini"),@binding)
43
+ trac_ini_template.write(File.join(project.trac_dir,"/conf/trac.ini"))
47
44
 
48
45
  say("Setting up default trac permissions...")
49
46
  # set up trac permissions
50
- @trac_permissions.each do |key, value|
47
+ Config.trac_permissions.each do |key, value|
51
48
  `sudo trac-admin #{project.trac_dir} permission add #{key} #{value}`
52
49
  end
53
50
 
@@ -56,9 +53,9 @@ module Subtrac
56
53
  Dir.foreach("#{project.template}/trac/wiki/.") do |file|
57
54
  # do something with the file here
58
55
  unless ['.', '..','.svn'].include? file
59
- temp_file = File.join(@temp_dir,file)
56
+ temp_file = File.join(Config.temp_dir,file)
60
57
  template = Template.new(File.join(project.template,"trac/wiki",file))
61
- template.write(temp_file,@binding)
58
+ template.write(temp_file)
62
59
  `trac-admin #{project.trac_dir} wiki import #{file} #{temp_file}`
63
60
  FileUtils.rm(temp_file)
64
61
  end
@@ -22,16 +22,16 @@ width = -1
22
22
  [trac]
23
23
  repository_dir = ../../../svn/<%= client.path %>/<%= project.path %>
24
24
 
25
- <% if @APP_CONFIG[:ldap][:enable] then %>
25
+ <% if enable_ldap then %>
26
26
  [ldap]
27
- enable = <%= @APP_CONFIG[:ldap][:enable] %>
28
- host = <%= @APP_CONFIG[:ldap][:host] %>
29
- port = <%= @APP_CONFIG[:ldap][:port] %>
30
- basedn = <%= @APP_CONFIG[:ldap][:basedn] %>
31
- user_rdn = <%= @APP_CONFIG[:ldap][:user_rdn] %>
32
- group_rdn = <%= @APP_CONFIG[:ldap][:group_rdn] %>
33
- store_bind = <%= @APP_CONFIG[:ldap][:store_bind] %>
34
- group_bind = <%= @APP_CONFIG[:ldap][:group_bind] %>
35
- bind_user = <%= @APP_CONFIG[:ldap][:bind_user] %>
36
- bind_passwd = <%= @APP_CONFIG[:ldap][:bind_user] %>
27
+ enable = enable_ldap %>
28
+ host = <%= ldap_host %>
29
+ port = <%= ldap_port %>
30
+ basedn = <%= ldap_basedn %>
31
+ user_rdn = <%= ldap_user_rdn %>
32
+ group_rdn = <%= ldap_group_rdn %>
33
+ store_bind = <%= ldap_store_bind %>
34
+ group_bind = <%= ldap_group_bind %>
35
+ bind_user = <%= ldap_bind_user %>
36
+ bind_passwd = <%= ldap_bind_passwd %>
37
37
  <% end %>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ktec-subtrac
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.43
4
+ version: 0.1.44
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keith Salisbury
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-02 00:00:00 -07:00
12
+ date: 2009-05-03 00:00:00 -07:00
13
13
  default_executable: subtrac
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency