ktec-subtrac 0.1.46 → 0.1.47

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.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 1
4
- :patch: 46
4
+ :patch: 47
data/bin/subtrac CHANGED
@@ -23,13 +23,23 @@ end
23
23
  command :create do |c|
24
24
  c.syntax = 'subtrac create [options]'
25
25
  c.summary = 'Creates a new Subversion repository and associated Trac site for to specified project and client.'
26
- c.description = 'Creates a new Subversion repository and associated Trac site for to specified project and client.'
27
- c.example 'subtrac create', 'Creates a new project.'
28
- c.option '-p','--project PROJECT', 'Name of project to create'
29
- c.option '-c','--client CLIENT', 'Name of client to create the project for'
26
+ c.description = 'Creates a new Subversion repository and associated Trac site for the specified project and client.'
27
+ c.example 'subtrac create -p new_project -c subtrac', 'Creates a new project called "new_project" in the "subtrac" client group.'
28
+ c.option '-p','--project PROJECT', 'Name of project to create.'
29
+ c.option '-c','--client CLIENT', 'Name of client to create the project for.'
30
+ c.option '-t','--template TEMPLATE', 'Name of template to use when creating the project.'
30
31
  c.when_called Subtrac::Commands::Create
31
32
  end
32
33
 
34
+ command :create_template do |c|
35
+ c.syntax = 'subtrac create_template [options]'
36
+ c.summary = 'Creates a new Subversion repository and associated Trac site for to specified project template.'
37
+ c.description = 'Creates a new Subversion repository and associated Trac site for the specified project template and client.'
38
+ c.example 'subtrac create as3_template', 'Creates a new project template called "as3_template".'
39
+ c.option '-t','--template TEMPLATE', 'Name of project template to create.'
40
+ c.when_called Subtrac::Commands::CreateTemplate
41
+ end
42
+
33
43
  =begin
34
44
  command :delete do |c|
35
45
  c.syntax = 'subtrac delete [options]'
@@ -2,11 +2,29 @@ module Subtrac
2
2
  module Commands
3
3
  class Create
4
4
  def initialize(args, options)
5
- options.project = ask("What is the name of the project you would like to create? ") if !options.project
6
- options.client = ask("Which client is this project for? ") if !options.client
7
- # this needs to load the updated configuration?
8
- Subtrac.load_config()
9
- Subtrac.create_project(options.project,options.client)
5
+ options.project = ask("What is the name of the project you would like to create? ") if options.project.nil?
6
+ options.client = ask("Which client is this project for? ") if options.client.nil?
7
+ use_custom_template = agree("Would you like to use a custom template for this project? [y/n]") if options.template.nil?
8
+ if use_custom_template then
9
+ Subtrac.load_config()
10
+ list_of_templates = Dir.entries(File.join(Config.svn_dir,"templates"))
11
+
12
+ # The new and improved choose()...
13
+ #choices = %{#{list_of_templates}} # %w{ruby python perl}
14
+ say("\nThis is the new mode (default)...")
15
+ choose do |menu|
16
+ menu.prompt = "Which template would you like to use for this project? "
17
+ list_of_templates.each do |t|
18
+ unless File.directory?(t)
19
+ menu.choice t do options.template = t end
20
+ end
21
+ end
22
+ end
23
+
24
+ Subtrac.create_project(options.project,options.client,options.template)
25
+ else
26
+ Subtrac.create_project(options.project,options.client)
27
+ end
10
28
  end
11
29
  end
12
30
  end
@@ -0,0 +1,11 @@
1
+ module Subtrac
2
+ module Commands
3
+ class CreateTemplate
4
+ def initialize(args, options)
5
+ options.project = ask("What is the name of the template project you would like to create? ") if options.project.nil?
6
+ options.client = "templates"
7
+ Subtrac.create_project(options.project,options.client,"template")
8
+ end
9
+ end
10
+ end
11
+ end
@@ -2,7 +2,6 @@ module Subtrac
2
2
  module Commands
3
3
  class Install
4
4
  def initialize(args, options)
5
- Subtrac.load_config()
6
5
  Subtrac.install(args,options)
