Class: Codelation::Cli

Inherits:
Thor
  • Object
show all
Includes:
Thor::Actions
Defined in:
lib/codelation/base.rb,
lib/codelation/version.rb,
lib/codelation/development.rb,
lib/codelation/development/atom.rb,
lib/codelation/development/ruby.rb,
lib/codelation/development/postgres.rb,
lib/codelation/development/dot_files.rb,
lib/codelation/development/sequel_pro.rb,
lib/codelation/development/dependencies.rb,
lib/codelation/development/atom_packages.rb,
lib/codelation/development/install_methods.rb

Constant Summary collapse

ATOM_APP_DOWNLOAD_URL =
"https://atom.io/download/mac"
RUBY_INSTALL_VERSION =
"0.5.0"
RUBY_INSTALL_URL =
"https://github.com/postmodern/ruby-install/archive/v#{RUBY_INSTALL_VERSION}.tar.gz"
RUBY_VERSION =
"2.2.1"
POSTGRES_APP_DOWNLOAD_URL =
"https://github.com/PostgresApp/PostgresApp/releases/download/9.4.1.0/Postgres-9.4.1.0.zip"
SEQUEL_PRO_APP_DOWNLOAD_URL =
"http://codelation-cli.s3.amazonaws.com/sequel-pro-1.0.2.zip"

Class Method Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object

Add the ablitity to run commands like:

`codelation development:install`

This would run the defined method:

`development_install`


26
27
28
29
30
31
32
33
34
# File 'lib/codelation/base.rb', line 26

def method_missing(method, *args, &block)
  if method.to_s.split(":").length >= 2
    self.send(method.to_s.gsub(":", "_"), *args)
  elsif method.to_s == "run"
    self.walk(*args)
  else
    super
  end
end

Class Method Details

.source_rootObject

This is the directory where your templates should be placed.



37
38
39
# File 'lib/codelation/base.rb', line 37

def self.source_root
  File.expand_path("../../../resources", __FILE__)
end

Instance Method Details

#development_installObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/codelation/development.rb', line 16

def development_install
  print_heading("Installing Dependencies")
  install_dependencies

  print_heading("Installing Atom.app")
  install_atom

  print_heading("Installing Atom Packages")
  install_atom_packages

  print_heading("Installing Dot Files")
  install_dot_files

  print_heading("Installing Postgres.app")
  install_postgres

  print_heading("Installing Ruby")
  install_ruby

  print_heading("Installing Sequel Pro.app")
  install_sequel_pro

  `source ~/.bash_profile`
end

#help(method = nil) ⇒ Object

Add the ablitity to print help for commands like:

`codelation help development:install`

This would print help for the method:

`development_install`

Parameters:

  • (defaults to: nil)


13
14
15
16
17
18
19
20
# File 'lib/codelation/base.rb', line 13

def help(method = nil)
  if method.to_s.split(":").length >= 2
    method = method.to_s.gsub(":", "_")
  elsif method.to_s == "run"
    method = "walk"
  end
  super
end

#updateObject



10
11
12
13
14
# File 'lib/codelation/version.rb', line 10

def update
  command = "gem install codelation-cli"
  puts "Running #{command}..."
  exec(command)
end

#versionObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/codelation/version.rb', line 17

def version
  gem_version = "v#{Codelation::VERSION}"

  # Grab the latest version of the RubyGem
  rubygems_json = open("https://rubygems.org/api/v1/gems/codelation-cli.json").read
  rubygems_version = "v#{JSON.parse(rubygems_json)['version'].strip}"

  upgrade_message = ""
  if gem_version != rubygems_version
    upgrade_message = " Run `codelation update` to install"
  end

  puts
  puts "Codelation CLI"
  puts "  Installed: #{gem_version}"
  puts "  Latest:    #{rubygems_version}#{upgrade_message}"
  puts
end