summaryrefslogtreecommitdiff
path: root/lib/autorequire
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-12-06 23:04:47 +0200
committerPaul Buetow <paul@buetow.org>2024-12-06 23:04:47 +0200
commit7686fe830946ae36957501f1656bb429c694b09e (patch)
treea6ac996e4a7cbbdc054c2a62c7ae374b61ed49af /lib/autorequire
parentbfdcad7efca071374de0be3124dcc92deeab681e (diff)
add log module
Diffstat (limited to 'lib/autorequire')
-rw-r--r--lib/autorequire/file.rb20
-rw-r--r--lib/autorequire/log.rb19
2 files changed, 38 insertions, 1 deletions
diff --git a/lib/autorequire/file.rb b/lib/autorequire/file.rb
index 2a25a07..3233015 100644
--- a/lib/autorequire/file.rb
+++ b/lib/autorequire/file.rb
@@ -1,8 +1,13 @@
+require 'fileutils'
+require_relative 'log'
+
module RCM
# Managing files
class File
attr_reader :path
+ include Log
+
def initialize(path)
@path = path
end
@@ -11,12 +16,25 @@ module RCM
content.nil? ? @content : @content = content
end
+ def create_parent
+ @create_parent = true
+ end
+
def to_s
@path
end
def do!
- puts "Evaluating #{self.class}:#{self}"
+ dirname = ::File.dirname(@path)
+ if !::File.directory?(dirname) && @create_parent
+ info "Creating parent directory #{parent}"
+ FileUtils.mkdir_p(dirname)
+ end
+
+ info "Creating file #{@path}"
+ tmp_path = "#{@path}.tmp"
+ ::File.write(tmp_path, @content)
+ ::File.rename(tmp_path, @path)
end
end
diff --git a/lib/autorequire/log.rb b/lib/autorequire/log.rb
new file mode 100644
index 0000000..0fe9ea9
--- /dev/null
+++ b/lib/autorequire/log.rb
@@ -0,0 +1,19 @@
+require 'logger'
+
+module RCM
+ module Log
+ @@logger = Logger.new(STDOUT)
+
+ def info(message)
+ @@logger.info("#{self.class}(#{self}): #{message}")
+ end
+
+ def warn(message)
+ @@logger.warn("#{self.class}(#{self}): #{message}")
+ end
+
+ def debug(message)
+ @@logger.debug("#{self.class}(#{self}): #{message}")
+ end
+ end
+end