Class: Middleman::Presentation::Cli::CreatePresentation

Inherits:
BaseGroup
  • Object
show all
Includes:
Thor::Actions
Defined in:
lib/middleman-presentation-core/cli/create_presentation.rb

Overview

Initialize presentation

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Shared

#assets_loader, #bower_path, #enable_debug_mode, included, #open_in_editor

Class Method Details

.exit_on_failure?Boolean

Returns:

  • (Boolean)


9
10
11
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 9

def self.exit_on_failure?
  true
end

Instance Method Details

#add_configuration_for_middleman_presentationObject



222
223
224
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 222

def add_configuration_for_middleman_presentation
  template 'config.rb.tt', File.join(middleman_environment.root_path, 'config.rb'), force: options[:force]
end

#add_patterns_to_gitignoreObject



226
227
228
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 226

def add_patterns_to_gitignore
  template 'gitignore.tt', File.join(middleman_environment.root_path, '.gitignore'), force: options[:force]
end

#add_to_sources_pathObject



88
89
90
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 88

def add_to_sources_path
  source_paths << File.expand_path('../../../../templates', __FILE__)
end

#create_application_asset_filesObject



284
285
286
287
288
289
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 284

def create_application_asset_files
  assets_loader.load_for_asset_aggregators

  template 'source/stylesheets/application.scss.tt', File.join(middleman_environment.sources_path, 'stylesheets', 'application.scss'), force: options[:force]
  template 'source/javascripts/application.js.tt', File.join(middleman_environment.sources_path, 'javascripts', 'application.js'), force: options[:force]
end

#create_bower_configuration_filesObject



206
207
208
209
210
211
212
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 206

def create_bower_configuration_files
  assets_loader.load_for_bower_update

  @bower_directory = middleman_environment.bower_directory
  template '.bowerrc.tt', File.join(middleman_environment.root_path, '.bowerrc'), force: options[:force]
  template 'bower.json.tt', File.join(middleman_environment.root_path, 'bower.json'), force: options[:force]
end

#create_default_license_file_to_presentationObject



251
252
253
254
255
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 251

def create_default_license_file_to_presentation
  license_template = PresentationLicenseTemplate.new

  template license_template.file, File.join(middleman_environment.root_path, "LICENSE#{license_template.proposed_extname}"), force: options[:force]
end

#create_default_slidesObject



235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 235

def create_default_slides
  return unless options[:create_predefined_slides]

  PredefinedSlideTemplateDirectory.new(working_directory: middleman_environment.root_path).template_files.each do |file|
    template(
      file,
      File.join(
        middleman_environment.sources_path,
        Middleman::Presentation.config.slides_directory,
        File.basename(file, '.tt')
      ),
      force: options[:force]
    )
  end
end

#create_directoriesObject



172
173
174
175
176
177
178
179
180
181
182
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 172

def create_directories
  [
    # :sources_path, # implicit created
    :images_path,
    :scripts_path,
    :stylesheets_path,
    :fonts_path
  ].each do |dir|
    empty_directory middleman_environment.public_send(dir), force: options[:force]
  end
end

#create_gemfileObject



184
185
186
187
188
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 184

def create_gemfile
  @rubygem_path = File.expand_path('../../../../../', __FILE__)
  @library_version = Middleman::Presentation::VERSION
  template 'Gemfile.tt', File.join(middleman_environment.root_path, 'Gemfile'), force: options[:force]
end

#create_helper_scriptsObject



257
258
259
260
261
262
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 257

def create_helper_scripts
  %w(start bootstrap build export).each do |s|
    copy_file File.join('script', s), File.join(middleman_environment.root_path, 'script', s), force: options[:force]
    chmod File.join(middleman_environment.root_path, 'script', s), 0755, force: options[:force]
  end
end

#create_local_config_fileObject



198
199
200
201
202
203
204
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 198

def create_local_config_file
  create_file(
    File.join(middleman_environment.root_path, '.middleman-presentation.local.yaml'),
    Middleman::Presentation.config.to_yaml(keys: Middleman::Presentation.config.local_options, remove_blank: true),
    force: options[:force]
  )
end

#create_presentation_config_fileObject



190
191
192
193
194
195
196
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 190

def create_presentation_config_file
  create_file(
    File.join(middleman_environment.root_path, '.middleman-presentation.yaml'),
    Middleman::Presentation.config.to_yaml(keys: Middleman::Presentation.config.exportable_options, remove_blank: true),
    force: options[:force]
  )
end

#create_presentation_layoutObject



230
231
232
233
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 230

def create_presentation_layout
  template 'source/layout.erb', File.join(middleman_environment.sources_path, 'layout.erb'), force: options[:force]
  copy_file 'source/index.html.erb', File.join(middleman_environment.sources_path, 'index.html.erb'), force: options[:force]
end

#create_rake_fileObject



214
215
216
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 214

def create_rake_file
  template 'Rakefile', File.join(middleman_environment.root_path, 'Rakefile'), force: options[:force]
end

#create_root_directoryObject



168
169
170
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 168

def create_root_directory
  empty_directory directory, force: options[:force]
end

#create_slides_ignore_fileObject



218
219
220
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 218

def create_slides_ignore_file
  create_file File.join(middleman_environment.root_path, Middleman::Presentation.config.slides_ignore_file), "# empty\n", force: options[:force]
end

#expand_directoryObject



92
93
94
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 92

def expand_directory
  @directory = File.expand_path(directory)
end

#initialize_generatorObject



84
85
86
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 84

