module Runbook::Util::StoredPose

Constants

FILE_ID
FILE_PERMISSIONS

Public Class Methods

_file(book_title) click to toggle source
# File lib/runbook/util/stored_pose.rb, line 24
def self._file(book_title)
  "#{Dir.tmpdir}/runbook_#{FILE_ID}_#{ENV["USER"]}_#{_slug(book_title)}.yml"
end
_slug(title) click to toggle source
# File lib/runbook/util/stored_pose.rb, line 28
def self._slug(title)
  title.titleize.gsub(/[\/\s]+/, "").underscore.dasherize
end
delete(title) click to toggle source
# File lib/runbook/util/stored_pose.rb, line 20
def self.delete(title)
  FileUtils.rm_f(_file(title))
end
load(metadata) click to toggle source
# File lib/runbook/util/stored_pose.rb, line 6
def self.load(metadata)
  title = metadata[:book_title]
  file = _file(title)
  if File.exist?(file)
    ::YAML::load_file(file)
  end
end
register_delete_stored_pose_hook(base) click to toggle source
# File lib/runbook/util/stored_pose.rb, line 44
def self.register_delete_stored_pose_hook(base)
  base.register_hook(
    :delete_stored_pose_hook,
    :after,
    Runbook::Entities::Book,
  ) do |object, metadata|
    title = metadata[:book_title]
    Runbook::Util::StoredPose.delete(title)
  end
end
register_save_pose_hook(base) click to toggle source
# File lib/runbook/util/stored_pose.rb, line 32
def self.register_save_pose_hook(base)
  base.register_hook(
    :save_pose_hook,
    :before,
    Object,
  ) do |object, metadata|
    position = metadata[:position]
    title = metadata[:book_title]
    Runbook::Util::StoredPose.save(position, book_title: title)
  end
end
save(repo, book_title:) click to toggle source
# File lib/runbook/util/stored_pose.rb, line 14
def self.save(repo, book_title:)
  File.open(_file(book_title), 'w', FILE_PERMISSIONS) do |f|
    f.write(repo.to_yaml)
  end
end