Class: Rocket_starter_core

Inherits:
Object
  • Object
show all
Defined in:
lib/rocketstarter/rocket_starter_core.rb

Instance Method Summary collapse

Constructor Details

#initialize(frontend) ⇒ Rocket_starter_core

Returns a new instance of Rocket_starter_core.



5
6
7
8
# File 'lib/rocketstarter/rocket_starter_core.rb', line 5

def initialize(frontend)
  @options = frontend
  @logfile = File::new( @options[:log_file], "a" ) if @options[:logging]
end

Instance Method Details

#create_basic_dirs_and_projectObject



161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# File 'lib/rocketstarter/rocket_starter_core.rb', line 161

def create_basic_dirs_and_project
  exec_shell_command "pwd"
  case @options[:scmtype]
  when "svn"
    exec_shell_command "svn mkdir rails docs"
    managed_chdir("#{@scm_root}/rails")
    rails_option = " -c"
  when "git"
    exec_shell_command "mkdir rails docs"
    managed_chdir("#{@scm_root}/rails")
    rails_option = ""
  else
    exec_shell_command "mkdir rails docs"
    managed_chdir("#{@scm_root}/rails")
    rails_option = ""
  end
  rails_option << " --database=" + @options[:database] unless "" == @options[:database]
  exec_shell_command "rails #{@options[:project]}" + rails_option
  notice "Rails Project Folder Successfully Created."
end

#create_databasesObject



277
278
279
280
# File 'lib/rocketstarter/rocket_starter_core.rb', line 277

def create_databases
  notice "Create all databases"
  exec_shell_command "rake db:create:all"    
end

#git_commit(message) ⇒ Object



116
117
118
119
120
# File 'lib/rocketstarter/rocket_starter_core.rb', line 116

def git_commit(message)
  notice "Commiting to local-git for " + message
  exec_shell_command "git add ."
  exec_shell_command "git commit -a -m '#{message}'"
end

#git_ignoreObject



122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/rocketstarter/rocket_starter_core.rb', line 122

def git_ignore
  notice "Configuring .gitignore files."
 
  exec_shell_command "echo '*.log' >> log/.gitignore"
  exec_shell_command "echo '*.pid' >> log/.gitignore"
  exec_shell_command "echo '*' >> tmp/.gitignore"
  exec_shell_command "echo '*.db' >> db/.gitignore"
  exec_shell_command "echo '*.sqlite' >> db/.gitignore"
  exec_shell_command "echo '*.sqlite3' >> db/.gitignore"
  exec_shell_command "echo 'schema.rb' >> db/.gitignore"
  exec_shell_command "echo 'schema.sql' >> db/.gitignore"
  exec_shell_command "echo 'database.yml' >> config/.gitignore" if @options[:ignoredatabase]
end

#git_ignore_for_netbeansObject



136
137
138
139
140
# File 'lib/rocketstarter/rocket_starter_core.rb', line 136

def git_ignore_for_netbeans
  notice "Setting .gitignore file for netbeans."
  exec_shell_command "mkdir nbproject"
  exec_shell_command "echo '*' >> nbproject/.gitignore"
end

#git_project_dirs_and_initObject



109
110
111
112
113
114
# File 'lib/rocketstarter/rocket_starter_core.rb', line 109

def git_project_dirs_and_init
  notice "Create project directory and initialize for git"
  exec_shell_command "mkdir #{@options[:project]}"
  managed_chdir("#{@scm_root}")
  exec_shell_command "git init"
end

#overwrite_database_passwordObject



266
267
268
269
270
271
272
273
274
275
# File 'lib/rocketstarter/rocket_starter_core.rb', line 266

def overwrite_database_password
  notice "Over write password about config/database.yml"
  text_insert_to("config/database.yml") do |file, line|
    if /password:/ =~ line
      file.puts line + " " + @options[:dbpassword]
    else
      file.puts line
    end
  end
