lib/raykit/secrets.rb



# frozen_string_literal: true


require "time"

module Raykit
  # Provides functionality to record the time execution times

  class Secrets < Hash
    def initialize
      if ENV.key?("RAYKIT_SECRETS_PATH")
        secrets_file = ENV["RAYKIT_SECRETS_PATH"]
        if File.exist?(secrets_file)
          text = IO.read(secrets_file)
          if text.length > 7
            data = JSON.parse(text)
            data.each do |key, value|
              self[key] = value
            end
          end
        end
      end
    end

    def hide(text)
      hidden = text
      each do |_k, v|
        hidden = hidden.gsub(v, "****") if !v.nil? && v.length.positive?
      end
      hidden
    end

    def save
      if ENV.key?("RAYKIT_SECRETS_PATH")
        secrets_file = ENV["RAYKIT_SECRETS_PATH"]
        File.open(secrets_file, "w") { |f| f.puts to_json }
      end
    end
  end
end