Module: Rake::DevEiate::Generate

Defined in:
lib/rake/deveiate/generate.rb

Overview

Project-file generation tasks

Constant Summary collapse

README_TEMPLATE =

Template files

'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

Instance Method Details

#define_tasksObject

Define generation tasks.



27
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
# File 'lib/rake/deveiate/generate.rb', line 27

def define_tasks
	super if defined?( super )

	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.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.readme_file,
		self.history_file,
		self.manifest_file,
		RUBY_VERSION_FILE,
		GEMSET_FILE,
	]

	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



98
99
100
101
102
103
104
105
106
# File 'lib/rake/deveiate/generate.rb', line 98

def do_diff_manifest( task, args )
	Tempfile.open( ['Manifest','.txt'], Rake::DevEiate::PROJECT_DIR ) do |io|
		file_list = self.default_manifest.to_a
		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



89
90
91
92
93
94
# File 'lib/rake/deveiate/generate.rb', line 89

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.



65
66
67
# File 'lib/rake/deveiate/generate.rb', line 65

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.



71
72
73
74
75
76
# File 'lib/rake/deveiate/generate.rb', line 71

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_readme_file(task, args) ⇒ Object

Generate a README file if one doesn’t already exist. Error if one does.



58
59
60
# File 'lib/rake/deveiate/generate.rb', line 58

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.



80
81
82
83
84
85
# File 'lib/rake/deveiate/generate.rb', line 80

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.



110
111
112
113
114
115
116
# File 'lib/rake/deveiate/generate.rb', line 110

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 )
		io.print( result )
	end
end