Class: Subtrac::Trac

Inherits:
Object
  • Object
show all
Defined in:
lib/subtrac/trac.rb

Instance Method Summary collapse

Constructor Details

#initializeTrac

Returns a new instance of Trac.

[View source]

13
14
15
# File 'lib/subtrac/trac.rb', line 13

def initialize
  File.create_if_missing(Config.trac_dir)
end

Instance Method Details

#create_project(project) ⇒ Object

[View source]

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/subtrac/trac.rb', line 25

def create_project(project)
  
  client = project.client
  
  project.trac_dir = File.join(Config.trac_dir,client.path,project.path)

  # create new project directories
  say("Create project directories...")
  File.create_if_missing(project.trac_dir)

  # create a new trac site
  say("Creating a new trac site...")
  result = `trac-admin #{project.trac_dir} initenv #{project.path} sqlite:#{project.trac_dir}/db/trac.db svn #{project.svn_dir}`
  FileUtils.chown_R('www-data', 'www-data', project.trac_dir, :verbose => false) if result

  say("Installing trac configuration...")
  # install project trac.ini
  trac_ini_template = Template.new(File.join(File.dirname(__FILE__), "trac", "trac.ini.erb"))
  trac_ini_template.write(File.join(project.trac_dir,"/conf/trac.ini"))
  
  say("Setting up default trac permissions...")
  # set up trac permissions
  Config.trac_permissions.each do |key, value|
    `sudo trac-admin #{project.trac_dir} permission add #{key} #{value}`
  end
  
  say("Adding default trac wiki pages...#{project.template}")
  # loop through the directory and import all pages
  Dir.foreach("#{project.template}/trac/wiki/.") do |file|
    unless ['.', '..','.svn'].include? file
      temp_file = File.join(Config.temp_dir,file)
      template = Template.new(File.join(project.template,"trac/wiki",file))
      template.write(temp_file)
      `trac-admin #{project.trac_dir} wiki import #{file} #{temp_file}`
      FileUtils.rm(temp_file)
    end
  end

  # run trac upgrade
  say("Upgrading the trac installation...")
  `trac-admin #{project.trac_dir} upgrade`

end

#install_common_filesObject

Install the shared trac.ini file

[View source]

18
19
20
21
22
23
# File 'lib/subtrac/trac.rb', line 18

def install_common_files
  File.create_if_missing(File.join(Config.trac_dir, ".shared"))
  # install trac.ini
  trac_ini_template = Template.new(File.join(File.dirname(__FILE__), "trac", "common.trac.ini.erb"))
  trac_ini_template.write(File.join(Config.trac_dir,".shared","trac.ini"))
end