end

#runObject

for subversion

cd current_dir rocket_starter projname scmuri

mkdir projname cd projname mkdir trunk branches tags svn import . scmuri [–passowrd=scmpass] -m “create basic directories” rmdir trunk branches tags svn checkout scmuri/trunk . [–passowrd=scmpass]

svn mkdir docs rails cd rails rails projname -c [–database=name] svn commit . [–passowrd=scmpass] -m “generate rails app” cd projname

trim app

set svn::ignore

for git

cd current_dir rocket_starter projname scmuri

mkdir projname cd projname git init mkdir docs rails cd rails rails projname -g [–database=name] git add . git commit -m “generate rails app” cd projname

trim app

put gitignore files



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/rocketstarter/rocket_starter_core.rb', line 57

def run
  notice "Rocket_starter: Starting at " + Time.now.strftime("%Y/%m/%d %H:%M:%S")

  get_current_directory
  set_scm_password
  
  if "svn" == @options[:scmtype] and not @options[:scmuri].empty?
    subversion_basic_dirs
    subversion_import
    subversion_checkout
    create_basic_dirs_and_project
    subversion_commit "generate rails app"
    trim_project
    subversion_commit "delete not use files"
    subversion_propset
    subversion_propset_for_netbeans unless @options[:skip_netbeans]
    subversion_commit "set svn:ignore"
    unless @options[:skip_plugins] or @options[:pluginlist_path].empty?
      setup_plugins
      subversion_add_all unless @options[:skip_commit_for_plugins]
      subversion_commit "install rails plugins"
    end
    unless @options[:dbpassword].empty?
      overwrite_database_password if not @options[:dbpassword].empty? and "mysql" == @options["database"]
      subversion_commit "over write password about config/database.yml"
    end
    create_databases if @options[:createdb]
  elsif "git" == @options[:scmtype]
    git_project_dirs_and_init
    create_basic_dirs_and_project
    git_commit "generate rails app"
    trim_project
    git_commit "delete not use files"
    git_ignore
    git_ignore_for_netbeans unless @options[:skip_netbeans]
    git_commit "put .gitignore files"
    unless @options[:skip_plugins] or @options[:pluginlist_path].empty?
      setup_plugins
      git_commit "install rails plugins"
    end
    unless @options[:dbpassword].empty?
      overwrite_database_password if not @options[:dbpassword].empty? and "mysql" == @options["database"]
      git_commit "over write password about config/database.yml"
    end
    create_databases if @options[:createdb]
  else
    Rocket_starter_options::error_with_show_usage "irigal SCM type or scmuri is empty."      
  end
  notice "Rocket_starter: Complete at " + Time.now.strftime("%Y/%m/%d %H:%M:%S")
  @logfile.close if @logfile
end

#setup_pluginsObject



233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
# File 'lib/rocketstarter/rocket_starter_core.rb', line 233

def setup_plugins
  begin
    plugin_option = ""
    plugin_option << " -x " if @options[:external]
    
    File.open(@options[:pluginlist_path]) do |plugin_file|
      plugin_file.each do |line|
        next if /^#.*/ =~ line or line.chomp.empty?
        if @options[:rapt]
          exec_shell_command "rapt install #{plugin_option} #{line}"
        else
          exec_shell_command "script/plugin install #{plugin_option} #{line}"
        end
      end
    end
  rescue
    notice "Can not open #{@options[:pluginlist_path]}"
    Rocket_starter_options::show_usage
  end
end

#subversion_add_allObject



187
188
189
190
191
192
# File 'lib/rocketstarter/rocket_starter_core.rb', line 187

def subversion_add_all
  notice "Add all files and directories to the repository from svn status"
  `svn status`.split("\n").each do |line|
    exec_shell_command "svn add #{line.slice(/\?\s+(.+)/, 1)}"
  end
end

#subversion_basic_dirsObject



