2pass 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/bin/2pass +21 -9
  3. data/lib/2pass/version.rb +1 -1
  4. data/lib/2pass.rb +13 -2
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 671d7c33b6f4e5e79ef13a88986405674f456dc06e23f5cc7450fb495ecdcb71
4
- data.tar.gz: 415390e6ac546a6af7678058e1231a4ade807df151dca0b163aa4023da8fe229
3
+ metadata.gz: dbffa6c36a23a40c4ec93bc9f0277cf43d3e2388b61459a89aad0bb89458451e
4
+ data.tar.gz: 5ab72d0c03fb7b718aaec180fdb530755ad69394acb6f808918b978044174e47
5
5
  SHA512:
6
- metadata.gz: f865bb6fac54e13f4ac4c7c917680b0a0ef92194d1a2f1f97cc72333de8215466d4ab598a0a2ddb5360bc61b489c9a0231fa2ec3d53afd98b7e9f15aecb58fb1
7
- data.tar.gz: e01b0c574e69fcd8096605c7b7a2f383aad580dbbfd72ec6a89701573ee75a182303b5bd6349bc8022a9354e4a4bc042a090435016bba213aca0c37d54fcf5eb
6
+ metadata.gz: 0f0bce6612b408712dac5d313331b8721703f89a4a695ff0d7fd23076d6fcaf7bd2fdec67bdf75c1504f98d59dd400fe04bfa70f729847e234b13ab114d03eb6
7
+ data.tar.gz: 06d625e2325531c59eff3d197eab64ed3265de9c93ab4046ff39c81f7057ceecb3c2cd640cccc70f9073da3975a3eac9e14fdbaf185242ff4141a0ea1bc6a517
data/bin/2pass CHANGED
@@ -7,7 +7,8 @@ def help_message
7
7
  Usage:
8
8
  2pass add <vault_name> <id> <value> - Add new secret
9
9
  2pass get <vault_name> <id> - Get content by ID from the specified vault
10
- 2pass list <vault_name> - List the content of the specified vault
10
+ 2pass list <vault_name> - List the content of the specified vault as key-value pairs
11
+ 2pass list <vault_name> --json - List the content of the specified vault as JSON
11
12
  2pass link <vault_name> <target_path> - Create a symlink for an existing vault. Useful when the vault is stored in a synced place (iCloud, Dropbox, etc.)
12
13
  2pass -h - Display this help message
13
14
  HELP
@@ -23,6 +24,12 @@ OptionParser.new do |opts|
23
24
  opts.on("-v", "--version", "Display the version") do
24
25
  options[:version] = true
25
26
  end
27
+ opts.on("-f", "--format", "Specify output format (e.g., json)") do |format|
28
+ options[:format] = format == "json" ? :json : :text
29
+ end
30
+ opts.on("--json", "Use JSON output format (same as -f json)") do
31
+ options[:format] = :json
32
+ end
26
33
  end.parse!
27
34
 
28
35
  if options[:help]
@@ -43,30 +50,35 @@ end
43
50
  command, vault_name, *args = ARGV
44
51
 
45
52
  begin
46
- case command
47
- when "get"
53
+ case command&.to_sym
54
+ when :get
48
55
  if args.length < 1
49
56
  help_message
50
57
  exit(1)
51
58
  end
52
59
  id = args[0]
53
60
  puts TwoPass.get_secret(vault_name, id)
54
- when "add"
61
+ when :add
55
62
  if args.length != 2
56
63
  help_message
57
64
  exit(1)
58
65
  end
59
66
  TwoPass.add_secret(vault_name, args[0], args[1])
60
- when "list"
61
- puts TwoPass.list_content(vault_name)
62
- when "link"
67
+ when :list
68
+ if options[:format] == :json
69
+ puts TwoPass.list_content(vault_name, format: :json)
70
+ else
71
+ puts TwoPass.list_content(vault_name)
72
+ end
73
+ exit(1)
74
+ when :link
63
75
  if args.length < 1
64
76
  help_message
65
77
  exit(1)
66
78
  end
67
79
  target_path = args[0]
68
80
  TwoPass.create_symlink(vault_name, target_path)
69
- when "help"
81
+ when :help
70
82
  help_message
71
83
  else
72
84
  help_message
@@ -79,5 +91,5 @@ rescue => e
79
91
  STDERR.puts e.backtrace
80
92
  end
81
93
 
82
- exit 1
94
+ exit(1)
83
95
  end
data/lib/2pass/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module TwoPass
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
data/lib/2pass.rb CHANGED
@@ -38,9 +38,20 @@ module TwoPass
38
38
  File.write(file_path, YAML.dump(data))
39
39
  end
40
40
 
41
- def list_content(vault_name)
41
+ def list_content(vault_name, format: :text)
42
42
  vault = load_vault(vault_name)
43
- JSON.pretty_generate(vault)
43
+ if format == :text
44
+ vault
45
+ .map { |h| "#{h[:id]}=#{h[:value]}" }
46
+ .sort
47
+ .join("\n")
48
+ else
49
+ JSON.pretty_generate(
50
+ vault
51
+ .map { |hash| hash.slice(:id, :value) }
52
+ .sort_by { |hash| hash[:id] }
53
+ )
54
+ end
44
55
  end
45
56
 
46
57
  def add_secret(vault_name, id, value)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: 2pass
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Olivier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-19 00:00:00.000000000 Z
11
+ date: 2025-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler