Class: DevSystem::NewGenerator

Inherits:
SimpleGenerator show all
Defined in:
lib/dev_system/subsystems/generator/generators/new_generator.rb

Instance Attribute Summary

Attributes inherited from BaseGenerator

#menv

Attributes inherited from Liza::Controller

#menv

Instance Method Summary collapse

Methods inherited from SimpleGenerator

#add_unit, #add_view, #app_shell, #arg_views, #arg_views_adjacent?, #arg_views_eof?, #arg_views_nested?, #arg_views_none?, #before, before_instance_call, #before_instance_calls, before_instance_calls, #copy_examples, #copy_file, #copy_files, #create_file, #create_file_contents, #delete_file, #generate, #inform, #mapper, #pick_many_units, #puts_line, #read_file, #remove_units, #save, #set_default_views, set_default_views, #update_file, #valid_views

Methods inherited from BaseGenerator

#action_name, #after, #args, #before, #before_default, #before_input, #call, call, #command, #default_args, default_args, #default_booleans, default_booleans, default_strings, #default_strings, get_generator_signatures, #inform, #input_args, input_args, input_booleans, #input_booleans, input_strings, #input_strings, #save, #set_default_arg, set_default_arg, #set_default_boolean, set_default_boolean, #set_default_string, set_default_string, #set_input_arg, set_input_arg, set_input_boolean, #set_input_boolean, set_input_string, #set_input_string

Methods inherited from Generator

get_generator_signatures

Methods inherited from Liza::Controller

#`, `, attr_accessor, attr_reader, attr_writer, #attrs, box, #box, call, color, division, division!, division?, inherited, menv_accessor, menv_reader, menv_writer, on_connected, panel, #panel, plural, require, requirements, sh, #sh, singular, subsystem, subsystem!, subsystem?, subsystem_token, token

Methods inherited from Liza::Unit

_erbs_for, #add, add, cl, #cl, class_methods_defined, const_added, const_missing, constants_defined, define_error, descendants_select, division, erbs_available, erbs_defined, erbs_for, errors, #fetch, fetch, get, #get, instance_methods_defined, log, #log, log?, #log?, #log_array, log_array, log_hash, #log_hash, #log_level, log_level, #log_level?, log_level?, log_levels, #log_levels, #log_render_convert, #log_render_format, #log_render_in, #log_render_out, method_added, methods_defined, namespace, part, raise_error, #raise_error, reload!, #reload!, #render, #render!, #render_stack, renderable_formats_for, renderable_names, section, sections, #set, set, #settings, settings, singleton_method_added, sleep, #sleep, stick, #stick, sticks, #sticks, subclasses_select, subunits, system, #system, system?, test_class, time_diff, #time_diff

Instance Method Details

#call_defaultObject

liza g new name



5
6
7
# File 'lib/dev_system/subsystems/generator/generators/new_generator.rb', line 5

def call_default
  call_project
end

#call_projectObject

liza g new:project name



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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/dev_system/subsystems/generator/generators/new_generator.rb', line 11

def call_project
  log "args = #{args.inspect}"
  # setup

  name! "project"

  from = "#{Lizarb.liz_dir}/examples/new"
  log "from: #{from}"
  to = "#{Dir.pwd}/#{@name}"

  return log "Directory #{stick :light_green, to} already exists." if Dir.exist? to

  log stick :b, :black, system.color, "Liza Application initializing at `#{to}`"

  # app

  FileShell.copy from, to

  # extra

  puts

  FileShell.gitkeep "#{to}/lib"
  FileShell.gitkeep "#{to}/tmp"

  TextShell.write "#{to}/.gitignore", render(:gitignore, format: :gitignore)
  # TextShell.write "#{to}/Procfile", render(:Procfile, format: :yml)
  TextShell.write "#{to}/.tool-versions", render(:toolversions, format: :txt)

  FileShell.copy "#{Lizarb.liz_dir}/README.md", "#{to}/README.md"
  # FileShell.copy "#{Lizarb.app_dir}/web_files", "#{to}/web_files"
  
  puts

  log stick :b, :black, system.color, "Liza Application initialized at `#{to}`"

  log stick :b, :black, system.color, "Generating Gemfile..."

  KernelShell.call_system \
    "liza generate gemfile #{@name}/Gemfile +confirm",
    log_level: :normal

  log stick :b, :black, system.color, "Gemfile generated at `#{to}/Gemfile`"

  # bundle install

  log stick :b, :black, system.color, "Installing Gems..."
  log stick :b, :white, system.color, "This may take a few minutes, depending on where you are..."

  KernelShell.call_backticks \
    "cd #{to}; BUNDLE_GEMFILE=Gemfile bundle install",
    log_level: :normal
  
  log stick :b, :black, system.color, "Gems installed at `#{to}`"

  # git

  log stick :b, :black, system.color, "Initializing Git..."

  KernelShell.call_backticks \
    "cd #{to}; git init -b main; git add .; git commit -m 'lizarb new @name (v#{Lizarb::VERSION})'",
    log_level: :normal

  log stick :b, :black, system.color, "Liza Application initialized at `#{to}`"
end

#call_scriptObject

liza g new:script name



79
80
81
82
83
84
85
86
# File 'lib/dev_system/subsystems/generator/generators/new_generator.rb', line 79

def call_script
  if !App.project? or App.global?
    call_script_independent
  else
    call_script_dependent
  end
  
end

#call_script_dependentObject

liza g new:script_dependent name



90
91
92
93
94
95
96
# File 'lib/dev_system/subsystems/generator/generators/new_generator.rb', line 90

def call_script_dependent
  name_with_period! "script"

  @systems = ["dev"]

  create_file "scripts/#{@name}", :script_dependent, :rb
end

#call_script_independentObject

liza g new:script_independent name



100
101
102
103
104
105
106
# File 'lib/dev_system/subsystems/generator/generators/new_generator.rb', line 100

def call_script_independent
  name_with_period! "script"

  @systems = ["dev"]

  create_file @name, :script_independent, :rb
end

#name!(name) ⇒ Object

helper methods



110
111
112
113
# File 'lib/dev_system/subsystems/generator/generators/new_generator.rb', line 110

def name! name
  @name = command.simple_arg_ask_snakecase 1, "Name your new #{name}:"
  log "@name = #{@name.inspect}"
end

#name_with_period!(name) ⇒ Object



115
116
117
118
# File 'lib/dev_system/subsystems/generator/generators/new_generator.rb', line 115

def name_with_period! name
  @name = command.simple_arg_ask_snakecase 1, "Name your new #{name}:", regexp: /^[a-zA-Z_\.]*$/
  log "@name = #{@name.inspect}"
end