142
143
144
145
146
147
148
# File 'lib/rocketstarter/rocket_starter_core.rb', line 142

def subversion_basic_dirs
  notice "Create basic directories."
  exec_shell_command "mkdir #{@options[:project]}"
  managed_chdir("#{@scm_root}")
  exec_shell_command "mkdir trunk branches tags"
  exec_shell_command "pwd"
end

#subversion_checkoutObject



156
157
158
159
# File 'lib/rocketstarter/rocket_starter_core.rb', line 156

def subversion_checkout
  notice "Checking out trunk of the project from subversion."
  exec_shell_command "svn checkout #{@options[:scmuri]}/trunk . #{@scm_password}"
end

#subversion_commit(message) ⇒ Object



182
183
184
185
# File 'lib/rocketstarter/rocket_starter_core.rb', line 182

def subversion_commit(message)
  notice "Commiting to subversion for " + message
  exec_shell_command "svn commit #{@scm_root} #{@scm_password} -m '#{message}'"
end

#subversion_importObject



150
151
152
153
154
# File 'lib/rocketstarter/rocket_starter_core.rb', line 150

def subversion_import
  notice "Importing project to subvserion."
  exec_shell_command "svn import . #{@options[:scmuri]} #{@scm_password} -m \"Initial import\""
  exec_shell_command "rmdir trunk branches tags"
end

#subversion_propsetObject



213
214
215
216
217
218
219
220
221
222
223
# File 'lib/rocketstarter/rocket_starter_core.rb', line 213

def subversion_propset
  notice "Configuring svn:ignore properties."
  exec_shell_command "svn propset svn:ignore \"*.log\n*.pid\" log/"
  exec_shell_command "svn propset svn:ignore \"*\" tmp/"
  exec_shell_command "svn propset svn:ignore \"*.db\n*.sqlite\n*.sqlite3\nschema.rb\nschema.sql\" db/"
  if @options[:ignoredatabase]
    exec_shell_command "cp config/database.yml.sample config/database.yml"
    exec_shell_command "svn propset svn:ignore \"database.yml\" config/"
  end
  exec_shell_command "svn update . #{@scm_password}"
end

#subversion_propset_for_netbeansObject



225
226
227
228
229
230
231
# File 'lib/rocketstarter/rocket_starter_core.rb', line 225

def subversion_propset_for_netbeans
  notice "Setting svn:ignore for netbeans."
  exec_shell_command "mkdir nbproject"
  exec_shell_command "svn propset svn:ignore \"*\" nbproject/"
  exec_shell_command "svn update nbproject/ #{@scm_password}"
  exec_shell_command "rmdir nbproject"
end

#text_insert_to(filename) ⇒ Object



254
255
256
257
258
259
260
261
262
263
264
# File 'lib/rocketstarter/rocket_starter_core.rb', line 254

def text_insert_to(filename)
  current_model_contents = []
  File::open(filename, "r") do |file|
    current_model_contents = file.readlines
  end
  File::open(filename, "w") do |file|
    current_model_contents.each do |line|
      yield(file, line)
    end
  end
end

#trim_projectObject



194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
# File 'lib/rocketstarter/rocket_starter_core.rb', line 194

def trim_project
  notice "Triming initial project."
  exec_shell_command "pwd"
  managed_chdir("#{@scm_root}/rails/#{@options[:project]}")
  exec_shell_command "svn mv config/database.yml config/database.yml.sample" if @options[:ignoredatabase]
  case @options[:scmtype]
  when "svn"
    exec_shell_command "svn rm doc/README_FOR_APP"
    exec_shell_command "svn rm README"
    exec_shell_command "svn rm log/*"
    exec_shell_command "svn rm tmp/*"
  when "git"
    exec_shell_command "rm doc/README_FOR_APP"
    exec_shell_command "rm README"
    exec_shell_command "rm -rf log/*"
    exec_shell_command "rm -rf tmp/*"
  end
end