7
6
  end
8
7
  end
@@ -2,5 +2,6 @@ module Subtrac
2
2
  module Commands
3
3
  autoload :Install, "subtrac/commands/install"
4
4
  autoload :Create, "subtrac/commands/create"
5
+ autoload :CreateTemplate, "subtrac/commands/create_template"
5
6
  end
6
7
  end
@@ -9,12 +9,11 @@ development: &non_production_settings
9
9
 
10
10
  :installation_dir: /var/subtrac
11
11
 
12
- :default_project_type: "blank"
13
12
  :default_client: "Subtrac"
14
13
  :default_project: "Public"
15
14
 
16
15
  :apache_conf_dir: /etc/apache2/sites-available
17
-
16
+
18
17
  :ldap:
19
18
  :enable: false
20
19
  :host:
@@ -21,6 +21,10 @@ module Subtrac
21
21
  binding
22
22
  end
23
23
 
24
+ def loaded?
25
+ @loaded ||= false
26
+ end
27
+
24
28
  # Loads the configuration YML file
25
29
  def load
26
30
  # TODO: We need to refactor this code so it will load the default configuration only if one has not been created
@@ -37,6 +41,7 @@ module Subtrac
37
41
  if yamlFile
38
42
  if yamlFile[SUBTRAC_ENV]
39
43
  @data = yamlFile[SUBTRAC_ENV]
44
+ @loaded = true
40
45
  else
41
46
  raise StandardError, "config/config.yml exists, but doesn't have a configuration for #{SUBTRAC_ENV}."
42
47
  end
@@ -112,20 +117,9 @@ module Subtrac
112
117
  end
113
118
 
114
119
  def default_project=(name)
115
- puts "Updating default_project to #{name}"
116
120
  @data[:default_project] = @default_project = name
117
121
  end
118
122
 
119
- def default_project_type
120
- @default_project_type ||= @data[:default_project_type]
121
- end
122
-
123
- def default_project_type=(name)
124
- puts "Updating default_project_type to #{name}"
125
- @data[:default_project_type] = @default_project_type = name
126
- end
127
-
128
-
129
123
  # Filesystem directories
130
124
  def root
131
125
  Pathname.new(SUBTRAC_ROOT) if defined?(SUBTRAC_ROOT)
@@ -0,0 +1 @@
1
+ project: ${project.display_name}
@@ -1,7 +1,7 @@
1
1
  [[PageOutline]]
2
2
  = Welcome to the <%= server_name %> for <%= project.display_name %> =
3
3
 
4
- This is the home of development for <%= client %>. This page is editable by design. That means YOU. If something is missing, fix it. This is what you make of it so get involved.
4
+ This is the home of development for <%= client.display_name %>. This page is editable by design. That means YOU. If something is missing, fix it. This is what you make of it so get involved.
5
5
 
6
6
  == Starting Points ==
7
7
 
