Class: Bundler::Thor::Actions::CreateFile
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
|
|
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
EmptyDirectory
|
|
Instance Chain:
self,
EmptyDirectory
|
|
Inherits: |
Bundler::Thor::Actions::EmptyDirectory
|
Defined in: | lib/bundler/vendor/thor/lib/thor/actions/create_file.rb |
Overview
CreateFile
is a subset of Template, which instead of rendering a file with ERB, it gets the content from the user.
Class Method Summary
EmptyDirectory
- Inherited
.new | Initializes given the source and destination. |
Instance Attribute Summary
- #data readonly
-
#identical? ⇒ Boolean
readonly
Checks if the content of the file at the destination is identical to the rendered result.
-
#force_on_collision? ⇒ Boolean
readonly
protected
Shows the file collision menu to the user and gets the result.
EmptyDirectory
- Inherited
#base, #config, #destination, | |
#exists? | Checks if the destination file already exists. |
#given_destination, #relative_destination, | |
#destination= | Sets the absolute destination value from a relative destination value. |
#pretend? | Shortcut for pretend. |
Instance Method Summary
- #invoke!
-
#render
Holds the content to be added to the file.
-
#force_or_skip_or_conflict(force, skip, &block)
protected
If force is true, run the action, otherwise check if it’s not being skipped.
-
#on_conflict_behavior(&block)
protected
Now on conflict we check if the file is identical or not.
EmptyDirectory
- Inherited
#invoke!, #revoke!, | |
#convert_encoded_instructions | Filenames in the encoded form are converted. |
#invoke_with_conflict_check | Receives a hash of options and just execute the block if some conditions are met. |
#on_conflict_behavior | What to do when the destination file already exists. |
#on_file_clash_behavior, | |
#say_status | Shortcut to say_status shell method. |
Constructor Details
.new(base, destination, data, config = {}) ⇒ CreateFile
# File 'lib/bundler/vendor/thor/lib/thor/actions/create_file.rb', line 35
def initialize(base, destination, data, config = {}) @data = data super(base, destination, config) end
Instance Attribute Details
#data (readonly)
[ GitHub ]# File 'lib/bundler/vendor/thor/lib/thor/actions/create_file.rb', line 33
attr_reader :data
#force_on_collision? ⇒ Boolean
(readonly, protected)
Shows the file collision menu to the user and gets the result.
# File 'lib/bundler/vendor/thor/lib/thor/actions/create_file.rb', line 99
def force_on_collision? base.shell.file_collision(destination) { render } end
#identical? ⇒ Boolean
(readonly)
Checks if the content of the file at the destination is identical to the rendered result.
Returns
- Boolean
-
true if it is identical, false otherwise.
# File 'lib/bundler/vendor/thor/lib/thor/actions/create_file.rb', line 45
def identical? exists? && File.binread(destination) == render end
Instance Method Details
#force_or_skip_or_conflict(force, skip, &block) (protected)
If force is true, run the action, otherwise check if it’s not being skipped. If both are false, show the file_collision menu, if the menu returns true, force it, otherwise skip.
# File 'lib/bundler/vendor/thor/lib/thor/actions/create_file.rb', line 85
def force_or_skip_or_conflict(force, skip, &block) if force say_status :force, :yellow yield unless pretend? elsif skip say_status :skip, :yellow else say_status :conflict, :red force_or_skip_or_conflict(force_on_collision?, true, &block) end end
#invoke!
[ GitHub ]#on_conflict_behavior(&block) (protected)
Now on conflict we check if the file is identical or not.
# File 'lib/bundler/vendor/thor/lib/thor/actions/create_file.rb', line 72
def on_conflict_behavior(&block) if identical? say_status :identical, :blue else = base. .merge(config) force_or_skip_or_conflict( [:force], [:skip], &block) end end
#render
Holds the content to be added to the file.