Class: RubySkills::CLI

Inherits:
Thor
  • Object
show all
Defined in:
lib/ruby_skills/cli.rb

Overview

Thor-based command-line interface for Ruby Skills.

The default command is #help. -h and --help are aliases for it.

Examples:

Initialize a project

RubySkills::CLI.start(["init"])

Since:

  • 0.1.0

Instance Method Summary collapse

Instance Method Details

#help(command = nil, subcommand = false) ⇒ void

This method returns an undefined value.

List every available command, or describe a single command.

Parameters:

  • command (String, nil) (defaults to: nil)

    command to describe, or nil to list all

  • subcommand (Boolean) (defaults to: false)

    whether command is a subcommand

Since:

  • 0.1.0



31
32
33
# File 'lib/ruby_skills/cli.rb', line 31

def help(command = nil, subcommand = false)
  super
end

#initvoid

This method returns an undefined value.

Create a Skillfile and .ruby-skills directory in the current project.

Raises:

  • (SystemExit)

    when initialization fails

Since:

  • 0.1.0



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/ruby_skills/cli.rb', line 40

def init
  config = Config.new

  config.initialize_project!

  say "Ruby Skills initialized"
  say " Skillfile created"
  say " .ruby-skills directory created"
rescue RubySkills::Error => e
  say "Error: #{e.message}", :red
  exit 1
end

#install(skill = nil) ⇒ void

This method returns an undefined value.

Install one skill or every skill declared in the Skillfile.

Parameters:

  • skill (String, nil) (defaults to: nil)

    skill name to install, or nil to install all

Raises:

  • (SystemExit)

    when installation fails

Since:

  • 0.1.0



59
60
61
62
63
64
# File 'lib/ruby_skills/cli.rb', line 59

def install(skill = nil)
  Installer.new.install(skill)
rescue RubySkills::Error => e
  say "Error: #{e.message}", :red
  exit 1
end

#listvoid

This method returns an undefined value.

Print installed skills from the lockfile.

With --json, emit a machine-readable payload instead of a table.

Since:

  • 0.1.0



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/ruby_skills/cli.rb', line 74

def list
  skills = Lockfile.new.skills

  if options[:json]
    puts JSON.generate(list_payload(skills))
    return
  end

  if skills.empty?
    say "No skills installed."
    return
  end

  say "Installed skills:"
  say ""

  skills.each do |name, data|
    say "#{name.ljust(35)} #{data["version"]}"
  end
end

#remove(skill) ⇒ void

This method returns an undefined value.

Remove an installed skill from the project.

Parameters:

  • skill (String)

    name of the skill to remove

Raises:

  • (SystemExit)

    when removal fails

Since:

  • 0.1.0



101
102
103
104
105
106
# File 'lib/ruby_skills/cli.rb', line 101

def remove(skill)
  Remover.new.remove(skill)
rescue RubySkills::Error => e
  say "Error: #{e.message}", :red
  exit 1
end

#update(skill = nil) ⇒ void

This method returns an undefined value.

Update one skill or every installed skill.

Parameters:

  • skill (String, nil) (defaults to: nil)

    skill name to update, or nil to update all

Raises:

  • (SystemExit)

    when the update fails

Since:

  • 0.1.0



114
115
116
117
118
119
# File 'lib/ruby_skills/cli.rb', line 114

def update(skill = nil)
  Updater.new.update(skill)
rescue RubySkills::Error => e
  say "Error: #{e.message}", :red
  exit 1
end

#versionvoid

This method returns an undefined value.

Print the installed gem version.

Since:

  • 0.1.0



125
126
127
# File 'lib/ruby_skills/cli.rb', line 125

def version
  say "ruby-skills #{RubySkills::VERSION}"
end