@@ -30,6 +30,27 @@ svn import . http://<%= server_hostname %><%= svn_url %>/<%= client.path %>/<%=
30
30
  * [http://scplugin.tigris.org/ For OS X use SCPlugin]
31
31
  * [http://theappleblog.com/2009/02/23/12-subversion-apps-for-os-x/ There's loads more if you don't like these]
32
32
 
33
+ = About Trac =
34
+
35
+ Trac is a '''minimalistic''' approach to '''web-based''' management of
36
+ '''software projects'''. Its goal is to simplify effective tracking and handling of software issues, enhancements and overall progress.
37
+
38
+ All aspects of Trac have been designed with the single goal to
39
+ '''help developers write great software''' while '''staying out of the way'''
40
+ and imposing as little as possible on a team's established process and
41
+ culture.
42
+
43
+ As all Wiki pages, this page is editable, this means that you can
44
+ modify the contents of this page simply by using your
45
+ web-browser. Simply click on the "Edit this page" link at the bottom
46
+ of the page. WikiFormatting will give you a detailed description of
47
+ available Wiki formatting commands.
48
+
49
+ TracGuide is a good place to start.
50
+
51
+ Enjoy! [[BR]]
52
+ ''The Saint Team''
53
+
33
54
  == Starting Points ==
34
55
 
35
56
  * TracGuide -- Built-in Documentation
@@ -0,0 +1,60 @@
1
+ [[PageOutline]]
2
+ = Welcome to the <%= server_name %> for <%= project.display_name %> =
3
+
4
+ This is the home of development for <%= client.display_name %>. This page is editable by design. That means YOU. If something is missing, fix it. This is what you make of it so get involved.
5
+
6
+ == Starting Points ==
7
+
8
+ * [<%= svn_url %>/<%= client.path %> Browse all <%= client.display_name %> SVN Repositories]
9
+ * [<%= svn_url %>/<%= client.path %>/<%= project.path %> Browse the <%= project.display_name %> repository]
10
+
11
+ === How to check this project out ===
12
+
13
+ Make sure you have subversion client installed, then you can check the project out using:
14
+
15
+ {{{
16
+ svn checkout http://<%= server_hostname %><%= svn_url %>/<%= client.path %>/<%= project.path %>/trunk <%= project.path %>
17
+ }}}
18
+
19
+ === How to import existing files into this repository ===
20
+
21
+ The following example will import all files in the current directory into the repository.
22
+
23
+ {{{
24
+ svn import . http://<%= server_hostname %><%= svn_url %>/<%= client.path %>/<%= project.path %>/trunk -m "initial import"
25
+ }}}
26
+
27
+ === Using SVN ===
28
+
29
+ * [http://tortoisesvn.tigris.org/ For Windows use Tortoise SVN]
30
+ * [http://scplugin.tigris.org/ For OS X use SCPlugin]
31
+ * [http://theappleblog.com/2009/02/23/12-subversion-apps-for-os-x/ There's loads more if you don't like these]
32
+
33
+ = About Trac =
34
+
35
+ Trac is a '''minimalistic''' approach to '''web-based''' management of
36
+ '''software projects'''. Its goal is to simplify effective tracking and handling of software issues, enhancements and overall progress.
37
+
38
+ All aspects of Trac have been designed with the single goal to
39
+ '''help developers write great software''' while '''staying out of the way'''
40
+ and imposing as little as possible on a team's established process and
41
+ culture.
42
+
43
+ As all Wiki pages, this page is editable, this means that you can
44
+ modify the contents of this page simply by using your
45
+ web-browser. Simply click on the "Edit this page" link at the bottom
46
+ of the page. WikiFormatting will give you a detailed description of
47
+ available Wiki formatting commands.
48
+
49
+ TracGuide is a good place to start.
50
+
51
+ Enjoy! [[BR]]
52
+ ''The Saint Team''
53
+
54
+ == Starting Points ==
55
+
56
+ * TracGuide -- Built-in Documentation
57
+ * [http://trac.edgewall.org/wiki/TracFaq Trac FAQ] -- Frequently Asked Questions
58
+ * TracSupport -- Trac Support
59
+
60
+ For a complete list of local wiki pages, see TitleIndex.
@@ -1,14 +1,35 @@
1
1
  require 'subtrac/client'
2
2
  module Subtrac
3
3
  class Project
4
- attr_reader :display_name, :path, :client, :type, :template
5
- attr_accessor :svn_dir, :trac_dir
6
- def initialize(project_name,client_name,project_type)
4
+ attr_reader :display_name, :path, :client, :template
5
+ attr_accessor :svn_dir, :trac_dir#, :temp_dir
6
+ def initialize(project_name,client_name,template)
7
7
  @display_name = project_name.gsub(/^[a-z]|\s+[a-z]/) { |a| a.upcase }
8
8
  @path = project_name.downcase
9
9
  @client = Client.new(client_name)
10
- @type = project_type
11
- @template = File.join(File.dirname(__FILE__), "project", project_type)
10
+ @template = File.join(File.dirname(__FILE__), "project", template)
11
+ #@template = template
12
+ unless File.exists?(@template)
13
+ # attempt download of remote template
14
+ template_location = "file://#{Config.svn_dir}/templates/#{template}/trunk"
15
+ @template = File.join(Config.temp_dir,template)
16
+ `svn export #{template_location} #{@template} --quiet --username #{Config.data[:admin_user]} --password #{Config.data[:admin_pass]}`
17
+ # replace the tokens in the project
18
+ glob_path, exp_search, exp_replace = "#{@template}/**","", @display_name
19
+ puts "Lets see what the filter has returned: #{Dir.glob(glob_path)}"
20
+ Dir.glob(glob_path).each do |file|
21
+ unless File.directory?(file) # only mess with files
22
+ buffer = File.new(file,'r').read.gsub(/\$\{project.display_name\}/,exp_replace)
23
+ puts buffer
24
+ File.open(file,'w') {|fw| fw.write(buffer)}
25
+ end
26
+ end
27
+ # TODO: We'll need to run through and do some renaming if necessary
28
+ end
29
+ end
30
+ def clear_temp
31
+ # delete the temporary directory
32
+ #FileUtils.rm_r(@temp_dir, :force => true)
12
33
  end
13
34
  end
14
35
  end
data/lib/subtrac/svn.rb CHANGED
@@ -26,25 +26,16 @@ module Subtrac
26
26
 
27
27
  # TODO: Need to handle this exception...
28
28
  if (File.directory? project.svn_dir) then
29
- raise StandardError, "A project called #{project} already exists in the #{client} repository. Please delete it or choose an alternate project name and run this script again."
29
+ raise StandardError, "A project called #{project.display_name} already exists in the #{client.display_name} repository. Please delete it or choose an alternate project name and run this script again."
30
30
  end
31
31
 
32
32
  # create a new subversion repository
33
33
  say("Creating a new subversion repository...")
34
34
  `svnadmin create #{project.svn_dir}`
35
35
 
36
- # copy template svn project to a temp folder, then svn import it into the repo
37
- say("Create temporary project directory and copy template files...")
38
- svn_template_dir = File.join(project.template,"svn")
39
- project_temp_dir = File.join(Config.temp_dir,project.path)
40
- FileUtils.cp_r(svn_template_dir,project_temp_dir)
41
-
42
36
  # import into svn
43
37
  say("Importing temporary project into the new subversion repository...")
44
- `svn import #{project_temp_dir} file:///#{project.svn_dir} --message "initial import"`
45
-
46
- # delete the temporary directory
47
- FileUtils.rm_r(project_temp_dir, :force => true)
38
+ `svn import #{project.template}/svn file:///#{project.svn_dir} --message "initial import"`
48
39
 
49
40
  # this should fix the 'can't open activity db error'
50
41
  `sudo chmod 770 #{project.svn_dir}`
data/lib/subtrac/trac.rb CHANGED
@@ -48,10 +48,9 @@ module Subtrac
48
48
  `sudo trac-admin #{project.trac_dir} permission add #{key} #{value}`
49
49
  end
50
50
 
51
- say("Adding default trac wiki pages...")
51
+ say("Adding default trac wiki pages...#{project.template}")
52
52
  # loop through the directory and import all pages
53
53
  Dir.foreach("#{project.template}/trac/wiki/.") do |file|
54
- # do something with the file here
55
54
  unless ['.', '..','.svn'].include? file
56
55
  temp_file = File.join(Config.temp_dir,file)
57
56
  template = Template.new(File.join(project.template,"trac/wiki",file))
data/lib/subtrac.rb CHANGED
@@ -45,142 +45,153 @@ module Subtrac
45
45
  SUBTRAC_ROOT = "#{File.dirname(__FILE__)}/" unless defined?(SUBTRAC_ROOT)
46
46
  SUBTRAC_ENV = (ENV['SUBTRAC_ENV'] || 'development').dup unless defined?(SUBTRAC_ENV)
47
47
 
48
- # Loads the configuration YML file
49
- def self.load_config
50
- Config.load()
51
- end
48
+ class << self
49
+
50
+ # Loads the configuration YML file
51
+ def load_config
52
+ Config.load() if !Config.loaded?
53
+ end
52
54
 
53
- # Install
54
- def self.install(args,options)
55
- puts "\n==== Installing development server files ===="
55
+ # Install
56
+ def install(args,options)
57
+
58
+ load_config()
59
+
60
+ puts "\n==== Installing development server files ===="
56
61
 
57
- if options.defaults then
58
- overwrite = options.clean
59
- confirm_default_client = true
60
- else
61
- # check where we are installing
62
- Config.confirm_or_update(:install_dir,"install_dir")
62
+ if options.defaults then
63
+ overwrite = options.clean
64
+ confirm_default_client = true
65
+ else
66
+ # check where we are installing
67
+ Config.confirm_or_update(:install_dir,"install_dir")
63
68
 
64
- unless !File.directory?(install_dir)
65
- # Ask if the user agrees (yes or no)
66
- confirm_clean = agree("Err, it seems there's some stuff in there. You sure you want me to overwrite? [Y/n]") if options.clean
67
- overwrite = agree("Doubly sure? I can't undo this....[Y/n]") if confirm_clean
68
- end
69
+ unless !File.directory?(install_dir)
70
+ # Ask if the user agrees (yes or no)
71
+ confirm_clean = agree("Err, it seems there's some stuff in there. You sure you want me to overwrite? [Y/n]") if options.clean
72
+ overwrite = agree("Doubly sure? I can't undo this....[Y/n]") if confirm_clean
73
+ end
69
74
 
70
- # confirm server
71
- Config.confirm_or_update(:server_name,"server_name")
75
+ # confirm server
76
+ Config.confirm_or_update(:server_name,"server_name")
72
77
 
73
- # ask for hostname
74
- Config.confirm_or_update(:server_hostname,"server_hostname")
78
+ # ask for hostname
79
+ Config.confirm_or_update(:server_hostname,"server_hostname")
75
80
 
76
- # default client/project name
77
- Config.confirm_or_update(:default_client,"default_client")
78
- Config.confirm_or_update(:default_project,"default_project")
81
+ # default client/project name
82
+ Config.confirm_or_update(:default_client,"default_client")
83
+ Config.confirm_or_update(:default_project,"default_project")
79
84
 
80
- end
85
+ end
81
86
 
82
- say("Ok we're about to install now, these are the options you have chosen:
83
- installation directory: #{Config.install_dir}
84
- overwrite: #{overwrite}
85
- server name: #{Config.server_name}
86
- server hostname: #{Config.server_hostname}
87
- default client: #{Config.default_client}
88
- default project: #{Config.default_project}")
89
-
90
- confirm = agree("Is this ok? [y/n]")
87
+ say("Ok we're about to install now, these are the options you have chosen:
88
+ installation directory: #{Config.install_dir}
89
+ overwrite: #{overwrite}
90
+ server name: #{Config.server_name}
91
+ server hostname: #{Config.server_hostname}
92
+ default client: #{Config.default_client}
93
+ default project: #{Config.default_project}")
94
+
95
+ confirm = agree("Is this ok? [y/n]")
91
96
 
92
- exit 0 if !confirm
97
+ exit 0 if !confirm
93
98
 
94
- create_environment_directories(overwrite)
99
+ create_environment_directories(overwrite)
95
100
 
96
- #create a new virtual host
97
- apache = Apache.new
98
- apache.create_virtual_host()
101
+ #create a new virtual host
102
+ apache = Apache.new
103
+ apache.create_virtual_host()
99
104
 
100
- # create the trac site
101
- trac = Trac.new
102
- trac.install_common_files()
105
+ # create the trac site
106
+ trac = Trac.new
107
+ trac.install_common_files()
103
108
 
104
- install_common_files()
105
- configure_admin_user()
109
+ install_common_files()
110
+ configure_admin_user()
106
111
 
107
- # create default project
108
- create_project(Config.default_project,Config.default_client)
112
+ # create default project
113
+ create_project(Config.default_project,Config.default_client)
109
114
 
110
- # store any user preferences for later use
111
- Config.save()
115
+ # store any user preferences for later use
116
+ Config.save()
112
117
 
113
- end
118
+ end
114
119
 
115
- def self.create_project(project,client)
116
-
117
- # create default project
118
- project = Project.new(project,client,Config.default_project_type)
120
+ def create_project(project,client,template="blank")
121
+
122
+ load_config()
123
+
124
+ # create default project
125
+ project = Project.new(project,client,template)
119
126
 
120
- # get these out for binding...we'll tidy up later
121
- #client = project.client
122
- Config.project = project
123
- Config.client = project.client
124
-
125
- # create the svn repo
126
- svn = Svn.new
127
- svn.create_project(project)
127
+ # get these out for binding...we'll tidy up later
128
+ #client = project.client
129
+ Config.project = project
130
+ Config.client = project.client
131
+
132
+ # create the svn repo
133
+ svn = Svn.new
134
+ svn.create_project(project)
128
135
 
129
- # create the trac site
130
- trac = Trac.new
131
- trac.create_project(project)
136
+ # create the trac site
137
+ trac = Trac.new
138
+ trac.create_project(project)
132
139
 
133
- # create the apache configuration
134
- apache = Apache.new
135
- apache.create_project(project)
140
+ # create the apache configuration
141
+ apache = Apache.new
142
+ apache.create_project(project)
143
+
144
+ project.clear_temp()
136
145
 
137
- # fix privileges
138
- give_apache_privileges()
146
+ # fix privileges
147
+ give_apache_privileges()
139
148
 
140
- end
149
+ end
141
150
 
142
- private
151
+ private
143
152
 
144
- def self.give_apache_privileges
145
- # make sure apache can operate on these files
146
- `sudo chown -R www-data:www-data #{Config.install_dir}`
147
- end
153
+ def give_apache_privileges
154
+ # make sure apache can operate on these files
155
+ `sudo chown -R www-data:www-data #{Config.install_dir}`
156
+ end
148
157
 
149
- def self.install_common_files
150
- puts "\n==== Installing common files ===="
151
- # TODO: implement a mask for .svn folders
152
- # TODO: refactor /common to the app config
153
- FileUtils.cp_r(Dir.glob(File.join(Config.subtrac_path, "common/.")),Config.docs_dir)
154
- end
158
+ def install_common_files
159
+ puts "\n==== Installing common files ===="
160
+ # TODO: implement a mask for .svn folders
161
+ # TODO: refactor /common to the app config
162
+ FileUtils.cp_r(Dir.glob(File.join(Config.subtrac_path, "common/.")),Config.docs_dir)
163
+ end
155
164
 
156
- def self.configure_admin_user
157
- puts "\n==== Configure admin user ===="
158
- # create admin user
159
- admin_user = ask("New admin user: ") { |q| q.echo = true }
160
- admin_pass = ask("New password: ") { |q| q.echo = "*" }
161
- admin_pass_confirm = ask("Re-type new password: ") { |q| q.echo = "*" }
162
- if (admin_pass == admin_pass_confirm) then
163
- passwd_file = File.join(Config.install_dir, ".passwd")
164
- `htpasswd -c -b #{passwd_file} #{admin_user} #{admin_pass}`
165
- Config.data[:admin_user] = admin_user
166
- Config.data[:admin_pass] = admin_pass
167
- # ensure this guy is added to trac admin group
168
- Config.data[:trac][:permissions][admin_user] = "admins"
169
- else
170
- # call the password chooser again
171
- configure_admin_user()
165
+ def configure_admin_user
166
+ puts "\n==== Configure admin user ===="
167
+ # create admin user
168
+ admin_user = ask("New admin user: ") { |q| q.echo = true }
169
+ admin_pass = ask("New password: ") { |q| q.echo = "*" }
170
+ admin_pass_confirm = ask("Re-type new password: ") { |q| q.echo = "*" }
171
+ if (admin_pass == admin_pass_confirm) then
172
+ passwd_file = File.join(Config.install_dir, ".passwd")
173
+ `htpasswd -c -b #{passwd_file} #{admin_user} #{admin_pass}`
174
+ Config.data[:admin_user] = admin_user
175
+ Config.data[:admin_pass] = admin_pass
176
+ # ensure this guy is added to trac admin group
177
+ Config.data[:trac][:permissions][admin_user] = "admins"
178
+ else
179
+ # call the password chooser again
180
+ configure_admin_user()
181
+ end
172
182
  end
173
- end
174
183
 
175
- def self.create_environment_directories(overwrite=false)
176
- puts "\n==== Creating new environment directories ===="
177
- FileUtils.rm_rf Config.install_dir if overwrite
178
- File.create_if_missing Config.install_dir
179
- # create the environment directories
180
- Config.data[:dirs].each do |key, value|
181
- dir = File.join(Config.install_dir,value)
182
- File.create_if_missing dir
184
+ def create_environment_directories(overwrite=false)
185
+ puts "\n==== Creating new environment directories ===="
186
+ FileUtils.rm_rf Config.install_dir if overwrite
187
+ File.create_if_missing Config.install_dir
188
+ # create the environment directories
189
+ Config.data[:dirs].each do |key, value|
190
+ dir = File.join(Config.install_dir,value)
191
+ File.create_if_missing dir
192
+ end
183
193
  end
194
+
184
195
  end
185
196
 
186
197
  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.46
4
+ version: 0.1.47
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-03 00:00:00 -07:00
12
+ date: 2009-05-04 00:00:00 -07:00
13
13
  default_executable: subtrac
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -44,6 +44,7 @@ files:
44
44
  - lib/subtrac/client.rb
45
45
  - lib/subtrac/commands.rb
46
46
  - lib/subtrac/commands/create.rb
47
+ - lib/subtrac/commands/create_template.rb
47
48
  - lib/subtrac/commands/install.rb
48
49
  - lib/subtrac/common/favicon.ico
49
50
  - lib/subtrac/common/images/trac/banner_bg.jpg
@@ -60,8 +61,11 @@ files:
60
61
  - lib/subtrac/project/blank/svn/tags/README
61
62
  - lib/subtrac/project/blank/svn/trunk/README
62
63
  - lib/subtrac/project/blank/trac/wiki/WikiStart
63
- - lib/subtrac/project/new/svn/trunk/trac/wiki/WikiStart
64
- - lib/subtrac/project/new/trac/wiki/WikiStart
64
+ - lib/subtrac/project/template/svn/trunk/svn/branches/README
65
+ - lib/subtrac/project/template/svn/trunk/svn/tags/README
66
+ - lib/subtrac/project/template/svn/trunk/svn/trunk/README
67
+ - lib/subtrac/project/template/svn/trunk/trac/wiki/WikiStart
68
+ - lib/subtrac/project/template/trac/wiki/WikiStart
65
69
  - lib/subtrac/svn.rb
66
70
  - lib/subtrac/template.rb
67
71
  - lib/subtrac/trac.rb
@@ -1,31 +0,0 @@
1
- [[PageOutline]]
2
- = Welcome to the <%= server_name %> for <%= project.display_name %> =
3
-
4
- This is the home of development for <%= client %>. This page is editable by design. That means YOU. If something is missing, fix it. This is what you make of it so get involved.
5
-
6
- == Starting Points ==
7
-
8
- * [<%= svn_url %>/<%= client.path %> Browse all <%= client.display_name %> SVN Repositories]
9
- * [<%= svn_url %>/<%= client.path %>/<%= project.path %> Browse the <%= project.display_name %> repository]
10
-
11
- === How to check this project out ===
12
-
13
- Make sure you have subversion client installed, then you can check the project out using:
14
-
15
- {{{
16
- svn checkout <%= svn_url %>/<%= client.path %>/<%= project.path %>/trunk <%= project.path %>
17
- }}}
18
-
19
- === Using SVN ===
20
-
21
- * [http://tortoisesvn.tigris.org/ For Windows use Tortoise SVN]
22
- * [http://scplugin.tigris.org/ For OS X use SCPlugin]
23
- * [http://theappleblog.com/2009/02/23/12-subversion-apps-for-os-x/ There's loads more if you don't like these]
24
-
25
- == Starting Points ==
26
-
27
- * TracGuide -- Built-in Documentation
28
- * [http://trac.edgewall.org/wiki/TracFaq Trac FAQ] -- Frequently Asked Questions
29
- * TracSupport -- Trac Support
30
-
31
- For a complete list of local wiki pages, see TitleIndex.