usmu 0.3.2-java → 0.3.3-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +6 -10
- data/CHANGELOG.md +18 -0
- data/Gemfile +10 -1
- data/Guardfile +2 -2
- data/Rakefile +28 -10
- data/lib/usmu.rb +1 -0
- data/lib/usmu/configuration.rb +14 -1
- data/lib/usmu/deployment/directory_diff.rb +8 -5
- data/lib/usmu/metadata_service.rb +37 -0
- data/lib/usmu/site_generator.rb +5 -4
- data/lib/usmu/template/include.rb +2 -1
- data/lib/usmu/template/layout.rb +6 -15
- data/lib/usmu/template/page.rb +3 -3
- data/lib/usmu/template/static_file.rb +3 -2
- data/lib/usmu/ui/console.rb +29 -3
- data/lib/usmu/version.rb +1 -1
- data/spec/configuration_spec.rb +24 -0
- data/spec/deployment/directory_diff_spec.rb +70 -84
- data/spec/metadata_service_spec.rb +75 -0
- data/spec/site_generator_spec.rb +2 -2
- data/spec/support/shared_layout.rb +33 -33
- data/spec/template/layout_spec.rb +3 -3
- data/spec/template/page_spec.rb +2 -2
- data/spec/template/static_file_spec.rb +3 -3
- data/test-site/content/assets/external.scss +5 -0
- data/test-site/content/assets/meta.yml +2 -0
- data/test-site/expected-site/assets/external.scss +5 -0
- data/usmu.gemspec +15 -4
- metadata +49 -47
- data/Gemfile-jruby +0 -4
- data/usmu-jruby.gemspec +0 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7cdfef5411ad7a8fbd0961057afa4bb15e2da4cf
|
4
|
+
data.tar.gz: 19de27e21991678e176c18a786640ff33bf88f9d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab83d63473d2237451de2acd92602e1aa0ac276ed18922d0e981db64db6e1d378d3822aa8605a0f095edcdc3fa13cace6e3d08fd425b8a45958af5cd694c5f51
|
7
|
+
data.tar.gz: 8e5ab26797b38d7ebf56e528e1da15f1ad62bfed68872137ba32880343134994889c6c6c8f639f277b71af6032284b4b779d6261599a71062168cba70c4e4503
|
data/.travis.yml
CHANGED
@@ -6,22 +6,18 @@ rvm:
|
|
6
6
|
- 2.1
|
7
7
|
- 2.2
|
8
8
|
- ruby-head
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
#- mruby-head
|
10
|
+
#- rbx-2.1
|
11
|
+
#- rbx-2.2
|
12
|
+
#- rbx-2.3
|
13
13
|
- rbx-2.4
|
14
|
+
- jruby
|
15
|
+
- jruby-head
|
14
16
|
matrix:
|
15
17
|
include:
|
16
18
|
- rvm: jruby
|
17
|
-
gemfile: Gemfile-jruby
|
18
|
-
- rvm: jruby
|
19
|
-
gemfile: Gemfile-jruby
|
20
19
|
env: JRUBY_OPTS='--2.0'
|
21
20
|
- rvm: jruby-head
|
22
|
-
gemfile: Gemfile-jruby
|
23
|
-
- rvm: jruby-head
|
24
|
-
gemfile: Gemfile-jruby
|
25
21
|
env: JRUBY_OPTS='--2.0'
|
26
22
|
allow_failures:
|
27
23
|
- rvm: 1.9.3
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
# Usmu Change Log
|
2
2
|
|
3
|
+
## 0.3.3
|
4
|
+
|
5
|
+
Matthew Scharley <matt.scharley@gmail.com>
|
6
|
+
|
7
|
+
* Disallow mutant on 2.2 (f6afd151d54c8fefb6a9af68a7cea1bae8f32265)
|
8
|
+
* Cleanup gem builds to use the same gemspec (48cce89d6936e0b0668bf9714989d786ac573aaf)
|
9
|
+
* Cleanup Travis since we don't need includes (as much) (8453421218e0b63755bccae6b2e01754225bbe7a)
|
10
|
+
* [skip ci] Add a minimum Ruby requirement (c90711ac1e41c8a9973e987aa308a88c951e05dc)
|
11
|
+
* Hopefully fix rbx (e6a51d07986b4347394ae3b571bb6b2a16ad1db3)
|
12
|
+
* [skip ci] minor cleanup (662e0e6e82aa01fe0883e794dc9fea0407dfdadc)
|
13
|
+
* [#15][#16] Add an example of directory metadata and static parsing (b369fdde02a5b7c25f60e86fabc248a448b68b19)
|
14
|
+
* [#15] Add directory metadata (66dd094ffdcafb8ecced06a9ad7c578b64885689)
|
15
|
+
* [#16] add a metadata value to force static parsing (02dc5794f9dc3efc2655d375cd2dd17c45e8cea7)
|
16
|
+
* Fix minor regression from #15 (e179fd27d133d647d7025d82a697e6d1f202224b)
|
17
|
+
* [#21] Add some ignored classes for mutant (0bf4a328e6aebf87ed489bcf3d6f19ea111fa95e)
|
18
|
+
* [#21] Cover Usmu::Deployment::DirectoryDiff (d4836b1ddb950223786e35b024e2692e106a2c41)
|
19
|
+
* [#18] Initialise logging before commander (6117299b6303b54249c06d894e074cbb437623c2)
|
20
|
+
|
3
21
|
## 0.3.2
|
4
22
|
|
5
23
|
Matthew Scharley <matt.scharley@gmail.com>
|
data/Gemfile
CHANGED
@@ -1,11 +1,20 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
+
unless ENV['BUILD_PLATFORM']
|
4
|
+
ENV['BUILD_PLATFORM'] = case RUBY_ENGINE
|
5
|
+
when 'jruby'
|
6
|
+
'java'
|
7
|
+
else
|
8
|
+
'ruby'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
3
12
|
# Specify your gem's dependencies in usmu.gemspec
|
4
13
|
gemspec name: 'usmu'
|
5
14
|
|
6
15
|
gem 'codeclimate-test-reporter', group: :test, require: nil
|
7
16
|
|
8
|
-
if RUBY_VERSION.to_f >= 2
|
17
|
+
if RUBY_VERSION.to_f >= 2 && RUBY_VERSION.to_f < 2.2 && RUBY_ENGINE == 'ruby'
|
9
18
|
gem 'mutant', '~> 0.7'
|
10
19
|
gem 'mutant-rspec', '~> 0.7'
|
11
20
|
end
|
data/Guardfile
CHANGED
@@ -4,8 +4,8 @@
|
|
4
4
|
guard :rspec, cmd: 'rspec', spec_paths: ['spec'] do
|
5
5
|
watch(%r{^spec/.+_spec\.rb$})
|
6
6
|
watch(%r{^lib/usmu/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
7
|
-
watch(%r{^
|
8
|
-
watch('
|
7
|
+
watch(%r{^spec/support}) { 'spec' }
|
8
|
+
watch('spec/spec_helper.rb') { 'spec' }
|
9
9
|
|
10
10
|
# Turnip features and steps
|
11
11
|
watch(%r{^spec/acceptance/(.+)\.feature$})
|
data/Rakefile
CHANGED
@@ -8,13 +8,17 @@ def current_gems
|
|
8
8
|
Dir["pkg/usmu-#{Usmu::VERSION}*.gem"].sort_by &:length
|
9
9
|
end
|
10
10
|
|
11
|
+
def platforms
|
12
|
+
%w(ruby java)
|
13
|
+
end
|
14
|
+
|
11
15
|
RSpec::Core::RakeTask.new(:spec) do |t|
|
12
16
|
t.pattern = 'spec'
|
13
17
|
end
|
14
18
|
|
15
19
|
desc 'Start an IRB session with local code available'
|
16
20
|
task :irb do
|
17
|
-
exec
|
21
|
+
exec *%w{bundle exec irb}
|
18
22
|
end
|
19
23
|
|
20
24
|
desc 'Run all test scripts'
|
@@ -26,7 +30,15 @@ task :mutant, [:target] => [:clean] do |t,args|
|
|
26
30
|
if `which mutant 2>&1 > /dev/null; echo \$?`.to_i != 0
|
27
31
|
puts 'Mutant isn\'t supported on your platform. Please run these tests on MRI <= 2.1.5.'
|
28
32
|
else
|
29
|
-
sh
|
33
|
+
sh 'bundle', 'exec', 'mutant',
|
34
|
+
'--include', 'lib',
|
35
|
+
'--require', 'usmu',
|
36
|
+
'--require', 'usmu/deployment',
|
37
|
+
'--use', 'rspec',
|
38
|
+
# Interfaces and documentation classes
|
39
|
+
'--ignore-subject', 'Usmu::Deployment::RemoteFileInterface*',
|
40
|
+
'--ignore-subject', 'Usmu::Plugin::CoreHooks*',
|
41
|
+
args[:target] || 'Usmu*'
|
30
42
|
end
|
31
43
|
ENV['CODECLIMATE_REPO_TOKEN'] = old unless old.nil?
|
32
44
|
end
|
@@ -38,8 +50,7 @@ desc 'Clean up after tests'
|
|
38
50
|
task :clean do
|
39
51
|
[
|
40
52
|
'tmp',
|
41
|
-
'test/
|
42
|
-
'test/site/site',
|
53
|
+
'test-site/site',
|
43
54
|
current_gems,
|
44
55
|
].flatten.each do |f|
|
45
56
|
rm_r f if File.exist? f
|
@@ -49,9 +60,16 @@ end
|
|
49
60
|
namespace :gem do
|
50
61
|
desc 'Build gems'
|
51
62
|
task :build => [:clean] do
|
63
|
+
if ENV['BUNDLE_GEMFILE']
|
64
|
+
STDERR.puts 'This command will fail if run via bundler. If you are using RVM, please try running the following command:'
|
65
|
+
STDERR.puts " NOEXEC_DISABLE=1 #{File.basename($0)} #{ARGV.join(' ')}"
|
66
|
+
exit 1
|
67
|
+
end
|
68
|
+
|
52
69
|
mkdir 'pkg' unless File.exist? 'pkg'
|
53
|
-
|
54
|
-
|
70
|
+
platforms.each do |p|
|
71
|
+
ENV['BUILD_PLATFORM'] = p
|
72
|
+
sh *%w{gem build usmu.gemspec}
|
55
73
|
end
|
56
74
|
Dir['*.gem'].each do |gem|
|
57
75
|
mv gem, "pkg/#{gem}"
|
@@ -61,18 +79,18 @@ namespace :gem do
|
|
61
79
|
desc 'Install gem'
|
62
80
|
task :install => ['gem:build'] do
|
63
81
|
if RUBY_PLATFORM == 'java'
|
64
|
-
sh
|
82
|
+
sh *%W{gem install pkg/usmu-#{Usmu::VERSION}-java.gem}
|
65
83
|
else
|
66
|
-
sh
|
84
|
+
sh *%W{gem install pkg/usmu-#{Usmu::VERSION}.gem}
|
67
85
|
end
|
68
86
|
end
|
69
87
|
|
70
88
|
desc 'Deploy gems to rubygems'
|
71
89
|
task :deploy => ['gem:build'] do
|
72
90
|
current_gems.each do |gem|
|
73
|
-
sh
|
91
|
+
sh *%W{gem push #{gem}}
|
74
92
|
end
|
75
|
-
sh
|
93
|
+
sh *%W{git tag #{Usmu::VERSION}} if File.exist? '.git'
|
76
94
|
end
|
77
95
|
end
|
78
96
|
|
data/lib/usmu.rb
CHANGED
data/lib/usmu/configuration.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'yaml'
|
2
|
+
require 'usmu/metadata_service'
|
2
3
|
|
3
4
|
module Usmu
|
4
5
|
# This class is used to represent a configuration file. This file should be a YAML file and called `usmu.yml`
|
@@ -41,6 +42,10 @@ module Usmu
|
|
41
42
|
get_files source_path
|
42
43
|
end
|
43
44
|
|
45
|
+
def source_metadata
|
46
|
+
@source_metadata ||= MetadataService.new(source_path)
|
47
|
+
end
|
48
|
+
|
44
49
|
# @!attribute [r] destination_path
|
45
50
|
# @return [String] the full path to the destination folder
|
46
51
|
def destination_path
|
@@ -59,6 +64,10 @@ module Usmu
|
|
59
64
|
get_files layouts_path
|
60
65
|
end
|
61
66
|
|
67
|
+
def layouts_metadata
|
68
|
+
@layouts_metadata ||= MetadataService.new(layouts_path)
|
69
|
+
end
|
70
|
+
|
62
71
|
# @!attribute [r] layouts_path
|
63
72
|
# @return [String] the full path to the layouts folder
|
64
73
|
def includes_path
|
@@ -71,6 +80,10 @@ module Usmu
|
|
71
80
|
get_files includes_path
|
72
81
|
end
|
73
82
|
|
83
|
+
def includes_metadata
|
84
|
+
@includes_metadata ||= MetadataService.new(includes_path)
|
85
|
+
end
|
86
|
+
|
74
87
|
# An index accessor to directly access the configuration file. It should be noted that `['source']` and
|
75
88
|
# `#source_path` and other similar pairs will have different values. `['source']` is the raw value from the
|
76
89
|
# configuration file while the latter is a path on the system, potentially altered by the path from the current
|
@@ -161,7 +174,7 @@ module Usmu
|
|
161
174
|
def get_files(directory)
|
162
175
|
Dir["#{directory}/**/{*,.??*}"].
|
163
176
|
select {|f| not File.directory? f }.
|
164
|
-
select {|f| !f.match(
|
177
|
+
select {|f| !f.match(/[\.\/]meta\.yml$/) }.
|
165
178
|
map {|f| f[directory.length + 1, f.length] }.
|
166
179
|
select {|f| not excluded? f }
|
167
180
|
end
|
@@ -31,12 +31,15 @@ module Usmu
|
|
31
31
|
|
32
32
|
private
|
33
33
|
|
34
|
+
attr_reader :configuration
|
35
|
+
attr_reader :remote_files
|
36
|
+
|
34
37
|
def filter_files(f)
|
35
38
|
lstat = File.stat("#{@configuration.destination_path}/#{f}")
|
36
39
|
rstat = @remote_files.stat(f)
|
37
40
|
lhash = File.read("#{@configuration.destination_path}/#{f}")
|
38
41
|
|
39
|
-
hash_comparison = check_hash(lhash, rstat)
|
42
|
+
hash_comparison = !check_hash(lhash, rstat)
|
40
43
|
time_comparison = lstat.mtime > rstat[:mtime]
|
41
44
|
|
42
45
|
time_comparison || hash_comparison
|
@@ -45,18 +48,18 @@ module Usmu
|
|
45
48
|
def check_hash(lhash, rstat)
|
46
49
|
if not rstat[:md5].nil?
|
47
50
|
rhash = rstat[:md5]
|
48
|
-
Digest::MD5.hexdigest(lhash)
|
51
|
+
Digest::MD5.hexdigest(lhash).eql? rhash
|
49
52
|
elsif not rstat[:sha1].nil?
|
50
53
|
rhash = rstat[:sha1]
|
51
|
-
Digest::SHA1.hexdigest(lhash)
|
54
|
+
Digest::SHA1.hexdigest(lhash).eql? rhash
|
52
55
|
else
|
53
|
-
|
56
|
+
true
|
54
57
|
end
|
55
58
|
end
|
56
59
|
|
57
60
|
def local_files_list
|
58
61
|
Dir[@configuration.destination_path + '/**/{*,.??*}'].map do |f|
|
59
|
-
f[(@configuration.destination_path.length + 1)
|
62
|
+
f[(@configuration.destination_path.length + 1), f.length]
|
60
63
|
end
|
61
64
|
end
|
62
65
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'deep_merge'
|
3
|
+
|
4
|
+
module Usmu
|
5
|
+
class MetadataService
|
6
|
+
def initialize(folder)
|
7
|
+
@base = folder
|
8
|
+
end
|
9
|
+
|
10
|
+
def metadata(file)
|
11
|
+
last_folder = file.rindex('/')
|
12
|
+
base_meta = last_folder ? metadata(file[0..(last_folder - 1)]) : {}
|
13
|
+
|
14
|
+
metafile = if File.directory?(File.join(@base, file))
|
15
|
+
file + '/meta.yml'
|
16
|
+
else
|
17
|
+
dot_position = File.basename(file).rindex('.')
|
18
|
+
if (!dot_position.nil?) && dot_position > 0
|
19
|
+
file[0, file.rindex('.')] + '.meta.yml'
|
20
|
+
else
|
21
|
+
file + '.meta.yml'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
metafile = File.join(@base, metafile)
|
26
|
+
if File.exist? metafile
|
27
|
+
base_meta.deep_merge! YAML.load_file(metafile)
|
28
|
+
else
|
29
|
+
base_meta
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
attr_reader :base
|
36
|
+
end
|
37
|
+
end
|
data/lib/usmu/site_generator.rb
CHANGED
@@ -15,7 +15,7 @@ module Usmu
|
|
15
15
|
# @!attribute [r] layouts
|
16
16
|
# @return [Array<Usmu::Layout>] a list of layouts available in this website.
|
17
17
|
def layouts
|
18
|
-
@configuration.layouts_files.map {|l| Usmu::Template::Layout.new(@configuration, l) }
|
18
|
+
@configuration.layouts_files.map {|l| Usmu::Template::Layout.new(@configuration, l, @configuration.layouts_metadata.metadata(l)) }
|
19
19
|
end
|
20
20
|
|
21
21
|
# @!attribute [r] renderables
|
@@ -29,10 +29,11 @@ module Usmu
|
|
29
29
|
# Usmu::Template::StaticFile and thus be renderable, however most files will be one of the subclasses of that class.
|
30
30
|
def renderables
|
31
31
|
@configuration.source_files.map do |filename|
|
32
|
-
|
33
|
-
|
32
|
+
metadata = @configuration.source_metadata.metadata(filename)
|
33
|
+
if Usmu::Template::Layout.is_valid_file?('source', filename) && (!metadata['static'])
|
34
|
+
Usmu::Template::Page.new(@configuration, filename, metadata)
|
34
35
|
else
|
35
|
-
Usmu::Template::StaticFile.new(@configuration, filename)
|
36
|
+
Usmu::Template::StaticFile.new(@configuration, filename, metadata)
|
36
37
|
end
|
37
38
|
end
|
38
39
|
end
|
@@ -34,7 +34,8 @@ module Usmu
|
|
34
34
|
Dir["#{configuration.includes_path}/#{name}.*"].each do |f|
|
35
35
|
filename = File.basename(f)
|
36
36
|
if filename != "#{name}.meta.yml"
|
37
|
-
|
37
|
+
path = f[(configuration.includes_path.length + 1)..f.length]
|
38
|
+
return new(configuration, path, configuration.includes_metadata.metadata(path))
|
38
39
|
end
|
39
40
|
end
|
40
41
|
nil
|
data/lib/usmu/template/layout.rb
CHANGED
@@ -16,11 +16,11 @@ module Usmu
|
|
16
16
|
|
17
17
|
# @param configuration [Usmu::Configuration] The configuration for the website we're generating.
|
18
18
|
# @param name [String] The name of the file in the source directory.
|
19
|
+
# @param metadata [Hash] The metadata for the file.
|
19
20
|
# @param type [String] The type of template to use with the file. Used for testing purposes.
|
20
21
|
# @param content [String] The content of the file. Used for testing purposes.
|
21
|
-
|
22
|
-
|
23
|
-
super(configuration, name)
|
22
|
+
def initialize(configuration, name, metadata, type = nil, content = nil)
|
23
|
+
super(configuration, name, metadata, type, content)
|
24
24
|
|
25
25
|
if type.nil?
|
26
26
|
type = name.split('.').last
|
@@ -37,16 +37,6 @@ module Usmu
|
|
37
37
|
end
|
38
38
|
@content = content
|
39
39
|
|
40
|
-
if metadata.nil?
|
41
|
-
meta_file = "#{path}.meta.yml"
|
42
|
-
metadata = if File.exist? meta_file
|
43
|
-
YAML.load_file(meta_file)
|
44
|
-
else
|
45
|
-
{}
|
46
|
-
end
|
47
|
-
end
|
48
|
-
@metadata = metadata
|
49
|
-
|
50
40
|
@parent = Layout.find_layout(configuration, self.metadata['layout'])
|
51
41
|
|
52
42
|
# Don't use the parent if it would result in weirdness
|
@@ -64,7 +54,7 @@ module Usmu
|
|
64
54
|
# This will include any metadata from parent templates and default metadata
|
65
55
|
def metadata
|
66
56
|
if @parent.nil?
|
67
|
-
|
57
|
+
@configuration['default meta', default: {}].dup.deep_merge!(@metadata)
|
68
58
|
else
|
69
59
|
@parent.metadata.deep_merge!(@metadata)
|
70
60
|
end
|
@@ -252,7 +242,8 @@ module Usmu
|
|
252
242
|
Dir["#{layouts_path}/#{name}.*"].each do |f|
|
253
243
|
filename = File.basename(f)
|
254
244
|
if filename != "#{name}.meta.yml"
|
255
|
-
|
245
|
+
path = f[(layouts_path.length + 1)..f.length]
|
246
|
+
return new(configuration, path, configuration.layouts_metadata.metadata(path))
|
256
247
|
end
|
257
248
|
end
|
258
249
|
else
|
data/lib/usmu/template/page.rb
CHANGED
@@ -7,11 +7,11 @@ module Usmu
|
|
7
7
|
|
8
8
|
# @param configuration [Usmu::Configuration] The configuration for the website we're generating.
|
9
9
|
# @param name [String] The name of the file in the source directory.
|
10
|
+
# @param metadata [Hash] The metadata for the file.
|
10
11
|
# @param type [String] The type of template to use with the file. Used for testing purposes.
|
11
12
|
# @param content [String] The content of the file. Used for testing purposes.
|
12
|
-
|
13
|
-
|
14
|
-
super(configuration, name, type, content, metadata)
|
13
|
+
def initialize(configuration, name, metadata, type = nil, content = nil)
|
14
|
+
super(configuration, name, metadata, type, content)
|
15
15
|
|
16
16
|
current_parent = parent
|
17
17
|
until current_parent.nil?
|
@@ -11,16 +11,17 @@ module Usmu
|
|
11
11
|
|
12
12
|
# @param configuration [Usmu::Configuration] The configuration for the website we're generating.
|
13
13
|
# @param name [String] The name of the file in the source directory.
|
14
|
+
# @param metadata [Hash] The metadata for the file.
|
14
15
|
# @param type [String] The type of template to use with the file. Not used for StaticFile.
|
15
16
|
# Used for testing purposes.
|
16
17
|
# @param content [String] The content of the file. Used for testing purposes.
|
17
|
-
|
18
|
-
def initialize(configuration, name, type = nil, content = nil, metadata = nil)
|
18
|
+
def initialize(configuration, name, metadata, type = nil, content = nil)
|
19
19
|
@log = Logging.logger[self]
|
20
20
|
@log.debug("Creating <##{self.class.name} @name=\"#{name}\">")
|
21
21
|
|
22
22
|
@configuration = configuration
|
23
23
|
@name = name
|
24
|
+
@metadata = metadata
|
24
25
|
@type = type
|
25
26
|
@content = content
|
26
27
|
end
|
data/lib/usmu/ui/console.rb
CHANGED
@@ -20,6 +20,7 @@ module Usmu
|
|
20
20
|
# @param [Array<String>] args Command line arguments, ie. ARGV.
|
21
21
|
def initialize(args)
|
22
22
|
@log = Logging.logger[self]
|
23
|
+
initialize_logging args
|
23
24
|
@commander = initialize_commander(args)
|
24
25
|
|
25
26
|
Usmu.plugins.load_plugins
|
@@ -49,6 +50,30 @@ module Usmu
|
|
49
50
|
|
50
51
|
private
|
51
52
|
|
53
|
+
def initialize_logging(args)
|
54
|
+
i = 0
|
55
|
+
while i < args.length
|
56
|
+
case args[i]
|
57
|
+
when '-v', '--verbose'
|
58
|
+
args.delete_at i
|
59
|
+
Usmu.verbose_logging
|
60
|
+
when '-q', '--quiet'
|
61
|
+
args.delete_at i
|
62
|
+
Usmu.quiet_logging
|
63
|
+
when '--log'
|
64
|
+
if args.length > i + 1
|
65
|
+
args.delete_at i
|
66
|
+
path = args.delete_at i
|
67
|
+
Usmu.add_file_logger path
|
68
|
+
else
|
69
|
+
i += 1
|
70
|
+
end
|
71
|
+
else
|
72
|
+
i += 1
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
52
77
|
# Helper function to setup a Commander runner
|
53
78
|
# @return [Commander::Runner]
|
54
79
|
def initialize_commander(args)
|
@@ -58,10 +83,11 @@ module Usmu
|
|
58
83
|
commander.program :description, 'Static site generator powered by Tilt'
|
59
84
|
commander.program :int_message, 'Interrupt received, closing...'
|
60
85
|
|
61
|
-
commander.global_option('-v', '--verbose') { Usmu.verbose_logging }
|
62
|
-
commander.global_option('-q', '--quiet') { Usmu.quiet_logging }
|
63
|
-
commander.global_option('--log STRING', String) {|log| Usmu.add_file_logger(log) }
|
64
86
|
commander.global_option('--config STRING', String, &method(:load_configuration))
|
87
|
+
# Logging options are manually processed in #initialize_logging, but included here for user documentations sake
|
88
|
+
commander.global_option('-v', '--verbose')
|
89
|
+
commander.global_option('-q', '--quiet')
|
90
|
+
commander.global_option('--log STRING', String)
|
65
91
|
|
66
92
|
commander
|
67
93
|
end
|