rorsvnprep 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +2 -22
- data/bin/rorsvnprep +111 -60
- data/lib/rorsvnprep.rb +9 -2
- metadata +3 -3
data/README
CHANGED
@@ -21,30 +21,10 @@ alias.
|
|
21
21
|
Using rorsvnprep
|
22
22
|
================
|
23
23
|
|
24
|
-
|
25
|
-
determine its behavior. At the very minimum you need to supply it with a
|
26
|
-
project name, just like you would the rails command. Under the hood rorsvnprep
|
27
|
-
actually calls the rails command and then performs some basic preparations.
|
28
|
-
|
29
|
-
If all you provide is the project name then rorsvnprep simply generates
|
30
|
-
.cvsignore files for your project as described later and trims a few extraneous
|
31
|
-
directories and files. If, however, you also provide a repository URI via the
|
32
|
-
'--svn [repos]' switch; then rorsvnprep will actually perform an initial import
|
33
|
-
of your project and perform svn propset calls in place of using .cvsignore
|
34
|
-
files. You may supply a password to rorsvnprep to further automate things, if
|
35
|
-
you haven't setup shared-key authentication, via the '--password [pass]'
|
36
|
-
switch.
|
37
|
-
|
38
|
-
Assuming you supply nothing else, rorsvnprep will attempt to import your
|
39
|
-
project to '/<projectname>/trunk' within the supplied svn repository. However,
|
40
|
-
you can change this behavior by supplying an alternate location via the
|
41
|
-
'--rpath [path]' switch. When finished importing and setting up your project
|
42
|
-
rorsvnprep will leave you with a good working copy to begin development with.
|
24
|
+
Give the command the name of your project and the full URI to your repository.
|
43
25
|
|
44
26
|
-------------------
|
45
27
|
Command-Line Syntax
|
46
28
|
-------------------
|
47
29
|
|
48
|
-
rorsvnprep projectname [--svn
|
49
|
-
[--password pass]
|
50
|
-
[--rpath /custom/trunk]
|
30
|
+
rorsvnprep projectname [--svn=svn://example.org/path/to/repos]
|
data/bin/rorsvnprep
CHANGED
@@ -22,9 +22,13 @@
|
|
22
22
|
# the project and updates various svn:ignore properties before recommitting the
|
23
23
|
# project and exiting.
|
24
24
|
#
|
25
|
-
# The script assumes you want
|
26
|
-
#
|
27
|
-
#
|
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.
|
28
32
|
#
|
29
33
|
# == Effects
|
30
34
|
#
|
@@ -50,8 +54,6 @@
|
|
50
54
|
#
|
51
55
|
# * Rewrite to work with Ruby's subversion bindings if available
|
52
56
|
# * Make explicitly object oriented
|
53
|
-
# * Flesh out command-line options a bit and make them smarter
|
54
|
-
# * Package as a Gem so it can be easily installed
|
55
57
|
# * Add some helpful Subversion rake tasks
|
56
58
|
#
|
57
59
|
# == License
|
@@ -73,70 +75,119 @@
|
|
73
75
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
74
76
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
75
77
|
# SOFTWARE.
|
78
|
+
require 'optparse'
|
79
|
+
require 'rorsvnprep'
|
76
80
|
|
77
|
-
|
78
|
-
|
81
|
+
class RORSVNPREP < Hash
|
82
|
+
def initialize
|
83
|
+
super()
|
84
|
+
|
85
|
+
puts ARGV.join(', ')
|
86
|
+
|
87
|
+
self[:svnuri] = ""
|
88
|
+
self[:password] = ""
|
89
|
+
self[:verbose] = false
|
90
|
+
|
91
|
+
opts = OptionParser.new do |opts|
|
92
|
+
opts.banner = "Usage: rorsvnprep project [options]"
|
93
|
+
|
94
|
+
opts.separator ""
|
95
|
+
opts.separator "Useful Options:"
|
96
|
+
opts.separator ""
|
97
|
+
|
98
|
+
opts.on( '--svn=URI', 'use provided URI for subversion operations' ) do |p|
|
99
|
+
self[:svnuri] = p
|
100
|
+
end
|
101
|
+
|
102
|
+
opts.on( '--password=PASSWORD', 'use supplied password for subversion operations' ) do |p|
|
103
|
+
self[:password] = p
|
104
|
+
end
|
105
|
+
|
106
|
+
opts.on( '--verbose', 'provide extra output while running') do
|
107
|
+
self[:verbose] = true
|
108
|
+
end
|
109
|
+
|
110
|
+
opts.separator ""
|
111
|
+
opts.separator "General Options:"
|
112
|
+
opts.separator ""
|
113
|
+
|
114
|
+
opts.on( '-h', '--help', 'display this information' ) do
|
115
|
+
puts opts
|
116
|
+
exit
|
117
|
+
end
|
118
|
+
|
119
|
+
opts.on( '-v', '--version', 'display version information' ) do
|
120
|
+
puts "Ruby on Rails SVN Prep Tool: rorsvnprep v#{RailsSVNPrep::version.join('.')}"
|
121
|
+
exit
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
opts.parse!
|
126
|
+
end
|
79
127
|
end
|
80
128
|
|
81
|
-
|
82
|
-
print "Initializing..."
|
83
|
-
ARGV[0] ? appname = ARGV[0] : raise
|
84
|
-
ARGV[1] ? svnrepo = ARGV[1] : raise
|
85
|
-
print "Done.\n"
|
129
|
+
arguments = RORSVNPREP.new
|
86
130
|
|
87
|
-
|
131
|
+
puts ARGV.join(', ')
|
88
132
|
|
89
|
-
#
|
90
|
-
|
91
|
-
print "Creating project..."
|
92
|
-
system "rails #{appname} > /dev/null"
|
93
|
-
Dir::chdir appname
|
94
|
-
print "Done.\n"
|
133
|
+
# For each project name supplied roll through the preparation cycle
|
134
|
+
project = ARGV.first
|
95
135
|
|
96
|
-
|
97
|
-
|
98
|
-
print "Triming initial project..."
|
99
|
-
File::rename "config/database.yml", "config/database.yml.sample"
|
100
|
-
File::delete "doc/README_FOR_APP"
|
101
|
-
File::delete "README"
|
102
|
-
system "rm -rf log/* > /dev/null"
|
103
|
-
system "rm -rf tmp/* > /dev/null"
|
104
|
-
print "Done.\n"
|
136
|
+
svnuri = arguments[:svnuri]
|
137
|
+
password = arguments[:password]
|
105
138
|
|
106
|
-
#
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
print "Done.\n"
|
139
|
+
# TODO: Switch over to following code and remove everything beyond it
|
140
|
+
#
|
141
|
+
#rsp = RailsSVNPrep.new( $project, $svnuri, $password, $svnpath, $logfile )
|
142
|
+
#
|
143
|
+
#rsp.execute
|
112
144
|
|
113
|
-
#
|
114
|
-
|
115
|
-
system "svn co #{svnrepo}/#{appname}/trunk #{appname} > /dev/null"
|
116
|
-
Dir::chdir appname
|
117
|
-
print "Done.\n"
|
145
|
+
# Create our new project
|
146
|
+
puts "Creating Rails project: #{project}" if arguments[:verbose]
|
118
147
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
system "
|
123
|
-
|
124
|
-
system "svn update tmp/ > /dev/null"
|
125
|
-
system "svn propset svn:ignore \"*.db\n*.sqlite\n*.sqlite3\nschema.rb\nschema.sql\" db/ > /dev/null"
|
126
|
-
system "svn update db/ > /dev/null"
|
127
|
-
system "svn propset svn:ignore \"database.yml\" config/ > /dev/null"
|
128
|
-
system "svn update config/ > /dev/null"
|
129
|
-
print "Done.\n"
|
148
|
+
if arguments[:verbose]
|
149
|
+
system "rails #{project}"
|
150
|
+
else
|
151
|
+
system "rails #{project} >> /dev/null"
|
152
|
+
end
|
130
153
|
|
131
|
-
|
132
|
-
|
133
|
-
#
|
134
|
-
#
|
154
|
+
Dir::chdir project
|
155
|
+
|
156
|
+
# Trim out all the stuff we don't want in the initial subversion import and
|
157
|
+
# move some other stuff around.
|
158
|
+
puts "Triming initial project..." if arguments[:verbose]
|
159
|
+
File::rename "config/database.yml", "config/database.yml.sample"
|
160
|
+
File::delete "doc/README_FOR_APP"
|
161
|
+
File::delete "README"
|
162
|
+
system "rm -rf log/* > /dev/null"
|
163
|
+
system "rm -rf tmp/* > /dev/null"
|
164
|
+
|
165
|
+
# Perform our initial subversion import
|
166
|
+
puts "Importing project to subvserion..." if arguments[:verbose]
|
167
|
+
system "svn import #{svnuri} -m \"Initial import\" > /dev/null"
|
168
|
+
Dir::chdir ".."
|
169
|
+
system "rm -rf #{project} > /dev/null"
|
170
|
+
|
171
|
+
# Perform a subversion checkout of our project
|
172
|
+
puts "Checking out project from subversion..." if arguments[:verbose]
|
173
|
+
system "svn co #{svnuri} #{project} > /dev/null"
|
174
|
+
Dir::chdir project
|
175
|
+
|
176
|
+
# Setup svn:ignore properties
|
177
|
+
puts "Configuring svn:ignore properties..." if arguments[:verbose]
|
178
|
+
system "svn propset svn:ignore \"*.log\n*.pid\" log/ > /dev/null"
|
179
|
+
system "svn update log/ > /dev/null"
|
180
|
+
system "svn propset svn:ignore \"*\" tmp/ > /dev/null"
|
181
|
+
system "svn update tmp/ > /dev/null"
|
182
|
+
system "svn propset svn:ignore \"*.db\n*.sqlite\n*.sqlite3\nschema.rb\nschema.sql\" db/ > /dev/null"
|
183
|
+
system "svn update db/ > /dev/null"
|
184
|
+
system "svn propset svn:ignore \"database.yml\" config/ > /dev/null"
|
185
|
+
system "svn update config/ > /dev/null"
|
135
186
|
|
136
|
-
# Committing updates
|
137
|
-
|
138
|
-
system "svn commit -m \"Updated svn:ignore properties\" > /dev/null"
|
139
|
-
print "Done.\n"
|
187
|
+
# Committing updates
|
188
|
+
puts "Committing updates..." if arguments[:verbose]
|
189
|
+
system "svn commit -m \"Updated svn:ignore properties\" > /dev/null"
|
140
190
|
|
141
|
-
# Return to where we started
|
142
|
-
Dir::chdir ".."
|
191
|
+
# Return to where we started
|
192
|
+
Dir::chdir ".."
|
193
|
+
puts "Done with project: #{project}"
|
data/lib/rorsvnprep.rb
CHANGED
@@ -8,15 +8,17 @@
|
|
8
8
|
# utility. This class could also be implemented as part of another package to
|
9
9
|
# provide further automated utilities.
|
10
10
|
class RailsSVNPrep
|
11
|
+
@@version = [ 0, 1, 0 ]
|
12
|
+
|
11
13
|
@project = nil
|
12
14
|
@svn = nil
|
13
15
|
@password = nil
|
14
|
-
@log =
|
16
|
+
@log = nil
|
15
17
|
|
16
18
|
# The new method expects up to four arguments. Only if the projname argument
|
17
19
|
# is missing will the method raise an error for anything other than failed
|
18
20
|
# validation.
|
19
|
-
def initialize(projname = nil, svnuri = nil, svnpass = nil, svnpath = nil,
|
21
|
+
def initialize(projname = nil, svnuri = nil, svnpass = nil, svnpath = nil, logfile = nil)
|
20
22
|
if projname
|
21
23
|
if RailsSVNPrep::validate_name(projname)
|
22
24
|
@project = proj_name
|
@@ -73,6 +75,11 @@ class RailsSVNPrep
|
|
73
75
|
end
|
74
76
|
end
|
75
77
|
|
78
|
+
# A convenience method to return our version number
|
79
|
+
def RailsSVNPrep.version
|
80
|
+
@@version
|
81
|
+
end
|
82
|
+
|
76
83
|
#
|
77
84
|
# Below are a series of utility methods for validation and other internal
|
78
85
|
# processing requirements.
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.2
|
3
3
|
specification_version: 1
|
4
4
|
name: rorsvnprep
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0
|
7
|
-
date: 2007-02-
|
6
|
+
version: 0.1.0
|
7
|
+
date: 2007-02-19 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
|