Module: Rake::DevEiate::Generate
- Defined in:
- lib/rake/deveiate/generate.rb
Overview
Project-file generation tasks
Constant Summary collapse
- RAKEFILE_TEMPLATE =
Template files
'Rakefile.erb'- README_TEMPLATE =
'README.erb'- HISTORY_TEMPLATE =
'History.erb'- RUBY_VERSION_FILE =
RVM metadata files
Rake::DevEiate::PROJECT_DIR + '.ruby-version'
- GEMSET_FILE =
Rake::DevEiate::PROJECT_DIR + '.ruby-gemset'
- FILE_CREATION_FLAGS =
Flags to use when opening a file for generation
File::WRONLY | File::CREAT | File::EXCL
Instance Method Summary collapse
-
#define_tasks ⇒ Object
Define generation tasks.
-
#do_diff_manifest(task, args) ⇒ Object
Task body for the ‘diff_manifest` task.
-
#do_generate_gemset_file(task, args) ⇒ Object
Generate a file that sets the project’s gemset.
-
#do_generate_history_file(task, args) ⇒ Object
Generate a History file if one doesn’t already exist.
-
#do_generate_manifest_file(task, args) ⇒ Object
Generate a manifest with a default set of files listed.
-
#do_generate_rakefile(task, args) ⇒ Object
Generate a Rakefile if one doesn’t already exist.
-
#do_generate_readme_file(task, args) ⇒ Object
Generate a README file if one doesn’t already exist.
-
#do_generate_ruby_version_file(task, args) ⇒ Object
Generate a file that sets the project’s working Ruby version.
-
#generate_from_template(filename, template_path) ⇒ Object
Generate the given
filenamefrom the template filed attemplate_path.
Instance Method Details
#define_tasks ⇒ Object
Define generation tasks.
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 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/rake/deveiate/generate.rb', line 28 def define_tasks super if defined?( super ) file( self.rakefile.to_s ) file( self.readme_file.to_s ) file( self.history_file.to_s ) file( self.manifest_file.to_s ) file( RUBY_VERSION_FILE.to_s ) file( GEMSET_FILE.to_s ) task( self.rakefile, &method(:do_generate_rakefile) ) task( self.readme_file, &method(:do_generate_readme_file) ) task( self.history_file, &method(:do_generate_history_file) ) task( self.manifest_file, &method(:do_generate_manifest_file) ) task( RUBY_VERSION_FILE, &method(:do_generate_ruby_version_file) ) task( GEMSET_FILE, &method(:do_generate_gemset_file) ) desc "Generate any missing project files." task :generate => [ self.rakefile, self.readme_file, self.history_file, self.manifest_file, RUBY_VERSION_FILE, GEMSET_FILE, ] # Abstract named tasks; mostly for invoking programmatically namespace :generate do desc "Generate a Rakefile" task :rakefile => self.rakefile desc "Generate a %s file" % [ self.readme_file ] task :readme => self.readme_file desc "Generate a %s file" % [ self.history_file ] task :history_file => self.history_file desc "Generate a %s file" % [ self.manifest_file ] task :manifest => self.manifest_file desc "Generate a %s file" % [ RUBY_VERSION_FILE ] task :ruby_version_file => RUBY_VERSION_FILE desc "Generate a %s file" % [ GEMSET_FILE ] task :gemset_file => GEMSET_FILE end desc "Diff the manifest file against the default set of project files." task( :diff_manifest, &method(:do_diff_manifest) ) end |
#do_diff_manifest(task, args) ⇒ Object
Task body for the ‘diff_manifest` task
129 130 131 132 133 134 135 136 137 138 |
# File 'lib/rake/deveiate/generate.rb', line 129 def do_diff_manifest( task, args ) Tempfile.open( ['Manifest','.txt'], Rake::DevEiate::PROJECT_DIR ) do |io| file_list = self.default_manifest.select {|pn| File.file?(pn) }.sort io.puts( *file_list ) io.flush sh 'diff', '-ub', self.manifest_file.to_s, io.path end end |
#do_generate_gemset_file(task, args) ⇒ Object
Generate a file that sets the project’s gemset
120 121 122 123 124 125 |
# File 'lib/rake/deveiate/generate.rb', line 120 def do_generate_gemset_file( task, args ) self.prompt.ok "Generating #{task.name}..." File.open( task.name, FILE_CREATION_FLAGS, 0644, encoding: 'utf-8' ) do |io| io.puts( self.name ) end end |
#do_generate_history_file(task, args) ⇒ Object
Generate a History file if one doesn’t already exist. Error if one does.
96 97 98 |
# File 'lib/rake/deveiate/generate.rb', line 96 def do_generate_history_file( task, args ) self.generate_from_template( task.name, HISTORY_TEMPLATE ) end |
#do_generate_manifest_file(task, args) ⇒ Object
Generate a manifest with a default set of files listed.
102 103 104 105 106 107 |
# File 'lib/rake/deveiate/generate.rb', line 102 def do_generate_manifest_file( task, args ) self.prompt.ok "Generating #{task.name}..." File.open( task.name, FILE_CREATION_FLAGS, 0644, encoding: 'utf-8' ) do |io| io.puts( *self.project_files ) end end |
#do_generate_rakefile(task, args) ⇒ Object
Generate a Rakefile if one doesn’t already exist. Error if one does.
83 84 85 |
# File 'lib/rake/deveiate/generate.rb', line 83 def do_generate_rakefile( task, args ) self.generate_from_template( task.name, RAKEFILE_TEMPLATE ) end |
#do_generate_readme_file(task, args) ⇒ Object
Generate a README file if one doesn’t already exist. Error if one does.
89 90 91 |
# File 'lib/rake/deveiate/generate.rb', line 89 def do_generate_readme_file( task, args ) self.generate_from_template( task.name, README_TEMPLATE ) end |
#do_generate_ruby_version_file(task, args) ⇒ Object
Generate a file that sets the project’s working Ruby version.
111 112 113 114 115 116 |
# File 'lib/rake/deveiate/generate.rb', line 111 def do_generate_ruby_version_file( task, args ) self.prompt.ok "Generating #{task.name}..." File.open( task.name, FILE_CREATION_FLAGS, 0644, encoding: 'utf-8' ) do |io| io.puts( RUBY_VERSION.sub(/\.\d+$/, '') ) end end |
#generate_from_template(filename, template_path) ⇒ Object
Generate the given filename from the template filed at template_path.
142 143 144 145 146 147 148 |
# File 'lib/rake/deveiate/generate.rb', line 142 def generate_from_template( filename, template_path ) self.prompt.ok "Generating #{filename}..." File.open( filename, FILE_CREATION_FLAGS, 0644, encoding: 'utf-8' ) do |io| result = self.load_and_render_template( template_path, filename ) io.print( result ) end end |