Module: Browserctl::Commands::Storage

Extended by:
CliOutput
Defined in:
lib/browserctl/commands/storage.rb

Constant Summary collapse

USAGE =
"Usage: browserctl storage <get|set|export|import|delete> [args]"

Constants included from CliOutput

CliOutput::AUTH_REQUIRED_EXIT_CODE

Class Method Summary collapse

Methods included from CliOutput

exit_code_for, print_result, structured_error_line

Class Method Details

.deprecation_replacement(sub) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/browserctl/commands/storage.rb', line 30

def self.deprecation_replacement(sub)
  case sub
  when "get"    then "data get <page> <key> --scope localStorage"
  when "set"    then "data set <page> <key> <value> --scope localStorage"
  when "delete" then "data delete <page> --scope localStorage"
  when "export" then "data list <page> --scope localStorage  # write to file client-side"
  when "import" then "data set <page> --scope localStorage"
  else "data <op> --scope localStorage"
  end
end

.extract_opt(args, flag) ⇒ Object



75
76
77
78
79
80
81
# File 'lib/browserctl/commands/storage.rb', line 75

def self.extract_opt(args, flag)
  idx = args.index(flag)
  return nil unless idx

  args.delete_at(idx)
  args.delete_at(idx)
end

.run(client, args) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/browserctl/commands/storage.rb', line 13

def self.run(client, args)
  sub = args.shift or abort USAGE
  # Deprecated in v0.15 — see ADR-0021. Removed at 1.0.
  DeprecationNotice.emit(
    "storage #{sub}",
    deprecation_replacement(sub)
  )
  case sub
  when "get"    then run_get(client, args)
  when "set"    then run_set(client, args)
  when "export" then run_export(client, args)
  when "import" then run_import(client, args)
  when "delete" then run_delete(client, args)
  else abort "unknown storage subcommand '#{sub}'\n#{USAGE}"
  end
end

.run_delete(client, args) ⇒ Object



69
70
71
72
73
# File 'lib/browserctl/commands/storage.rb', line 69

def self.run_delete(client, args)
  page  = args.shift or abort "usage: browserctl storage delete <page> [--store local|session|all]"
  store = extract_opt(args, "--store") || "all"
  print_result(client.storage_delete(page, stores: store))
end

.run_export(client, args) ⇒ Object



56
57
58
59
60
61
# File 'lib/browserctl/commands/storage.rb', line 56

def self.run_export(client, args)
  page  = args.shift or abort "usage: browserctl storage export <page> <path> [--store local|session|all]"
  path  = args.shift or abort "usage: browserctl storage export <page> <path> [--store local|session|all]"
  store = extract_opt(args, "--store") || "all"
  print_result(client.storage_export(page, path, stores: store))
end

.run_get(client, args) ⇒ Object



41
42
43
44
45
46
# File 'lib/browserctl/commands/storage.rb', line 41

def self.run_get(client, args)
  page  = args.shift or abort "usage: browserctl storage get <page> <key> [--store local|session]"
  key   = args.shift or abort "usage: browserctl storage get <page> <key> [--store local|session]"
  store = extract_opt(args, "--store") || "local"
  print_result(client.storage_get(page, key, store: store))
end

.run_import(client, args) ⇒ Object



63
64
65
66
67
# File 'lib/browserctl/commands/storage.rb', line 63

def self.run_import(client, args)
  page = args.shift or abort "usage: browserctl storage import <page> <path>"
  path = args.shift or abort "usage: browserctl storage import <page> <path>"
  print_result(client.storage_import(page, path))
end

.run_set(client, args) ⇒ Object



48
49
50
51
52
53
54
# File 'lib/browserctl/commands/storage.rb', line 48

def self.run_set(client, args)
  page  = args.shift or abort "usage: browserctl storage set <page> <key> <value> [--store local|session]"
  key   = args.shift or abort "usage: browserctl storage set <page> <key> <value> [--store local|session]"
  value = args.shift or abort "usage: browserctl storage set <page> <key> <value> [--store local|session]"
  store = extract_opt(args, "--store") || "local"
  print_result(client.storage_set(page, key, value, store: store))
end