Class: Vedeu::CLI::Application

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/vedeu/cli/application.rb

Overview

Generates the client application directory and file structure.

:nocov:

Examples:

```bash
vedeu new your_app_name_here
```

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#app_bin_path, #app_config_path, #app_controllers_path, #app_helpers_path, #app_keymaps_path, #app_models_path, #app_name, #app_views_path, #copy_file, #log_processed_file, #log_skipped_file, #make_directory, #make_file, #name, #name_as_class, #output, #parse, #source, #touch_file

Constructor Details

#initialize(name) ⇒ Vedeu::CLI::Application

Returns a new instance of Vedeu::CLI::Application.

Parameters:

  • name (String)

    The name of the application.



27
28
29
# File 'lib/vedeu/cli/application.rb', line 27

def initialize(name)
  @name = name
end

Class Method Details

.generate(name) ⇒ Vedeu::CLI::Application

Parameters:

  • name (String)

    The name of the application.

Returns:



19
20
21
# File 'lib/vedeu/cli/application.rb', line 19

def self.generate(name)
  new(name).generate
end

Instance Method Details

#copy_app_namevoid (private)

This method returns an undefined value.



83
84
85
86
# File 'lib/vedeu/cli/application.rb', line 83

def copy_app_name
  make_file(source + '/config/app_name.erb',
            app_config_path + 'app_name')
end

#copy_app_root_filesvoid (private)

This method returns an undefined value.



89
90
91
92
93
94
95
96
97
98
99
# File 'lib/vedeu/cli/application.rb', line 89

def copy_app_root_files
  [
    '/Gemfile',
    '/.gitignore',
    '/LICENSE.txt',
    '/README.md',
    '/.ruby-version',
  ].each do |file|
    copy_file((source + file), (app_root_path + file))
  end
end

#copy_application_bootstrappervoid (private)

This method returns an undefined value.



54
55
56
57
# File 'lib/vedeu/cli/application.rb', line 54

def copy_application_bootstrapper
  make_file(source + '/application.erb',
            app_root_path + '/application.rb')
end

#copy_application_controllervoid (private)

This method returns an undefined value.



60
61
62
63
# File 'lib/vedeu/cli/application.rb', line 60

def copy_application_controller
  make_file(source + '/app/controllers/application_controller.erb',
            app_controllers_path + 'application_controller.rb')
end

#copy_application_executablevoid (private)

This method returns an undefined value.



66
67
68
# File 'lib/vedeu/cli/application.rb', line 66

def copy_application_executable
  copy_file(source + '/bin/name', app_bin_path + "#{name}")
end

#copy_application_helpervoid (private)

This method returns an undefined value.



71
72
73
74
# File 'lib/vedeu/cli/application.rb', line 71

def copy_application_helper
  make_file(source + '/app/helpers/application_helper.erb',
            app_helpers_path + 'application_helper.rb')
end

#copy_configurationvoid (private)

This method returns an undefined value.



77
78
79
80
# File 'lib/vedeu/cli/application.rb', line 77

def copy_configuration
  make_file(source + '/config/configuration.erb',
            app_config_path + 'configuration.rb')
end

#copy_global_keymapvoid (private)

This method returns an undefined value.



107
108
109
110
# File 'lib/vedeu/cli/application.rb', line 107

def copy_global_keymap
  copy_file(source + '/app/models/keymaps/_global_.rb',
            app_keymaps_path + '_global_.rb')
end

#directoriesArray<String> (private)

Returns:

  • (Array<String>)


113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/vedeu/cli/application.rb', line 113

def directories
  [
    '/app/controllers',
    '/app/helpers',
    '/app/models/keymaps',
    '/app/views/interfaces',
    '/app/views/templates',
    '/bin',
    '/config',
    '/lib',
    '/log',
    '/test',
    '/vendor',
  ]
end

#generatevoid

This method returns an undefined value.



32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/vedeu/cli/application.rb', line 32

def generate
  make_directory_structure

  copy_app_root_files
  copy_application_bootstrapper
  copy_application_controller
  copy_application_helper
  copy_global_keymap
  copy_application_executable
  make_application_executable
  copy_configuration
  copy_app_name
end

#make_application_executablevoid (private)

This method returns an undefined value.



102
103
104
# File 'lib/vedeu/cli/application.rb', line 102

def make_application_executable
  FileUtils.chmod(0755, "#{name}/bin/#{name}")
end

#make_directory_structurevoid (private)

This method returns an undefined value.



49
50
51
# File 'lib/vedeu/cli/application.rb', line 49

def make_directory_structure
  directories.each { |directory| make_directory(name + directory) }
end