Module: EasyCreds::Views::Menu

Defined in:
lib/easy_creds/views/menu.rb

Class Method Summary collapse

Class Method Details

.ask(prompt) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/easy_creds/views/menu.rb', line 6

def self.ask(prompt)
  p = Theme.pastel

  choices = [
    # ── Inspect ───────────────────────────────────────────────────────
    { name: Theme.dim('  ── Inspect ──────────────────────────────────'),
      value: nil, disabled: '' },
    { name: "  #{Theme.bold('status')}    #{Theme.dim('')} show local vs 1Password drift",
      value: :status },

    # ── Sync ──────────────────────────────────────────────────────────
    { name: Theme.dim('  ── Sync ─────────────────────────────────────'),
      value: nil, disabled: '' },
    { name: "  #{Theme.bold('init')}      #{Theme.dim('')} bootstrap credentials from example.yml",
      value: :init },
    { name: "  #{Theme.bold('push')}      #{Theme.dim('')} #{Theme::ICONS[:push]} local → 1Password",
      value: :push },
    { name: "  #{Theme.bold('pull')}      #{Theme.dim('')} #{Theme::ICONS[:pull]} 1Password → local",
      value: :pull },

    # ── Edit ──────────────────────────────────────────────────────────
    { name: Theme.dim('  ── Edit ─────────────────────────────────────'),
      value: nil, disabled: '' },
    { name: "  #{Theme.bold('edit')}      #{Theme.dim('')} interactive key-by-key editor",
      value: :edit },
    { name: "  #{Theme.bold('editor')}    #{Theme.dim('')} open decrypted YAML in $EDITOR",
      value: :editor_edit },

    # ── Other ─────────────────────────────────────────────────────────
    { name: Theme.dim('  ─────────────────────────────────────────────'),
      value: nil, disabled: '' },
    { name: "  #{Theme.bold('local')}     #{Theme.dim('')} manage encrypted local override",
      value: :local },
    { name: "  #{Theme.bold('switch')}    #{Theme.dim('')} change environment",
      value: :switch },
    { name: "  #{Theme.dim('quit')}",
      value: :quit }
  ]

  prompt.select(
    "\nWhat would you like to do?",
    choices,
    cycle: true,
    filter: false,
    per_page: choices.size
  )
end