Class: Spiker::BaseGenerator

Inherits:
Thor::Group
  • Object
show all
Includes:
Thor::Actions
Defined in:
lib/spiker/base_generator.rb

Overview

BaseGenerator handles the common steps for all generators, including allowing for several feature skips. Inherited this generator - not to be used directly.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.source_rootObject



11
12
13
# File 'lib/spiker/base_generator.rb', line 11

def self.source_root
  File.expand_path("../spiker/templates", __dir__)
end

Instance Method Details

#create_docker_filesObject



37
38
39
40
41
42
43
44
45
46
# File 'lib/spiker/base_generator.rb', line 37

def create_docker_files
  if options[:skip_docker]
    say "🛑 Skipping Dockerfile and docker-compose.yml generation (--skip-docker was passed)", :yellow
    return if options[:skip_docker]
  end

  template("common/Dockerfile.tt", "#{spike_name}/Dockerfile")
  template("common/docker-compose.yml.tt", "#{spike_name}/docker-compose.yml")
  template("common/Makefile.tt", "#{spike_name}/Makefile")
end

#create_env_fileObject



33
34
35
# File 'lib/spiker/base_generator.rb', line 33

def create_env_file
  template("common/basic.env.tt", "#{spike_name}/.env")
end

#create_gem_fileObject



29
30
31
# File 'lib/spiker/base_generator.rb', line 29

def create_gem_file
  template("#{generator_name}/Gemfile.tt", "#{spike_name}/Gemfile")
end

#create_guard_fileObject



25
26
27
# File 'lib/spiker/base_generator.rb', line 25

def create_guard_file
  template("#{generator_name}/Guardfile.tt", "#{spike_name}/Guardfile")
end

#create_spike_directoryObject



21
22
23
# File 'lib/spiker/base_generator.rb', line 21

def create_spike_directory
  empty_directory(spike_name)
end

#generator_nameObject



15
16
17
18
19
# File 'lib/spiker/base_generator.rb', line 15

def generator_name
  # name here refers to the class name, not the name of the spike
  name = self.class.name.split("::").last
  name.gsub(/([a-z])([A-Z])/, '\1_\2').downcase
end

#run_bundle_installObject



48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/spiker/base_generator.rb', line 48

def run_bundle_install
  if options[:skip_bundle]
    say "🛑 Skipping bundle install (--skip-bundle was passed)", :yellow
    return
  end

  inside(spike_name) do
    Bundler.with_unbundled_env do
      system("bundle install")
    end
  end
end

#run_git_initObject



61
62
63
64
65
66
67
68
69
# File 'lib/spiker/base_generator.rb', line 61

def run_git_init
  if options[:skip_git]
    say "🛑 Skipping git init (--skip-git was passed)", :yellow
    return
  end

  say "📦 Running `git init`...", :green
  inside(File.join(destination_root, spike_name)) { run "git init" }
end