def initialize_generator
  enable_debug_mode
end

#initialize_git_directoryObject



291
292
293
294
295
296
297
298
299
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 291

def initialize_git_directory
  return unless options[:initialize_git]

  inside directory do
    run 'git init'
    run 'git add -A .'
    run 'git commit -m Init'
  end
end

#install_componentsObject



264
265
266
267
268
269
270
271
272
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 264

def install_components
  inside directory do
    fail Thor::Error, Middleman::Presentation.t('errors.bower_command_not_found', path: ENV['PATH']) if options[:check_for_bower] && File.which('bower').blank?

    system('bower update') || \
      fail(Thor::Error, Middleman::Presentation.t('errors.bower_command_failed', result: '')) \
      if options[:install_assets] == true
  end
end

#install_gemsObject



274
275
276
277
278
279
280
281
282
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 274

def install_gems
  inside directory do
    Bundler.with_clean_env do
      system('bundle install') || \
        fail(Thor::Error, Middleman::Presentation.t('errors.bundle_command_failed', result: '')) \
        if options[:install_assets] == true
    end
  end
end

#set_languageObject



96
97
98
99
100
101
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 96

def set_language
  @language = FeduxOrgStdlib::ShellLanguageDetector.new.detect(
    allowed: Middleman::Presentation.locale_configurator.available_locales,
    overwrite: options[:language]
  ).language_code
end

#set_variables_for_templatesObject



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'lib/middleman-presentation-core/cli/create_presentation.rb', line 103

def set_variables_for_templates
  Middleman::Presentation.config.author          = options[:author]
  Middleman::Presentation.config.speaker         = options[:speaker]
  Middleman::Presentation.config.title           = options[:title]
  Middleman::Presentation.config.description     = options[:description]
  Middleman::Presentation.config.subtitle        = options[:subtitle]
  Middleman::Presentation.config.date            = options[:date]
  Middleman::Presentation.config.homepage        = options[:homepage]
  Middleman::Presentation.config.company         = options[:company]
  Middleman::Presentation.config.license         = options[:license]
  Middleman::Presentation.config.location        = options[:location]
  Middleman::Presentation.config.audience        = options[:audience]

  Middleman::Presentation.config.email_address   = options[:email_address]
  Middleman::Presentation.config.phone_number    = options[:phone_number]
  Middleman::Presentation.config.github_url      = options[:github_url]

  Middleman::Presentation.config.version         = options[:version]
  Middleman::Presentation.config.generated_presentation_id = format '%s-%s', options[:title].characterize, SecureRandom.hex

  Middleman::Presentation.config.width                         = options[:width]
  Middleman::Presentation.config.height                        = options[:height]
  Middleman::Presentation.config.margin                        = options[:margin]
  Middleman::Presentation.config.min_scale                     = options[:min_scale]
  Middleman::Presentation.config.max_scale                     = options[:max_scale]
  Middleman::Presentation.config.activate_center               = options[:activate_center]
  Middleman::Presentation.config.activate_controls             = options[:activate_controls]
  Middleman::Presentation.config.activate_embedded             = options[:activate_embedded]
  Middleman::Presentation.config.activate_fragments            = options[:activate_fragments]
  Middleman::Presentation.config.activate_history              = options[:activate_history]
  Middleman::Presentation.config.activate_history              = options[:activate_history]
  Middleman::Presentation.config.activate_keyboard             = options[:activate_keyboard]
  Middleman::Presentation.config.activate_loop                 = options[:activate_loop]
  Middleman::Presentation.config.activate_mouse_wheel          = options[:activate_mouse_wheel]
  Middleman::Presentation.config.activate_overview             = options[:activate_overview]
  Middleman::Presentation.config.activate_progress             = options[:activate_progress]
  Middleman::Presentation.config.activate_rtl                  = options[:activate_rtl]
  Middleman::Presentation.config.activate_slide_number         = options[:activate_slide_number]
  Middleman::Presentation.config.activate_touch                = options[:activate_touch]
  Middleman::Presentation.config.auto_slide                    = options[:auto_slide]
  Middleman::Presentation.config.auto_slide_stoppable          = options[:auto_slide_stoppable]
  Middleman::Presentation.config.default_background_transition = options[:default_background_transition]
  Middleman::Presentation.config.default_transition_speed      = options[:default_transition_speed]
  Middleman::Presentation.config.default_transition_type       = options[:default_transition_type]
  Middleman::Presentation.config.hide_address_bar              = options[:hide_address_bar]
  Middleman::Presentation.config.parallax_background_image     = options[:parallax_background_image]
  Middleman::Presentation.config.parallax_background_size      = options[:parallax_background_size]
  Middleman::Presentation.config.preview_links                 = options[:preview_links]
  Middleman::Presentation.config.view_distance                 = options[:view_distance]

  Middleman::Presentation.config.bower_directory          = options[:bower_directory]

  Middleman::Presentation.config.runtime_environment      = options[:runtime_environment]

  Middleman::Presentation.config.sources_directory = options[:sources_directory]
  Middleman::Presentation.config.images_directory = options[:images_directory]
  Middleman::Presentation.config.scripts_directory = options[:scripts_directory]
  Middleman::Presentation.config.stylesheets_directory = options[:stylesheets_directory]
  Middleman::Presentation.config.fonts_directory = options[:fonts_directory]
  Middleman::Presentation.config.build_directory = options[:build_directory]

  Middleman::Presentation.config.network_port = options[:network_port]
  Middleman::Presentation.config.network_interface = options[:network_interface]
end