Module: TwoPass
- Defined in:
- lib/2pass.rb,
lib/2pass/version.rb
Constant Summary collapse
- VAULT_DIR =
"#{Dir.home}/.2pass"- VERSION =
"1.0.0"
Class Method Summary collapse
- .add_secret(vault_name, id, value) ⇒ Object
- .create_symlink(vault_name, target_path) ⇒ Object
- .get_secret(vault_name, id) ⇒ Object
- .list_content(vault_name) ⇒ Object
- .load_vault(vault_name) ⇒ Object
- .save_vault(vault_name, data) ⇒ Object
Class Method Details
.add_secret(vault_name, id, value) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/2pass.rb', line 45 def self.add_secret(vault_name, id, value) new_secret = { id: id, value: value, uuid: SecureRandom.uuid } data = load_vault(vault_name) existing_entry_id = data.find_index { |hash| hash[:id] == new_secret[:id] } if existing_entry_id raise "The secret already exists" end data << new_secret save_vault(vault_name, data) end |
.create_symlink(vault_name, target_path) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/2pass.rb', line 12 def self.create_symlink(vault_name, target_path) FileUtils.mkdir_p(VAULT_DIR) symlink_path = "#{VAULT_DIR}/#{vault_name}.yml" if File.exist?(symlink_path) puts "Symlink already exists: #{symlink_path}" else File.symlink(target_path, symlink_path) puts "Created symlink: #{symlink_path} -> #{target_path}" end end |
.get_secret(vault_name, id) ⇒ Object
60 61 62 63 64 65 66 67 68 |
# File 'lib/2pass.rb', line 60 def self.get_secret(vault_name, id) vault = load_vault(vault_name) entry = vault.find { |hash| hash[:id] == id } if entry entry[:value] else raise "Entry not found" end end |
.list_content(vault_name) ⇒ Object
40 41 42 43 |
# File 'lib/2pass.rb', line 40 def self.list_content(vault_name) vault = load_vault(vault_name) JSON.pretty_generate(vault) end |
.load_vault(vault_name) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/2pass.rb', line 24 def self.load_vault(vault_name) file_path = "#{VAULT_DIR}/#{vault_name}.yml" return [] unless File.exist?(file_path) YAML.load_file(file_path, symbolize_names: true) || [] rescue Psych::SyntaxError => e STDERR.puts "Error parsing YAML file: #{e.message}" [] end |
.save_vault(vault_name, data) ⇒ Object
34 35 36 37 38 |
# File 'lib/2pass.rb', line 34 def self.save_vault(vault_name, data) FileUtils.mkdir_p(VAULT_DIR) file_path = "#{VAULT_DIR}/#{vault_name}.yml" File.write(file_path, YAML.dump(data)) end |