rorsvnprep 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/rorsvnprep +1 -132
- data/lib/rorsvnprep.rb +113 -6
- metadata +2 -2
data/bin/rorsvnprep
CHANGED
@@ -1,80 +1,4 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
#
|
3
|
-
# = Ruby on Rails Subversion Prep Tool
|
4
|
-
#
|
5
|
-
# This script creates a new Rails application and prepares it for import into
|
6
|
-
# subversion. It takes a number of command line arguments that specify things
|
7
|
-
# like application name, repository location and other details to make the
|
8
|
-
# whole process as streamlined as possible. The more you give the script the
|
9
|
-
# more it will handle for you automatically.
|
10
|
-
#
|
11
|
-
# Author:: James W. Thompson, II
|
12
|
-
# Copyright:: Copyright (c) 2007. James W. Thompson, II
|
13
|
-
# License:: Licensed under an MIT style license
|
14
|
-
#
|
15
|
-
# == Command-Line Syntax
|
16
|
-
#
|
17
|
-
# <tt><b>ruby rorsvnprep.rb</b> <em>example svn://server/path/to/repos</em></tt>
|
18
|
-
#
|
19
|
-
# The command creates a new rails project called <em>example</em>, performs a
|
20
|
-
# variety of actions in preparation for an initial subversion import and then
|
21
|
-
# imports the project to the repository provided. The script then checks out
|
22
|
-
# the project and updates various svn:ignore properties before recommitting the
|
23
|
-
# project and exiting.
|
24
|
-
#
|
25
|
-
# The script assumes you want you have given it the full subversion repository
|
26
|
-
# URI, complete with any applicable path details for within the repository. The
|
27
|
-
# script also will just break if you don't give it any subversion details, so
|
28
|
-
# don't use the script unless you have something to give it. Also, the
|
29
|
-
# --password switch is broken, so don't use it. And finally, remember this is
|
30
|
-
# still a very 'beta' quality product so don't depend on it for anythign really
|
31
|
-
# important.
|
32
|
-
#
|
33
|
-
# == Effects
|
34
|
-
#
|
35
|
-
# * Renames <em>config/database.yml</em> to <em>config/database.yml.sample</em>
|
36
|
-
# * Deletes extraneous files and directories
|
37
|
-
# * <tt><em>doc/README_FOR_APP</em></tt>
|
38
|
-
# * <tt><em>README</em></tt>
|
39
|
-
# * <tt><em>log/*</em></tt>
|
40
|
-
# * <tt><em>tmp/*</em></tt>
|
41
|
-
# * Performs an initial import
|
42
|
-
# * Performs an initial checkout
|
43
|
-
# * Updates svn:ignore properties for project and recommits project
|
44
|
-
# * <tt><em>log/*.log</em></tt>
|
45
|
-
# * <tt><em>log/*.pid</em></tt>
|
46
|
-
# * <tt><em>tmp/*</em></tt>
|
47
|
-
# * <tt><em>db/*.db</em></tt>
|
48
|
-
# * <tt><em>db/*.sqlite</em></tt>
|
49
|
-
# * <tt><em>db/*.sqlite3</em></tt>
|
50
|
-
# * <tt><em>db/schema.rb</em></tt>
|
51
|
-
# * <tt><em>db/schema.sql</em></tt>
|
52
|
-
#
|
53
|
-
# == TODO
|
54
|
-
#
|
55
|
-
# * Rewrite to work with Ruby's subversion bindings if available
|
56
|
-
# * Make explicitly object oriented
|
57
|
-
# * Add some helpful Subversion rake tasks
|
58
|
-
#
|
59
|
-
# == License
|
60
|
-
#
|
61
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
62
|
-
# of this software and associated documentation files (the "Software"), to deal
|
63
|
-
# in the Software without restriction, including without limitation the rights
|
64
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
65
|
-
# copies of the Software, and to permit persons to whom the Software is
|
66
|
-
# furnished to do so, subject to the following conditions:
|
67
|
-
#
|
68
|
-
# The above copyright notice and this permission notice shall be included in
|
69
|
-
# all copies or substantial portions of the Software.
|
70
|
-
#
|
71
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
72
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
73
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
74
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
75
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
76
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
77
|
-
# SOFTWARE.
|
78
2
|
require 'optparse'
|
79
3
|
require 'rorsvnprep'
|
80
4
|
|
@@ -143,59 +67,4 @@ logfile = File::new( "rorsvnprep.log", "a" ) if arguments[:log]
|
|
143
67
|
# Create an instance of our prep class with all our options
|
144
68
|
rsp = RailsSVNPrep.new( project, svnuri, password, logfile, verbose )
|
145
69
|
|
146
|
-
|
147
|
-
#
|
148
|
-
#rsp.run
|
149
|
-
|
150
|
-
# Create a project
|
151
|
-
rsp.create_project
|
152
|
-
|
153
|
-
# OLD: Create our new project
|
154
|
-
#puts "Creating Rails project: #{project}" if arguments[:verbose]
|
155
|
-
#
|
156
|
-
#if arguments[:verbose]
|
157
|
-
# system "rails #{project}"
|
158
|
-
#else
|
159
|
-
# system "rails #{project} >> /dev/null"
|
160
|
-
#end
|
161
|
-
#
|
162
|
-
#Dir::chdir project
|
163
|
-
|
164
|
-
# Trim out all the stuff we don't want in the initial subversion import and
|
165
|
-
# move some other stuff around.
|
166
|
-
puts "Triming initial project..." if arguments[:verbose]
|
167
|
-
File::rename "config/database.yml", "config/database.yml.sample"
|
168
|
-
File::delete "doc/README_FOR_APP"
|
169
|
-
File::delete "README"
|
170
|
-
system "rm -rf log/* > /dev/null"
|
171
|
-
system "rm -rf tmp/* > /dev/null"
|
172
|
-
|
173
|
-
# Perform our initial subversion import
|
174
|
-
puts "Importing project to subvserion..." if arguments[:verbose]
|
175
|
-
system "svn import #{svnuri} -m \"Initial import\" > /dev/null"
|
176
|
-
Dir::chdir ".."
|
177
|
-
system "rm -rf #{project} > /dev/null"
|
178
|
-
|
179
|
-
# Perform a subversion checkout of our project
|
180
|
-
puts "Checking out project from subversion..." if arguments[:verbose]
|
181
|
-
system "svn co #{svnuri} #{project} > /dev/null"
|
182
|
-
Dir::chdir project
|
183
|
-
|
184
|
-
# Setup svn:ignore properties
|
185
|
-
puts "Configuring svn:ignore properties..." if arguments[:verbose]
|
186
|
-
system "svn propset svn:ignore \"*.log\n*.pid\" log/ > /dev/null"
|
187
|
-
system "svn update log/ > /dev/null"
|
188
|
-
system "svn propset svn:ignore \"*\" tmp/ > /dev/null"
|
189
|
-
system "svn update tmp/ > /dev/null"
|
190
|
-
system "svn propset svn:ignore \"*.db\n*.sqlite\n*.sqlite3\nschema.rb\nschema.sql\" db/ > /dev/null"
|
191
|
-
system "svn update db/ > /dev/null"
|
192
|
-
system "svn propset svn:ignore \"database.yml\" config/ > /dev/null"
|
193
|
-
system "svn update config/ > /dev/null"
|
194
|
-
|
195
|
-
# Committing updates
|
196
|
-
puts "Committing updates..." if arguments[:verbose]
|
197
|
-
system "svn commit -m \"Updated svn:ignore properties\" > /dev/null"
|
198
|
-
|
199
|
-
# Return to where we started
|
200
|
-
Dir::chdir ".."
|
201
|
-
puts "Done with project: #{project}"
|
70
|
+
rsp.run
|
data/lib/rorsvnprep.rb
CHANGED
@@ -1,14 +1,68 @@
|
|
1
|
-
#
|
2
|
-
# Prep Tool.
|
1
|
+
# = Ruby on Rails Subversion Prep Tool
|
3
2
|
#
|
4
|
-
#
|
5
|
-
#
|
3
|
+
# This file contains the main class that powers the Ruby on Rails Subversion
|
4
|
+
# Prep Tool's script found in bin/rorsvnprep.
|
5
|
+
#
|
6
|
+
# Author:: James W. Thompson, II
|
7
|
+
# Copyright:: Copyright (c) 2007. James W. Thompson, II
|
8
|
+
# License:: Licensed under an MIT style license
|
9
|
+
#
|
10
|
+
# == Command-Line Syntax
|
11
|
+
#
|
12
|
+
# <tt><b>rorsvnprep</b> <em>example --svn=svn://server/path/to/repos</em></tt>
|
13
|
+
#
|
14
|
+
# The command creates a new rails project called <em>example</em>, performs a
|
15
|
+
# variety of actions in preparation for an initial subversion import and then
|
16
|
+
# imports the project to the repository provided. The script then checks out
|
17
|
+
# the project and updates various svn:ignore properties before recommitting the
|
18
|
+
# project and exiting.
|
19
|
+
#
|
20
|
+
# == Effects
|
21
|
+
#
|
22
|
+
# * Renames <em>config/database.yml</em> to <em>config/database.yml.sample</em>
|
23
|
+
# * Deletes extraneous files and directories
|
24
|
+
# * <tt><em>doc/README_FOR_APP</em></tt>
|
25
|
+
# * <tt><em>README</em></tt>
|
26
|
+
# * <tt><em>log/*</em></tt>
|
27
|
+
# * <tt><em>tmp/*</em></tt>
|
28
|
+
# * Performs an initial import
|
29
|
+
# * Performs an initial checkout
|
30
|
+
# * Updates svn:ignore properties for project and recommits project
|
31
|
+
# * <tt><em>log/*.log</em></tt>
|
32
|
+
# * <tt><em>log/*.pid</em></tt>
|
33
|
+
# * <tt><em>tmp/*</em></tt>
|
34
|
+
# * <tt><em>db/*.db</em></tt>
|
35
|
+
# * <tt><em>db/*.sqlite</em></tt>
|
36
|
+
# * <tt><em>db/*.sqlite3</em></tt>
|
37
|
+
# * <tt><em>db/schema.rb</em></tt>
|
38
|
+
# * <tt><em>db/schema.sql</em></tt>
|
39
|
+
#
|
40
|
+
# == License
|
41
|
+
#
|
42
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
43
|
+
# of this software and associated documentation files (the "Software"), to deal
|
44
|
+
# in the Software without restriction, including without limitation the rights
|
45
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
46
|
+
# copies of the Software, and to permit persons to whom the Software is
|
47
|
+
# furnished to do so, subject to the following conditions:
|
48
|
+
#
|
49
|
+
# The above copyright notice and this permission notice shall be included in
|
50
|
+
# all copies or substantial portions of the Software.
|
51
|
+
#
|
52
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
53
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
54
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
55
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
56
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
57
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
58
|
+
# SOFTWARE.
|
59
|
+
|
6
60
|
|
7
61
|
# This class provides all the heavy lifting methods used by the command-line
|
8
62
|
# utility. This class could also be implemented as part of another package to
|
9
63
|
# provide further automated utilities.
|
10
64
|
class RailsSVNPrep
|
11
|
-
@@version = [ 0, 1,
|
65
|
+
@@version = [ 0, 1, 2 ]
|
12
66
|
|
13
67
|
@project = nil
|
14
68
|
@svn = nil
|
@@ -27,6 +81,8 @@ class RailsSVNPrep
|
|
27
81
|
@verbose = verbose
|
28
82
|
end
|
29
83
|
|
84
|
+
# A simple method that calls all the other individual methods as necessary to
|
85
|
+
# create the rails project, prep it and produce a good working copy.
|
30
86
|
def run
|
31
87
|
puts "Rails SVN Prep: Starting." if @verbose
|
32
88
|
@logfile.puts "Rails SVN Prep: Starting." if @logfile
|
@@ -59,7 +115,7 @@ class RailsSVNPrep
|
|
59
115
|
# raise StandardError
|
60
116
|
#end
|
61
117
|
|
62
|
-
if system "rails #{@project}
|
118
|
+
if system "rails #{@project} > /dev/null"
|
63
119
|
puts "Rails Project Folder Successfully Created." if @verbose
|
64
120
|
@logfile.puts "Rails Project Folder Successfully Created." if @logfile
|
65
121
|
Dir::chdir @project
|
@@ -70,22 +126,73 @@ class RailsSVNPrep
|
|
70
126
|
end
|
71
127
|
end
|
72
128
|
|
129
|
+
# This method prunes the initial project structure by renaming
|
130
|
+
# config/database.yml, getting rid of the default README and README_FOR_APP
|
131
|
+
# files and clearing our the log/ and tmp/ folders.
|
73
132
|
def trim_project
|
133
|
+
puts "Triming initial project." if @verbose
|
134
|
+
@logfile.puts "Triming initial project." if @logfile
|
135
|
+
|
136
|
+
File::rename "config/database.yml", "config/database.yml.sample"
|
137
|
+
File::delete "doc/README_FOR_APP"
|
138
|
+
File::delete "README"
|
139
|
+
system "rm -rf log/* > /dev/null"
|
140
|
+
system "rm -rf tmp/* > /dev/null"
|
74
141
|
end
|
75
142
|
|
143
|
+
# This method produces .cvsignore files for those times when you don't want an
|
144
|
+
# initial subversion import done.
|
145
|
+
#
|
146
|
+
# TODO: Actually implement this.
|
76
147
|
def generate_cvsignore
|
77
148
|
end
|
78
149
|
|
150
|
+
# This method performs the initial subversion import and then deletes the
|
151
|
+
# project folder in preparation for the initial checkout.
|
79
152
|
def subversion_import
|
153
|
+
puts "Importing project to subvserion." if @verbose
|
154
|
+
@logfile.puts "Importing project to subvserion." if @logfile
|
155
|
+
|
156
|
+
system "svn import #{@svn} -m \"Initial import\" > /dev/null"
|
157
|
+
Dir::chdir ".."
|
158
|
+
system "rm -rf #{@project} > /dev/null"
|
80
159
|
end
|
81
160
|
|
161
|
+
# This method produces the initial working copy via a subversion checkout.
|
82
162
|
def subversion_checkout
|
163
|
+
puts "Checking out project from subversion." if @verbose
|
164
|
+
@logfile.puts "Checking out project from subversion." if @logfile
|
165
|
+
|
166
|
+
system "svn co #{@svn} #{@project} > /dev/null"
|
167
|
+
Dir::chdir @project
|
83
168
|
end
|
84
169
|
|
170
|
+
# This method sets the svn:ignore property across a number of folders to make
|
171
|
+
# sure files that don't belong in version control don't end up in it.
|
85
172
|
def subversion_propset
|
173
|
+
puts "Configuring svn:ignore properties." if @verbose
|
174
|
+
@logfile.puts "Configuring svn:ignore properties." if @logfile
|
175
|
+
|
176
|
+
system "svn propset svn:ignore \"*.log\n*.pid\" log/ > /dev/null"
|
177
|
+
system "svn update log/ > /dev/null"
|
178
|
+
system "svn propset svn:ignore \"*\" tmp/ > /dev/null"
|
179
|
+
system "svn update tmp/ > /dev/null"
|
180
|
+
system "svn propset svn:ignore \"*.db\n*.sqlite\n*.sqlite3\nschema.rb\nschema.sql\" db/ > /dev/null"
|
181
|
+
system "svn update db/ > /dev/null"
|
182
|
+
system "svn propset svn:ignore \"database.yml\" config/ > /dev/null"
|
183
|
+
system "svn update config/ > /dev/null"
|
86
184
|
end
|
87
185
|
|
186
|
+
# This method finishes up by committing to subversion if needed and
|
187
|
+
# performing other house-keeping measures.
|
88
188
|
def finalize
|
189
|
+
if @svn
|
190
|
+
puts "Committing updates." if @verbose
|
191
|
+
@logfile.puts "Committing updates." if @logfile
|
192
|
+
|
193
|
+
system "svn commit -m \"Updated svn:ignore properties\" > /dev/null"
|
194
|
+
Dir::chdir ".."
|
195
|
+
end
|
89
196
|
end
|
90
197
|
|
91
198
|
# A convenience method to return our version number
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rorsvnprep
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2007-02-
|
6
|
+
version: 0.1.2
|
7
|
+
date: 2007-02-22 00:00:00 -05:00
|
8
8
|
summary: Provides additional automation to make managing Rails project with subversion easier.
|
9
9
|
require_paths:
|
10
10
|
- lib
|