Module: ViteRuby::CLI::FileUtils
- Defined in:
- lib/vite_ruby/cli/file_utils.rb
Overview
NOTE: Extracted from dry-cli version 0.6.0, which later removed this file as it was refactored and extracted into the more complete (and complex) dry-files.
Class Method Summary collapse
-
.append(path, contents) ⇒ Object
private
Adds a new line at the bottom of the file.
-
.cp(source, destination) ⇒ Object
private
Copies source into destination.
-
.inject_line_after(path, target, contents) ⇒ Object
private
Inject ‘contents` in `path` after `target`.
-
.inject_line_after_last(path, target, contents) ⇒ Object
private
Inject ‘contents` in `path` after last `target`.
-
.inject_line_before(path, target, contents) ⇒ Object
private
Inject ‘contents` in `path` before `target`.
-
.replace_first_line(path, target, replacement) ⇒ Object
private
Replace first line in ‘path` that contains `target` with `replacement`.
-
.write(path, *content) ⇒ Object
private
Creates a new file or rewrites the contents of an existing file.
Class Method Details
.append(path, contents) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Adds a new line at the bottom of the file.
34 35 36 37 38 39 40 41 42 |
# File 'lib/vite_ruby/cli/file_utils.rb', line 34 def append(path, contents) content = read_lines(path) return if content.join.include?(contents) content << "\n" unless content.last&.end_with?("\n") content << "#{contents}\n" write(path, content) end |
.cp(source, destination) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Copies source into destination.
25 26 27 28 |
# File 'lib/vite_ruby/cli/file_utils.rb', line 25 def cp(source, destination) mkdir_p(destination) FileUtils.cp(source, destination) unless File.exist?(destination) end |
.inject_line_after(path, target, contents) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Inject ‘contents` in `path` after `target`.
67 68 69 |
# File 'lib/vite_ruby/cli/file_utils.rb', line 67 def inject_line_after(path, target, contents) _inject_line_after(path, target, contents, method(:index)) end |
.inject_line_after_last(path, target, contents) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Inject ‘contents` in `path` after last `target`.
75 76 77 |
# File 'lib/vite_ruby/cli/file_utils.rb', line 75 def inject_line_after_last(path, target, contents) _inject_line_after(path, target, contents, method(:rindex)) end |
.inject_line_before(path, target, contents) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Inject ‘contents` in `path` before `target`.
59 60 61 |
# File 'lib/vite_ruby/cli/file_utils.rb', line 59 def inject_line_before(path, target, contents) _inject_line_before(path, target, contents, method(:index)) end |
.replace_first_line(path, target, replacement) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Replace first line in ‘path` that contains `target` with `replacement`.
48 49 50 51 52 53 |
# File 'lib/vite_ruby/cli/file_utils.rb', line 48 def replace_first_line(path, target, replacement) content = read_lines(path) content[index(content, path, target)] = "#{replacement}\n" write(path, content) end |
.write(path, *content) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Creates a new file or rewrites the contents of an existing file.
14 15 16 17 18 19 |
# File 'lib/vite_ruby/cli/file_utils.rb', line 14 def write(path, *content) mkdir_p(path) File.open(path, File::CREAT | File::WRONLY | File::TRUNC) do |file| file.write(Array(content).flatten.join) end end |