Module: SugarJar::Help

Defined in:
lib/sugarjar/help.rb

Constant Summary collapse

COMMANDS =

Keyed by the "primary" command (the longest/most-descriptive name - not necessarily the actual method name in SugarJar::Commands, though both work identically for dispatch). aliases are other, usually shorter, names that dispatch to the same command. description is the full text shown by sj help <command>.

{
  'amend' => {
    :aliases => [],
    :usage => '',
    :description => <<~DESC,
  },
  'amendq' => {
    :aliases => ['qamend'],
    :usage => '',
    :description => <<~DESC,
  },
  'binfo' => {
    :aliases => [],
    :usage => '',
    :description => 'Verbose information about the current branch.',
  },
  'br' => {
    :aliases => [],
    :usage => '',
    :description => 'Verbose branch list. An alias for `git branch -v`.',
  },
  'debuginfo' => {
    :aliases => [],
    :usage => '',
    :description => <<~DESC,
  },
  'feature' => {
    :aliases => ['f'],
    :usage => '<branch_name>',
    :description => <<~DESC,
  },
  'forcepush' => {
    :aliases => ['fpush'],
    :usage => '',
    :description => <<~DESC,
  },
  'forcesync' => {
    :aliases => ['fsync'],
    :usage => '',
    :description => <<~DESC,
  },
  'globalbranchclean' => {
    :aliases => ['gbclean'],
    :usage => '[<branch>] [<remote>]',
    :description => <<~DESC,
  },
  'globalbranchcleanall' => {
    :aliases => ['gbcleanall'],
    :usage => '[<remote>]',
    :description => <<~DESC,
  },
  'lint' => {
    :aliases => [],
    :usage => '',
    :description => 'Run any linters configured in the repoconfig.',
  },
  'localbranchclean' => {
    :aliases => %w{lbclean bclean},
    :usage => '[<branch>]',
    :description => <<~DESC,
  },
  'localbranchcleanall' => {
    :aliases => %w{lbcleanall bcleanall},
    :usage => '',
    :description => <<~DESC,
  },
  'modernizeconfig' => {
    :aliases => ['fixconfig'],
    :usage => '',
    :description => <<~DESC,
  },
  'pullsuggestions' => {
    :aliases => ['ps'],
    :usage => '',
    :description => <<~DESC,
  },
  'remotebranchclean' => {
    :aliases => ['rbclean'],
    :usage => '[<branch>] [<remote>]',
    :description => <<~DESC,
  },
  'remotebranchcleanall' => {
    :aliases => ['rbcleanall'],
    :usage => '[<remote>]',
    :description => <<~DESC,
  },
  'smartclone' => {
    :aliases => ['sclone'],
    :usage => '<repo> [<dir>]',
    :description => <<~DESC,
  },
  'smartlog' => {
    :aliases => ['sl'],
    :usage => '',
    :description => <<~DESC,
  },
  'smartpullrequest' => {
    :aliases => %w{smartpr spr},
    :usage => '',
    :description => <<~DESC,
  },
  'smartpush' => {
    :aliases => ['spush'],
    :usage => '',
    :description => <<~DESC,
  },
  'subfeature' => {
    :aliases => ['sf'],
    :usage => '<feature>',
    :description =>
      'An alias for `sj feature <feature> <current_branch>`.',
  },
  'sync' => {
    :aliases => [],
    :usage => '',
    :description => <<~DESC,
  },
  'unit' => {
    :aliases => [],
    :usage => '',
    :description => 'Run any unitests configured in the repoconfig.',
  },
  'up' => {
    :aliases => [],
    :usage => '[<branch>]',
    :description => <<~DESC,
  },
  'upall' => {
    :aliases => [],
    :usage => '',
    :description => 'Same as `up`, but for all branches.',
  },
}.freeze
ALIASES =

Map of every valid command/alias name -> its canonical (primary) name.

COMMANDS.each_with_object({}) do |(name, info), map|
  map[name] = name
  info[:aliases].each { |a| map[a] = name }
end.freeze

Class Method Summary collapse

Class Method Details

.canonical(name) ⇒ Object



292
293
294
# File 'lib/sugarjar/help.rb', line 292

def self.canonical(name)
  ALIASES[name]
end

.command_help(name) ⇒ Object



303
304
305
306
307
308
309
310
311
# File 'lib/sugarjar/help.rb', line 303

def self.command_help(name)
  canonical_name = canonical(name)
  return nil unless canonical_name

  info = COMMANDS[canonical_name]
  names = ([canonical_name] + info[:aliases]).join(', ')
  usage = info[:usage].empty? ? '' : " #{info[:usage]}"
  "#{names}#{usage}\n\n#{info[:description]}"
end

.summary_listObject



296
297
298
299
300
301
# File 'lib/sugarjar/help.rb', line 296

def self.summary_list
  COMMANDS.sort.map do |name, info|
    names = ([name] + info[:aliases]).join(', ')
    "  #{names}"
  end.join("\n")
end