middleman-presentation-core 0.16.0.beta → 0.16.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +5 -2
- data/doc/licenses/dependencies.db +0 -0
- data/features/build_presentation.feature +49 -8
- data/features/create_presentation-cli.feature +35 -75
- data/features/init_application-cli.feature +7 -1
- data/features/init_predefined_slides.feature +1 -1
- data/features/predefined_slides.feature +79 -0
- data/lib/middleman-presentation-core.rb +3 -0
- data/lib/middleman-presentation-core/application_config.rb +13 -2
- data/lib/middleman-presentation-core/build_readme_template.rb +15 -0
- data/lib/middleman-presentation-core/cli/build_presentation.rb +30 -0
- data/lib/middleman-presentation-core/cli/create_presentation.rb +38 -14
- data/lib/middleman-presentation-core/cli/export.rb +2 -0
- data/lib/middleman-presentation-core/cli/init.rb +2 -0
- data/lib/middleman-presentation-core/cli/init_application.rb +5 -1
- data/lib/middleman-presentation-core/cli/runner.rb +4 -0
- data/lib/middleman-presentation-core/cli/serve_presentation.rb +3 -0
- data/lib/middleman-presentation-core/cli/shared.rb +0 -3
- data/lib/middleman-presentation-core/frontend_component.rb +0 -2
- data/lib/middleman-presentation-core/middleman_environment.rb +1 -1
- data/lib/middleman-presentation-core/presentation_license_template.rb +15 -0
- data/lib/middleman-presentation-core/step_definitions.rb +14 -1
- data/lib/middleman-presentation-core/utils.rb +0 -1
- data/lib/middleman-presentation-core/version.rb +1 -1
- data/locales/de.yml +4 -0
- data/locales/en.yml +4 -0
- data/middleman-presentation-core.gemspec +2 -2
- data/spec/components_manager_spec.rb +0 -1
- data/spec/existing_slide_spec.rb +0 -1
- data/spec/new_slide_spec.rb +0 -1
- data/spec/presentation_helper_spec.rb +0 -1
- data/spec/slide_list_spec.rb +0 -1
- data/templates/Gemfile.tt +2 -2
- data/templates/Rakefile +0 -1
- data/templates/build_readme.md.tt +80 -0
- data/templates/gitignore.tt +4 -0
- data/templates/{LICENSE.presentation → presentation_license.md.tt} +0 -0
- data/templates/script/bootstrap +0 -1
- data/templates/script/build +1 -2
- data/templates/script/export +1 -2
- data/templates/script/start +2 -43
- data/utils/server/server.darwin.amd64 +0 -0
- data/utils/server/server.linux.amd64 +0 -0
- data/utils/server/server.windows.amd64.exe +0 -0
- metadata +13 -9
- data/lib/middleman-presentation-core/middleman_step_definitions.rb +0 -131
- data/templates/config.yaml.tt +0 -17
- data/templates/script/presentation +0 -3
- data/templates/script/slide +0 -3
@@ -8,6 +8,8 @@ module Middleman
|
|
8
8
|
|
9
9
|
desc Middleman::Presentation.t('views.presentation.build.title')
|
10
10
|
|
11
|
+
class_option :add_static_servers, type: :boolean, default: Middleman::Presentation.config.add_static_servers, desc: Middleman::Presentation.t('views.presentation.build.options.add_static_servers')
|
12
|
+
|
11
13
|
def initialize_generator
|
12
14
|
enable_debug_mode
|
13
15
|
end
|
@@ -31,6 +33,16 @@ module Middleman
|
|
31
33
|
@javascripts_directory = @environment.scripts_directory
|
32
34
|
@fonts_directory = @environment.fonts_directory
|
33
35
|
@rackup_config_file = File.join @environment.build_directory, 'config.ru'
|
36
|
+
@readme_file = File.join @environment.build_directory, 'README.md'
|
37
|
+
|
38
|
+
@title = Middleman::Presentation.config.title
|
39
|
+
@subtitle = Middleman::Presentation.config.subtitle
|
40
|
+
@author = Middleman::Presentation.config.author
|
41
|
+
@speaker = Middleman::Presentation.config.speaker
|
42
|
+
@date = Middleman::Presentation.config.date
|
43
|
+
@license_file = Dir.glob(File.join(@environment.root_path, 'LICENSE.*')).first
|
44
|
+
|
45
|
+
@add_static_servers = options[:add_static_servers]
|
34
46
|
end
|
35
47
|
|
36
48
|
def build_presentation
|
@@ -51,6 +63,24 @@ module Middleman
|
|
51
63
|
def add_rackup_file
|
52
64
|
template 'rackup.config.erb', @rackup_config_file
|
53
65
|
end
|
66
|
+
|
67
|
+
def add_server_executables
|
68
|
+
return unless @add_static_servers
|
69
|
+
|
70
|
+
pattern = File.expand_path('../../../../utils/server/*', __FILE__)
|
71
|
+
Dir.glob(pattern).each { |f| FileUtils.cp f, @environment.build_path }
|
72
|
+
end
|
73
|
+
|
74
|
+
def add_readme
|
75
|
+
template_file = BuildReadmeTemplate.new
|
76
|
+
template template_file.file, File.join(@environment.build_directory, "README#{template_file.proposed_extname}"), force: options[:force]
|
77
|
+
end
|
78
|
+
|
79
|
+
def add_license
|
80
|
+
return if @license_file.blank?
|
81
|
+
|
82
|
+
copy_file @license_file, File.join(@environment.build_directory, File.basename(@license_file))
|
83
|
+
end
|
54
84
|
end
|
55
85
|
end
|
56
86
|
end
|
@@ -6,6 +6,10 @@ module Middleman
|
|
6
6
|
class CreatePresentation < BaseGroup
|
7
7
|
include Thor::Actions
|
8
8
|
|
9
|
+
def self.exit_on_failure?
|
10
|
+
true
|
11
|
+
end
|
12
|
+
|
9
13
|
class_option :speaker, required: true, default: Middleman::Presentation.config.speaker, desc: Middleman::Presentation.t('views.presentations.create.options.speaker')
|
10
14
|
class_option :title, required: true, desc: Middleman::Presentation.t('views.presentations.create.options.title')
|
11
15
|
class_option :date, required: true, default: Time.now.strftime('%d.%m.%Y'), desc: Middleman::Presentation.t('views.presentations.create.options.date')
|
@@ -70,6 +74,8 @@ module Middleman
|
|
70
74
|
class_option :stylesheets_directory, default: Middleman::Presentation.config.stylesheets_directory, desc: Middleman::Presentation.t('views.presentations.create.options.stylesheets_directory')
|
71
75
|
class_option :fonts_directory, default: Middleman::Presentation.config.fonts_directory, desc: Middleman::Presentation.t('views.presentations.create.options.fonts_directory')
|
72
76
|
class_option :build_directory, default: Middleman::Presentation.config.build_directory, desc: Middleman::Presentation.t('views.presentations.create.options.build_directory')
|
77
|
+
class_option :network_port, default: Middleman::Presentation.config.network_port, desc: Middleman::Presentation.t('views.presentations.create.options.network_port')
|
78
|
+
class_option :network_interface, default: Middleman::Presentation.config.network_interface, desc: Middleman::Presentation.t('views.presentations.create.options.network_interface')
|
73
79
|
|
74
80
|
argument :directory, default: Dir.getwd, desc: Middleman::Presentation.t('views.presentations.create.arguments.directory')
|
75
81
|
|
@@ -154,6 +160,9 @@ module Middleman
|
|
154
160
|
Middleman::Presentation.config.stylesheets_directory = options[:stylesheets_directory]
|
155
161
|
Middleman::Presentation.config.fonts_directory = options[:fonts_directory]
|
156
162
|
Middleman::Presentation.config.build_directory = options[:build_directory]
|
163
|
+
|
164
|
+
Middleman::Presentation.config.network_port = options[:network_port]
|
165
|
+
Middleman::Presentation.config.network_interface = options[:network_interface]
|
157
166
|
end
|
158
167
|
|
159
168
|
def create_root_directory
|
@@ -174,10 +183,11 @@ module Middleman
|
|
174
183
|
|
175
184
|
def create_gemfile
|
176
185
|
@rubygem_path = File.expand_path('../../../../../', __FILE__)
|
186
|
+
@library_version = Middleman::Presentation::VERSION
|
177
187
|
template 'Gemfile.tt', File.join(middleman_environment.root_path, 'Gemfile'), force: options[:force]
|
178
188
|
end
|
179
189
|
|
180
|
-
def
|
190
|
+
def create_presentation_config_file
|
181
191
|
create_file(
|
182
192
|
File.join(middleman_environment.root_path, '.middleman-presentation.yaml'),
|
183
193
|
Middleman::Presentation.config.to_yaml(keys: Middleman::Presentation.config.exportable_options, remove_blank: true),
|
@@ -185,6 +195,14 @@ module Middleman
|
|
185
195
|
)
|
186
196
|
end
|
187
197
|
|
198
|
+
def create_local_config_file
|
199
|
+
create_file(
|
200
|
+
File.join(middleman_environment.root_path, '.middleman-presentation.local.yaml'),
|
201
|
+
Middleman::Presentation.config.to_yaml(keys: Middleman::Presentation.config.local_options, remove_blank: true),
|
202
|
+
force: options[:force]
|
203
|
+
)
|
204
|
+
end
|
205
|
+
|
188
206
|
def create_bower_configuration_files
|
189
207
|
assets_loader.load_for_bower_update
|
190
208
|
|
@@ -218,22 +236,26 @@ module Middleman
|
|
218
236
|
return unless options[:create_predefined_slides]
|
219
237
|
|
220
238
|
PredefinedSlideTemplateDirectory.new(working_directory: middleman_environment.root_path).template_files.each do |file|
|
221
|
-
template
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
239
|
+
template(
|
240
|
+
file,
|
241
|
+
File.join(
|
242
|
+
middleman_environment.sources_path,
|
243
|
+
Middleman::Presentation.config.slides_directory,
|
244
|
+
File.basename(file, '.tt')
|
245
|
+
),
|
246
|
+
force: options[:force]
|
247
|
+
)
|
228
248
|
end
|
229
249
|
end
|
230
250
|
|
231
251
|
def create_default_license_file_to_presentation
|
232
|
-
|
252
|
+
license_template = PresentationLicenseTemplate.new
|
253
|
+
|
254
|
+
template license_template.file, File.join(middleman_environment.root_path, "LICENSE#{license_template.proposed_extname}"), force: options[:force]
|
233
255
|
end
|
234
256
|
|
235
257
|
def create_helper_scripts
|
236
|
-
%w(start bootstrap
|
258
|
+
%w(start bootstrap build export).each do |s|
|
237
259
|
copy_file File.join('script', s), File.join(middleman_environment.root_path, 'script', s), force: options[:force]
|
238
260
|
chmod File.join(middleman_environment.root_path, 'script', s), 0755, force: options[:force]
|
239
261
|
end
|
@@ -243,16 +265,18 @@ module Middleman
|
|
243
265
|
inside directory do
|
244
266
|
fail Thor::Error, Middleman::Presentation.t('errors.bower_command_not_found', path: ENV['PATH']) if options[:check_for_bower] && File.which('bower').blank?
|
245
267
|
|
246
|
-
|
247
|
-
|
268
|
+
system('bower update') || \
|
269
|
+
fail(Thor::Error, Middleman::Presentation.t('errors.bower_command_failed', result: '')) \
|
270
|
+
if options[:install_assets] == true
|
248
271
|
end
|
249
272
|
end
|
250
273
|
|
251
274
|
def install_gems
|
252
275
|
inside directory do
|
253
276
|
Bundler.with_clean_env do
|
254
|
-
|
255
|
-
|
277
|
+
system('bundle install') || \
|
278
|
+
fail(Thor::Error, Middleman::Presentation.t('errors.bundle_command_failed', result: '')) \
|
279
|
+
if options[:install_assets] == true
|
256
280
|
end
|
257
281
|
end
|
258
282
|
end
|
@@ -6,6 +6,8 @@ module Middleman
|
|
6
6
|
class Init < Base
|
7
7
|
register(InitApplication, 'application', 'application', Middleman::Presentation.t('views.applications.init.title'))
|
8
8
|
register(InitPredefinedSlides, 'predefined_slides', 'predefined_slides', Middleman::Presentation.t('views.predefined_slides.init.title'))
|
9
|
+
|
10
|
+
default_command :application
|
9
11
|
end
|
10
12
|
end
|
11
13
|
end
|
@@ -39,7 +39,11 @@ module Middleman
|
|
39
39
|
force: options[:force]
|
40
40
|
)
|
41
41
|
else
|
42
|
-
|
42
|
+
create_file(
|
43
|
+
file,
|
44
|
+
Middleman::Presentation.config.to_yaml(keys: Middleman::Presentation.config.known_options, remove_blank: false, prepend: '# '),
|
45
|
+
force: options[:force]
|
46
|
+
)
|
43
47
|
end
|
44
48
|
end
|
45
49
|
end
|
@@ -4,6 +4,10 @@ module Middleman
|
|
4
4
|
module Cli
|
5
5
|
# Run command
|
6
6
|
class Runner < Base
|
7
|
+
def self.exit_on_failure?
|
8
|
+
true
|
9
|
+
end
|
10
|
+
|
7
11
|
class_option :debug_mode, default: Middleman::Presentation.config.debug_mode, type: :boolean, desc: Middleman::Presentation.t('views.application.options.debug_mode')
|
8
12
|
class_option :bower_directory, default: Middleman::Presentation.config.bower_directory, desc: Middleman::Presentation.t('views.application.options.bower_directory')
|
9
13
|
|
@@ -8,6 +8,7 @@ module Middleman
|
|
8
8
|
|
9
9
|
class_option :network_port, type: :numeric, default: Middleman::Presentation.config.network_port, desc: Middleman::Presentation.t('views.presentation.serve.options.network_port')
|
10
10
|
class_option :network_interface, default: Middleman::Presentation.config.network_interface, desc: Middleman::Presentation.t('views.presentation.serve.options.network_interface')
|
11
|
+
class_option :open_in_browser, type: :boolean, default: Middleman::Presentation.config.open_in_browser, desc: Middleman::Presentation.t('views.presentation.serve.options.open_in_browser')
|
11
12
|
|
12
13
|
def initialize_generator
|
13
14
|
enable_debug_mode
|
@@ -19,6 +20,8 @@ module Middleman
|
|
19
20
|
title: Middleman::Presentation.config.title
|
20
21
|
)
|
21
22
|
|
23
|
+
Launchy.open(Addressable::URI.parse("http://#{options[:network_interface]}:#{options[:network_port]}")) if options[:open_in_browser]
|
24
|
+
|
22
25
|
cmd = []
|
23
26
|
cmd << 'middleman server'
|
24
27
|
cmd << "-p #{options[:network_port]}"
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Middleman
|
3
|
+
module Presentation
|
4
|
+
# Markdown template to create new slides
|
5
|
+
class PresentationLicenseTemplate < FeduxOrgStdlib::FileTemplate
|
6
|
+
def application_name
|
7
|
+
'middleman-presentation'
|
8
|
+
end
|
9
|
+
|
10
|
+
def fallback_template_directory
|
11
|
+
File.expand_path('../../../templates/', __FILE__)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -63,8 +63,17 @@ end
|
|
63
63
|
|
64
64
|
Given(/only the executables of gems "([^"]+)" can be found in PATH/) do |gems|
|
65
65
|
dirs = []
|
66
|
+
gem_names = gems.split(/,\s?/).map(&:strip)
|
66
67
|
|
67
|
-
dirs.concat
|
68
|
+
dirs.concat(
|
69
|
+
gem_names.each_with_object([]) do |e, a|
|
70
|
+
gem = Gem::Specification.each.find { |s| s.name == e }
|
71
|
+
|
72
|
+
fail if gem.blank?
|
73
|
+
|
74
|
+
a << gem.bin_dir
|
75
|
+
end
|
76
|
+
)
|
68
77
|
|
69
78
|
if ci?
|
70
79
|
dirs << "/home/travis/.rvm/rubies/ruby-#{RUBY_VERSION}/bin"
|
@@ -102,6 +111,10 @@ Given(/^a user template named "(.*?)" with:$/) do |name, string|
|
|
102
111
|
step %(a file named "~/.config/middleman-presentation/templates/#{name}" with:), string
|
103
112
|
end
|
104
113
|
|
114
|
+
Given(/^a user defined predefined slide named "(.*?)" with:$/) do |name, string|
|
115
|
+
step %(a file named "~/.config/middleman-presentation/predefined_slides.d/#{name}" with:), string
|
116
|
+
end
|
117
|
+
|
105
118
|
Given(/^a presentation theme named "(.*?)" does not exist$/) do |name|
|
106
119
|
step %(I remove the directory "middleman-presentation-theme-#{name}")
|
107
120
|
end
|
@@ -24,7 +24,6 @@ module Middleman
|
|
24
24
|
|
25
25
|
Zip::File.open(destination_file, Zip::File::CREATE) do |file|
|
26
26
|
Dir.glob(File.join(source_directory, '**', '*')).each do |filename|
|
27
|
-
|
28
27
|
path = ''
|
29
28
|
path << prefix if prefix
|
30
29
|
path << Pathname.new(filename).relative_path_from(Pathname.new(source_directory)).to_s
|
data/locales/de.yml
CHANGED
@@ -62,6 +62,8 @@ de:
|
|
62
62
|
create:
|
63
63
|
title: 'Erzeuge eine neue Präsentation in Verzeichnis DIR (standard: aktuelles Arbeitsverzeichnis)'
|
64
64
|
options:
|
65
|
+
network_port: Netzwerk-Port, an dem der Server lauschen soll
|
66
|
+
network_interface: Netwerk-Schnittstelle, an der der Server lauschen soll
|
65
67
|
runtime_environment: Laufzeit-Umgebung in der middleman-presentation läuft, z.B. "test"
|
66
68
|
activate_center: 'Aktiviere "center" in reveal.js'
|
67
69
|
activate_controls: 'Aktiviere "controls" in reveal.js'
|
@@ -215,11 +217,13 @@ de:
|
|
215
217
|
options:
|
216
218
|
network_port: Netzwerk-Port, an dem der Server lauschen soll
|
217
219
|
network_interface: Netwerk-Schnittstelle, an der der Server lauschen soll
|
220
|
+
open_in_browser: Öffne Präsentation im Browser
|
218
221
|
build:
|
219
222
|
title: Präsentation generieren
|
220
223
|
headline: Generiere die Präsentation "%{title}"
|
221
224
|
options:
|
222
225
|
title: 'Titel der Präsentation'
|
226
|
+
add_static_servers: 'Ergänze statische Webserver zu der generierten Präsentation'
|
223
227
|
export:
|
224
228
|
title: Präsentation exportieren
|
225
229
|
headline: Exportiere die Präsentation "%{title}" nach "%{file}"
|
data/locales/en.yml
CHANGED
@@ -62,6 +62,8 @@ en:
|
|
62
62
|
create:
|
63
63
|
title: 'Initialize a new presentation in DIR (default: $PWD)'
|
64
64
|
options:
|
65
|
+
network_port: Networkport the server listens on
|
66
|
+
network_interface: Networkinterface the server listens on
|
65
67
|
runtime_environment: Runtime environment in which middleman-presentation is running, e.g. "test"
|
66
68
|
activate_center: 'Activate center in reveal.js'
|
67
69
|
activate_controls: 'Activate controls in reveal.js'
|
@@ -215,11 +217,13 @@ en:
|
|
215
217
|
options:
|
216
218
|
network_port: Networkport the server listens on
|
217
219
|
network_interface: Networkinterface the server listens on
|
220
|
+
open_in_browser: Open presentation in browser
|
218
221
|
build:
|
219
222
|
title: Build presentation
|
220
223
|
headline: Build presentation "%{title}"
|
221
224
|
options:
|
222
225
|
title: 'Title of presentation'
|
226
|
+
add_static_servers: 'Add static webservers to built presentation'
|
223
227
|
export:
|
224
228
|
title: Export presentation
|
225
229
|
headline: Export presentation "%{title}" to file "%{file}"
|
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.summary = 'Presentation engine for Middleman'
|
13
13
|
|
14
14
|
spec.license = 'MIT'
|
15
|
-
spec.files = `git ls-files -z`.split("\x0")
|
15
|
+
spec.files = `git ls-files -z`.split("\x0") + Dir.glob('utils/server/*')
|
16
16
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
|
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_dependency 'tzinfo', '>= 0.3.0'
|
26
26
|
spec.add_dependency 'addressable', '~> 2.3.5'
|
27
27
|
spec.add_dependency 'launchy', '~> 2.4.2'
|
28
|
-
spec.add_dependency 'fedux_org-stdlib', '>= 0.
|
28
|
+
spec.add_dependency 'fedux_org-stdlib', '>= 0.11.1'
|
29
29
|
spec.add_dependency 'rake'
|
30
30
|
spec.add_dependency 'rubyzip', '~> 1.1.6'
|
31
31
|
spec.add_dependency 'liquid'
|
data/spec/existing_slide_spec.rb
CHANGED
data/spec/new_slide_spec.rb
CHANGED
data/spec/slide_list_spec.rb
CHANGED
data/templates/Gemfile.tt
CHANGED
@@ -6,12 +6,12 @@ source 'https://rubygems.org'
|
|
6
6
|
<% if Middleman::Presentation.config.runtime_environment == :test -%>
|
7
7
|
# Make sure the paths are correct, otherwise you get
|
8
8
|
# Bundler-errors a la `Path does not exist`
|
9
|
-
gem 'middleman-presentation', path: '<%= File.join(@rubygem_path, 'middleman-presentation') %>'
|
9
|
+
gem 'middleman-presentation', '~> <%= @library_version %>', path: '<%= File.join(@rubygem_path, 'middleman-presentation') %>'
|
10
10
|
gem 'middleman-presentation-core', path: '<%= File.join(@rubygem_path, 'middleman-presentation-core') %>'
|
11
11
|
gem 'middleman-presentation-helpers', path: '<%= File.join(@rubygem_path, 'middleman-presentation-helpers') %>'
|
12
12
|
gem 'middleman-presentation-simple_plugin', path: '<%= File.join(@rubygem_path, 'middleman-presentation-core/fixtures/middleman-presentation-simple_plugin') %>'
|
13
13
|
<% else -%>
|
14
|
-
gem 'middleman-presentation'
|
14
|
+
gem 'middleman-presentation', '~> <%= @library_version %>'
|
15
15
|
<% end -%>
|
16
16
|
|
17
17
|
# Choose one to make `execjs` happy
|