voog-kit 0.3.9 → 0.4.0
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/bin/kit +5 -4
- data/lib/voog/dtk/filemanager.rb +80 -64
- data/lib/voog/dtk/version.rb +1 -1
- data/lib/voog/dtk/watcher.rb +75 -0
- data/spec/models/dtk/filemanager_spec.rb +2 -2
- data/voog-kit.gemspec +2 -2
- metadata +8 -14
- data/lib/voog/dtk/guard.rb +0 -152
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c7ac235dd563c5bfebdf3a3c1153c9898da4810
|
4
|
+
data.tar.gz: e3d3d75ae208a8af22c2198fb8882656dc4b6051
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9787c777adc1df1fd0d42f396677195af1a2c8766a780735f8a13f7428cea44abc0635fc78d882cb8495fc934700b413123897a8ad058dd1332992fbe68f7a5b
|
7
|
+
data.tar.gz: 04e62394e467681c2013a9683f919ee2fc93e560360bff2a3b579c7105c22f99d194ddf0e214c51111b920415ef2986832f7232326e8c2817ca24bbbfea1deaa
|
data/bin/kit
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require 'guard'
|
4
3
|
require 'gli'
|
5
4
|
|
6
5
|
$LOAD_PATH << File.expand_path('../lib', File.dirname(__FILE__))
|
7
6
|
require 'json'
|
8
7
|
|
9
8
|
require 'voog/dtk'
|
10
|
-
require 'voog/dtk/
|
9
|
+
require 'voog/dtk/watcher'
|
11
10
|
require 'voog/dtk/filemanager'
|
12
11
|
require 'voog/dtk/notifier'
|
13
12
|
require 'voog_api'
|
@@ -234,8 +233,10 @@ command :watch do |c|
|
|
234
233
|
c.flag *api_token_args
|
235
234
|
c.flag *site_args
|
236
235
|
c.action do |global_options, options, args|
|
237
|
-
|
238
|
-
|
236
|
+
@notifier.info "Watching #{Dir.pwd}/ for changes..."
|
237
|
+
@notifier.newline
|
238
|
+
watcher = Voog::Dtk::Watcher.new(@filemanager, @debug)
|
239
|
+
watcher.run
|
239
240
|
end
|
240
241
|
end
|
241
242
|
|
data/lib/voog/dtk/filemanager.rb
CHANGED
@@ -4,6 +4,7 @@ require 'json'
|
|
4
4
|
require 'fileutils'
|
5
5
|
require 'git'
|
6
6
|
require 'mime/types'
|
7
|
+
require 'pathname'
|
7
8
|
|
8
9
|
module Voog::Dtk
|
9
10
|
class FileManager
|
@@ -11,6 +12,14 @@ module Voog::Dtk
|
|
11
12
|
|
12
13
|
BOILERPLATE_URL = 'git@github.com:Edicy/design-boilerplate.git'
|
13
14
|
|
15
|
+
ASSET_FOLDER_MAP = {
|
16
|
+
'image' => 'images',
|
17
|
+
'stylesheet' => 'stylesheets',
|
18
|
+
'javascript' => 'javascripts',
|
19
|
+
'font' => 'assets',
|
20
|
+
'unknown' => 'assets'
|
21
|
+
}
|
22
|
+
|
14
23
|
def initialize(client, opts = {})
|
15
24
|
@client = client
|
16
25
|
@silent = opts.fetch(:silent, false)
|
@@ -68,6 +77,18 @@ module Voog::Dtk
|
|
68
77
|
end
|
69
78
|
end
|
70
79
|
|
80
|
+
def relative_path_of(file)
|
81
|
+
if file.include? Dir.pwd
|
82
|
+
pwd = Pathname.new Dir.pwd
|
83
|
+
file_path = Pathname.new file
|
84
|
+
file_path.relative_path_from(pwd).to_s
|
85
|
+
else
|
86
|
+
file
|
87
|
+
end
|
88
|
+
rescue
|
89
|
+
file
|
90
|
+
end
|
91
|
+
|
71
92
|
def add_to_manifest(files = nil)
|
72
93
|
return if files.nil?
|
73
94
|
@manifest = read_manifest
|
@@ -134,7 +155,7 @@ module Voog::Dtk
|
|
134
155
|
def remove_from_manifest(files = nil)
|
135
156
|
return if files.nil?
|
136
157
|
@manifest = read_manifest
|
137
|
-
files = (files.is_a? String) ? [files] : files
|
158
|
+
files = (files.is_a? String) ? [relative_path_of(files)] : files.map{ |f| relative_path_of(f) }
|
138
159
|
files.uniq.each do |file|
|
139
160
|
match = /^(component|layout|image|javascript|asset|stylesheet)s\/(.*)/.match(file)
|
140
161
|
next if match.nil?
|
@@ -434,16 +455,8 @@ module Voog::Dtk
|
|
434
455
|
&& asset.respond_to?(:asset_type) \
|
435
456
|
&& (asset.respond_to?(:public_url) || asset.respond_to?(:data))
|
436
457
|
|
437
|
-
folder_names = {
|
438
|
-
'image' => 'images',
|
439
|
-
'stylesheet' => 'stylesheets',
|
440
|
-
'javascript' => 'javascripts',
|
441
|
-
'font' => 'assets',
|
442
|
-
'unknown' => 'assets'
|
443
|
-
}
|
444
|
-
|
445
458
|
if valid
|
446
|
-
folder =
|
459
|
+
folder = ASSET_FOLDER_MAP.fetch(asset.asset_type, 'assets')
|
447
460
|
|
448
461
|
Dir.mkdir(folder) unless Dir.exist?(folder)
|
449
462
|
Dir.chdir(folder)
|
@@ -652,7 +665,8 @@ module Voog::Dtk
|
|
652
665
|
def layout_asset_id_map(assets=nil)
|
653
666
|
assets ||= get_layout_assets
|
654
667
|
assets.inject(Hash.new) do |memo, a|
|
655
|
-
|
668
|
+
filename = "#{ASSET_FOLDER_MAP.fetch(a.asset_type, 'assets')}/#{a.filename}"
|
669
|
+
memo[filename] = a.id
|
656
670
|
memo
|
657
671
|
end
|
658
672
|
end
|
@@ -669,9 +683,9 @@ module Voog::Dtk
|
|
669
683
|
# Find if provided file is a directory instead
|
670
684
|
files.each_with_index do |file, index|
|
671
685
|
next if file.is_a? Array
|
672
|
-
if Dir.exist? file
|
673
|
-
subfiles = Dir.new(file).entries.reject{|e| e =~ /^(\.|\.\.)$/ } # Keep only normal subfiles
|
674
|
-
subfiles.map! { |subfile| subfile = "#{file[/[^\/]*/]}/#{subfile}" } # Prepend folder name
|
686
|
+
if Dir.exist? relative_path_of(file)
|
687
|
+
subfiles = Dir.new(relative_path_of(file)).entries.reject{|e| e =~ /^(\.|\.\.)$/ } # Keep only normal subfiles
|
688
|
+
subfiles.map! { |subfile| subfile = "#{relative_path_of(file)[/[^\/]*/]}/#{subfile}" } # Prepend folder name
|
675
689
|
files[index] = subfiles # Insert as Array so sub-subfolders won't get processed again
|
676
690
|
end
|
677
691
|
end
|
@@ -683,88 +697,89 @@ module Voog::Dtk
|
|
683
697
|
|
684
698
|
files.each_with_index do |file, index|
|
685
699
|
@notifier.newline if index > 0
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
700
|
+
relative_filename = relative_path_of(file)
|
701
|
+
if File.exist?(relative_filename)
|
702
|
+
if uploadable?(relative_filename)
|
703
|
+
if relative_filename =~ /^(layout|component)s\/[^\/]+\.tpl$/ # if layout/component
|
704
|
+
if local_layouts.include?(relative_filename)
|
705
|
+
if layouts.key?(relative_filename)
|
706
|
+
@notifier.info "Updating layout file #{relative_filename}..."
|
707
|
+
if update_layout(layouts[relative_filename], File.read(relative_filename, encoding: 'UTF-8'))
|
693
708
|
@notifier.success 'OK!'
|
694
709
|
else
|
695
|
-
@notifier.error "Cannot update layout file #{
|
710
|
+
@notifier.error "Cannot update layout file #{relative_filename}!"
|
696
711
|
end
|
697
712
|
else
|
698
|
-
@notifier.warning "Remote file #{
|
699
|
-
@notifier.info "\nTrying to create layout file #{
|
700
|
-
if create_remote_layout(
|
713
|
+
@notifier.warning "Remote file #{relative_filename} not found!"
|
714
|
+
@notifier.info "\nTrying to create layout file #{relative_filename}..."
|
715
|
+
if create_remote_layout(relative_filename)
|
701
716
|
@notifier.success 'OK!'
|
702
717
|
else
|
703
|
-
@notifier.error "Unable to create layout file #{
|
718
|
+
@notifier.error "Unable to create layout file #{relative_filename}!"
|
704
719
|
end
|
705
720
|
end
|
706
721
|
else
|
707
|
-
@notifier.warning "Layout file #{
|
722
|
+
@notifier.warning "Layout file #{relative_filename} not found in manifest! Skipping."
|
708
723
|
end
|
709
|
-
elsif
|
710
|
-
if local_assets.include?
|
711
|
-
if layout_assets.key?
|
712
|
-
if is_editable?(
|
713
|
-
@notifier.info "Updating layout asset file #{
|
714
|
-
if update_layout_asset(layout_assets[
|
724
|
+
elsif relative_filename =~ /^(asset|image|stylesheet|javascript)s\/[^\/]+\..+$/ # if other asset
|
725
|
+
if local_assets.include? relative_filename
|
726
|
+
if layout_assets.key? relative_filename
|
727
|
+
if is_editable?(relative_filename)
|
728
|
+
@notifier.info "Updating layout asset file #{relative_filename}..."
|
729
|
+
if update_layout_asset(layout_assets[relative_filename], File.read(relative_filename, encoding: 'UTF-8'))
|
715
730
|
@notifier.success 'OK!'
|
716
731
|
else
|
717
|
-
@notifier.error "Unable to update file #{
|
732
|
+
@notifier.error "Unable to update file #{relative_filename}!"
|
718
733
|
end
|
719
734
|
else
|
720
735
|
if @overwrite
|
721
|
-
@notifier.info "Re-uploading file #{
|
722
|
-
if delete_layout_asset(layout_assets[
|
736
|
+
@notifier.info "Re-uploading file #{relative_filename}..."
|
737
|
+
if delete_layout_asset(layout_assets[relative_filename]) && create_remote_file(relative_filename)
|
723
738
|
@notifier.success 'OK!'
|
724
739
|
else
|
725
|
-
@notifier.error "Unable to update file #{
|
740
|
+
@notifier.error "Unable to update file #{relative_filename}!"
|
726
741
|
end
|
727
742
|
else
|
728
|
-
@notifier.warning "Not allowed to update file #{
|
743
|
+
@notifier.warning "Not allowed to update file #{relative_filename}!"
|
729
744
|
end
|
730
745
|
end
|
731
746
|
else
|
732
|
-
@notifier.warning "Remote file #{
|
733
|
-
@notifier.info "\nTrying to create file #{
|
734
|
-
if create_remote_file(
|
747
|
+
@notifier.warning "Remote file #{relative_filename} not found!"
|
748
|
+
@notifier.info "\nTrying to create file #{relative_filename}..."
|
749
|
+
if create_remote_file(relative_filename)
|
735
750
|
@notifier.success 'OK!'
|
736
751
|
else
|
737
|
-
@notifier.error "Unable to create file #{
|
752
|
+
@notifier.error "Unable to create file #{relative_filename}!"
|
738
753
|
end
|
739
754
|
end
|
740
755
|
else
|
741
|
-
@notifier.warning "Asset file #{
|
756
|
+
@notifier.warning "Asset file #{relative_filename} not found in manifest! Skipping."
|
742
757
|
end
|
743
|
-
elsif Dir.exist?
|
744
|
-
@notifier.warning "Not allowed to push subfolder #{
|
758
|
+
elsif Dir.exist? relative_filename
|
759
|
+
@notifier.warning "Not allowed to push subfolder #{relative_filename}!"
|
745
760
|
else
|
746
|
-
@notifier.warning "Not allowed to push file #{
|
761
|
+
@notifier.warning "Not allowed to push file #{relative_filename}!"
|
747
762
|
end
|
748
763
|
else
|
749
|
-
@notifier.error "Cannot upload file #{
|
764
|
+
@notifier.error "Cannot upload file #{relative_filename}!"
|
750
765
|
end
|
751
766
|
else
|
752
|
-
@notifier.error "File #{
|
767
|
+
@notifier.error "File #{relative_filename} not found!"
|
753
768
|
end
|
754
769
|
end
|
755
770
|
@notifier.newline
|
756
771
|
end
|
757
772
|
|
758
773
|
def is_editable?(file)
|
759
|
-
folder = file.split('/').first
|
760
|
-
extension = file.split('/').last.split('.').last
|
774
|
+
folder = relative_path_of(file).split('/').first
|
775
|
+
extension = relative_path_of(file).split('/').last.split('.').last
|
761
776
|
|
762
777
|
(%w(stylesheets javascripts).include? folder) && (%w(js css).include? extension)
|
763
778
|
end
|
764
779
|
|
765
780
|
def content_type_for(file)
|
766
|
-
folder = file.split('/').first
|
767
|
-
if is_editable?(file)
|
781
|
+
folder = relative_path_of(file).split('/').first
|
782
|
+
if is_editable?(relative_path_of(file))
|
768
783
|
if folder == 'stylesheets'
|
769
784
|
'text/css'
|
770
785
|
elsif folder == 'javascripts'
|
@@ -772,7 +787,7 @@ module Voog::Dtk
|
|
772
787
|
end
|
773
788
|
else
|
774
789
|
if folder == 'images'
|
775
|
-
"image/#{file.split('/').last.split('.').last}"
|
790
|
+
"image/#{relative_path_of(file).split('/').last.split('.').last}"
|
776
791
|
elsif folder == 'assets'
|
777
792
|
'unknown/unknown'
|
778
793
|
end
|
@@ -841,7 +856,7 @@ module Voog::Dtk
|
|
841
856
|
end
|
842
857
|
|
843
858
|
def add_files(names)
|
844
|
-
new_files = add_to_manifest names
|
859
|
+
new_files = add_to_manifest names.map {|n| relative_path_of(n)}
|
845
860
|
upload_files new_files.map { |f| f.fetch('file') } unless new_files.empty?
|
846
861
|
end
|
847
862
|
|
@@ -858,14 +873,15 @@ module Voog::Dtk
|
|
858
873
|
end
|
859
874
|
|
860
875
|
def remove_remote_file(file)
|
861
|
-
|
876
|
+
relative_filename = relative_path_of(file)
|
877
|
+
folder, filename = relative_filename.split('/')
|
862
878
|
return unless (folder && filename)
|
863
879
|
|
864
880
|
asset_ids = layout_asset_id_map
|
865
881
|
layout_ids = layout_id_map
|
866
882
|
|
867
|
-
if is_asset?
|
868
|
-
id = asset_ids.fetch(
|
883
|
+
if is_asset? relative_filename
|
884
|
+
id = asset_ids.fetch(relative_filename, nil)
|
869
885
|
|
870
886
|
unless id.nil?
|
871
887
|
if delete_layout_asset(id)
|
@@ -874,31 +890,31 @@ module Voog::Dtk
|
|
874
890
|
@notifier.error "Failed to remove remote asset '#{filename}'!" unless @silent
|
875
891
|
end
|
876
892
|
end
|
877
|
-
elsif is_layout?
|
893
|
+
elsif is_layout? relative_filename
|
878
894
|
filename = filename.gsub('.tpl', '')
|
879
|
-
id = layout_ids.fetch(
|
895
|
+
id = layout_ids.fetch(relative_filename, nil)
|
880
896
|
|
881
897
|
unless id.nil?
|
882
898
|
if delete_layout(id)
|
883
899
|
@notifier.info "Removed remote layout '#{filename}'." unless @silent
|
884
900
|
else
|
885
|
-
@notifier.error "Failed to remove remote layout '#{
|
901
|
+
@notifier.error "Failed to remove remote layout '#{relative_filename}'!" unless @silent
|
886
902
|
end
|
887
903
|
end
|
888
904
|
else
|
889
|
-
@notifier.error "Invalid filename: '#{
|
905
|
+
@notifier.error "Invalid filename: '#{relative_filename}'"
|
890
906
|
end
|
891
907
|
@notifier.newline
|
892
908
|
end
|
893
909
|
|
894
910
|
def uploadable?(file)
|
895
911
|
if file.is_a? String
|
896
|
-
!(file =~
|
912
|
+
!(relative_path_of(file) =~ /(component|layout|image|asset|javascript|stylesheet)s\/(.+)/).nil?
|
897
913
|
else
|
898
914
|
begin
|
899
|
-
uploadable? file.try(:to_s)
|
915
|
+
uploadable? (relative_path_of(file).is_a? String) ? relative_path_of(file).try(:to_s) : relative_path_of(file)
|
900
916
|
rescue
|
901
|
-
raise "Cannot upload file '#{file}'!".red
|
917
|
+
raise "Cannot upload file '#{relative_path_of(file)}'!".red
|
902
918
|
end
|
903
919
|
end
|
904
920
|
end
|
data/lib/voog/dtk/version.rb
CHANGED
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'listen'
|
2
|
+
# module Guard
|
3
|
+
# class VoogKit < Plugin
|
4
|
+
# attr_accessor :options, :filemanager, :debug
|
5
|
+
|
6
|
+
# def initialize(options = {})
|
7
|
+
# @options = options
|
8
|
+
# super(options)
|
9
|
+
# end
|
10
|
+
|
11
|
+
# def run_on_additions(paths)
|
12
|
+
# @filemanager.add_files paths
|
13
|
+
# rescue => e
|
14
|
+
# @filemanager.notifier.newline
|
15
|
+
# Voog::Dtk.handle_exception e, @debug, @filemanager.notifier
|
16
|
+
# end
|
17
|
+
|
18
|
+
# def run_on_removals(paths)
|
19
|
+
# @filemanager.remove_files paths
|
20
|
+
# rescue => e
|
21
|
+
# @filemanager.notifier.newline
|
22
|
+
# Voog::Dtk.handle_exception e, @debug, @filemanager.notifier
|
23
|
+
# end
|
24
|
+
|
25
|
+
# def run_on_modifications(paths)
|
26
|
+
# @filemanager.upload_files paths
|
27
|
+
# @filemanager.notifier.newline
|
28
|
+
# rescue => e
|
29
|
+
# @filemanager.notifier.newline
|
30
|
+
# Voog::Dtk.handle_exception e, @debug, @filemanager.notifier
|
31
|
+
# end
|
32
|
+
# end
|
33
|
+
# end
|
34
|
+
|
35
|
+
module Voog::Dtk
|
36
|
+
class Watcher
|
37
|
+
def initialize(filemanager, debug=false)
|
38
|
+
paths = ['layouts/', 'components/', 'assets/', 'javascripts/', 'stylesheets/', 'images/']
|
39
|
+
|
40
|
+
@filemanager = filemanager
|
41
|
+
@debug = debug
|
42
|
+
@listener = Listen.to(*paths) do |modified, added, removed|
|
43
|
+
handle_added added unless added.empty?
|
44
|
+
handle_removed removed unless removed.empty?
|
45
|
+
handle_modified modified unless modified.empty?
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def handle_added(added)
|
50
|
+
@filemanager.add_files added
|
51
|
+
rescue => e
|
52
|
+
@filemanager.notifier.newline
|
53
|
+
Voog::Dtk.handle_exception e, @debug, @filemanager.notifier
|
54
|
+
end
|
55
|
+
|
56
|
+
def handle_removed(removed)
|
57
|
+
@filemanager.remove_files removed
|
58
|
+
rescue => e
|
59
|
+
@filemanager.notifier.newline
|
60
|
+
Voog::Dtk.handle_exception e, @debug, @filemanager.notifier
|
61
|
+
end
|
62
|
+
|
63
|
+
def handle_modified(modified)
|
64
|
+
@filemanager.upload_files modified
|
65
|
+
rescue => e
|
66
|
+
@filemanager.notifier.newline
|
67
|
+
Voog::Dtk.handle_exception e, @debug, @filemanager.notifier
|
68
|
+
end
|
69
|
+
|
70
|
+
def run
|
71
|
+
@listener.start
|
72
|
+
sleep
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -194,8 +194,8 @@ describe Voog::Dtk::FileManager do
|
|
194
194
|
end
|
195
195
|
end
|
196
196
|
|
197
|
-
context 'with existing data'
|
198
|
-
it 'doesn\'t add a duplicate file' do
|
197
|
+
context 'with existing data'do
|
198
|
+
it 'doesn\'t add a duplicate file', focus: true do
|
199
199
|
testfiles = ['components/test_layout.tpl', 'layouts/testfile.tpl']
|
200
200
|
@filemanager.add_to_manifest testfiles
|
201
201
|
@manifest = @filemanager.read_manifest
|
data/voog-kit.gemspec
CHANGED
@@ -27,8 +27,8 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_development_dependency 'guard-rspec'
|
28
28
|
|
29
29
|
spec.add_runtime_dependency 'gli', '2.10.0'
|
30
|
-
spec.add_runtime_dependency 'pry'
|
31
|
-
spec.add_runtime_dependency '
|
30
|
+
spec.add_runtime_dependency 'pry'
|
31
|
+
spec.add_runtime_dependency 'listen', '~> 3.0'
|
32
32
|
spec.add_runtime_dependency 'git'
|
33
33
|
spec.add_runtime_dependency 'parseconfig'
|
34
34
|
spec.add_runtime_dependency 'voog_api', '~> 0.0.7'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: voog-kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikk Pristavka
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-12-
|
12
|
+
date: 2015-12-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -87,32 +87,26 @@ dependencies:
|
|
87
87
|
requirements:
|
88
88
|
- - ">="
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: 0
|
90
|
+
version: '0'
|
91
91
|
type: :runtime
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
95
|
- - ">="
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: 0
|
97
|
+
version: '0'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
|
-
name:
|
99
|
+
name: listen
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- - "
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
version: 2.3.0
|
105
|
-
- - "<"
|
102
|
+
- - "~>"
|
106
103
|
- !ruby/object:Gem::Version
|
107
104
|
version: '3.0'
|
108
105
|
type: :runtime
|
109
106
|
prerelease: false
|
110
107
|
version_requirements: !ruby/object:Gem::Requirement
|
111
108
|
requirements:
|
112
|
-
- - "
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
version: 2.3.0
|
115
|
-
- - "<"
|
109
|
+
- - "~>"
|
116
110
|
- !ruby/object:Gem::Version
|
117
111
|
version: '3.0'
|
118
112
|
- !ruby/object:Gem::Dependency
|
@@ -224,9 +218,9 @@ files:
|
|
224
218
|
- bin/kit
|
225
219
|
- lib/voog/dtk.rb
|
226
220
|
- lib/voog/dtk/filemanager.rb
|
227
|
-
- lib/voog/dtk/guard.rb
|
228
221
|
- lib/voog/dtk/notifier.rb
|
229
222
|
- lib/voog/dtk/version.rb
|
223
|
+
- lib/voog/dtk/watcher.rb
|
230
224
|
- spec/fixtures/.DS_Store
|
231
225
|
- spec/fixtures/.voog
|
232
226
|
- spec/fixtures/.voog2
|
data/lib/voog/dtk/guard.rb
DELETED
@@ -1,152 +0,0 @@
|
|
1
|
-
require 'guard'
|
2
|
-
require 'guard/guard'
|
3
|
-
require 'guard/plugin'
|
4
|
-
|
5
|
-
module Guard
|
6
|
-
class Shell < Guard
|
7
|
-
VERSION = '0.5.2'
|
8
|
-
|
9
|
-
# Calls #run_all if the :all_on_start option is present.
|
10
|
-
def start
|
11
|
-
run_all if options[:all_on_start]
|
12
|
-
end
|
13
|
-
|
14
|
-
# Call #run_on_change for all files which match this guard.
|
15
|
-
def run_all
|
16
|
-
run_on_modifications(Watcher.match_files(self, Dir.glob('{,**/}*{,.*}').uniq))
|
17
|
-
end
|
18
|
-
|
19
|
-
# Print the result of the command(s), if there are results to be printed.
|
20
|
-
def run_on_modifications(res)
|
21
|
-
puts res if res
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
module Voog::Dtk
|
27
|
-
class ::Guard::Watchman < ::Guard::Plugin
|
28
|
-
attr_accessor :options, :filemanager, :debug
|
29
|
-
|
30
|
-
# Initializes a Guard plugin.
|
31
|
-
# Don't do any work here, especially as Guard plugins get initialized even if they are not in an active group!
|
32
|
-
#
|
33
|
-
# @param [Hash] options the custom Guard plugin options
|
34
|
-
# @option options [Array<Guard::Watcher>] watchers the Guard plugin file watchers
|
35
|
-
# @option options [Symbol] group the group this Guard plugin belongs to
|
36
|
-
# @option options [Boolean] any_return allow any object to be returned from a watcher
|
37
|
-
#
|
38
|
-
def initialize(options = {})
|
39
|
-
super
|
40
|
-
@options = options
|
41
|
-
end
|
42
|
-
|
43
|
-
# Called once when Guard starts. Please override initialize method to init stuff.
|
44
|
-
#
|
45
|
-
# @raise [:task_has_failed] when start has failed
|
46
|
-
# @return [Object] the task result
|
47
|
-
#
|
48
|
-
def start
|
49
|
-
::Guard::UI.info 'Guard::Voog is running'
|
50
|
-
# run_all
|
51
|
-
end
|
52
|
-
|
53
|
-
def debug=(debug)
|
54
|
-
::Guard::UI.info 'Debug mode is enabed' if debug
|
55
|
-
@debug = debug
|
56
|
-
end
|
57
|
-
|
58
|
-
# Called when `stop|quit|exit|s|q|e + enter` is pressed (when Guard quits).
|
59
|
-
#
|
60
|
-
# @raise [:task_has_failed] when stop has failed
|
61
|
-
# @return [Object] the task result
|
62
|
-
#
|
63
|
-
def stop
|
64
|
-
::Guard::UI.info 'Guard::Voog stopped'
|
65
|
-
end
|
66
|
-
|
67
|
-
# Called when `reload|r|z + enter` is pressed.
|
68
|
-
# This method should be mainly used for "reload" (really!) actions like reloading passenger/spork/bundler/...
|
69
|
-
#
|
70
|
-
# @raise [:task_has_failed] when reload has failed
|
71
|
-
# @return [Object] the task result
|
72
|
-
#
|
73
|
-
# def reload
|
74
|
-
# end
|
75
|
-
|
76
|
-
# Called when just `enter` is pressed
|
77
|
-
# This method should be principally used for long action like running all specs/tests/...
|
78
|
-
#
|
79
|
-
# @raise [:task_has_failed] when run_all has failed
|
80
|
-
# @return [Object] the task result
|
81
|
-
#
|
82
|
-
# def run_all
|
83
|
-
# end
|
84
|
-
|
85
|
-
# Default behaviour on file(s) changes that the Guard plugin watches.
|
86
|
-
# @param [Array<String>] paths the changes files or paths
|
87
|
-
# @raise [:task_has_failed] when run_on_change has failed
|
88
|
-
# @return [Object] the task result
|
89
|
-
#
|
90
|
-
# def run_on_changes(paths)
|
91
|
-
# end
|
92
|
-
|
93
|
-
# Called on file(s) additions that the Guard plugin watches.
|
94
|
-
#
|
95
|
-
# @param [Array<String>] paths the changes files or paths
|
96
|
-
# @raise [:task_has_failed] when run_on_additions has failed
|
97
|
-
# @return [Object] the task result
|
98
|
-
#
|
99
|
-
def run_on_additions(paths)
|
100
|
-
@filemanager.add_files paths
|
101
|
-
rescue => e
|
102
|
-
@filemanager.notifier.newline
|
103
|
-
Voog::Dtk.handle_exception e, @debug, @filemanager.notifier
|
104
|
-
end
|
105
|
-
|
106
|
-
# Called on file(s) removals that the Guard plugin watches.
|
107
|
-
#
|
108
|
-
# @param [Array<String>] paths the changes files or paths
|
109
|
-
# @raise [:task_has_failed] when run_on_removals has failed
|
110
|
-
# @return [Object] the task result
|
111
|
-
#
|
112
|
-
def run_on_removals(paths)
|
113
|
-
@filemanager.remove_files paths
|
114
|
-
rescue => e
|
115
|
-
@filemanager.notifier.newline
|
116
|
-
Voog::Dtk.handle_exception e, @debug, @filemanager.notifier
|
117
|
-
end
|
118
|
-
|
119
|
-
# Called on file(s) modifications that the Guard plugin watches.
|
120
|
-
#
|
121
|
-
# @param [Array<String>] paths the changes files or paths
|
122
|
-
# @raise [:task_has_failed] when run_on_modifications has failed
|
123
|
-
# @return [Object] the task result
|
124
|
-
#
|
125
|
-
def run_on_modifications(paths)
|
126
|
-
@filemanager.upload_files paths
|
127
|
-
@filemanager.notifier.newline
|
128
|
-
rescue => e
|
129
|
-
@filemanager.notifier.newline
|
130
|
-
Voog::Dtk.handle_exception e, @debug, @filemanager.notifier
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
class Guuard
|
135
|
-
def initialize(filemanager, debug=false)
|
136
|
-
@filemanager = filemanager
|
137
|
-
@debug = debug
|
138
|
-
end
|
139
|
-
|
140
|
-
def run
|
141
|
-
guardfile = <<-EOF
|
142
|
-
guard 'watchman' do
|
143
|
-
watch(%r{^(layout|component|image|asset|javascript|stylesheet)s/.*})
|
144
|
-
end
|
145
|
-
EOF
|
146
|
-
|
147
|
-
::Guard.start(guardfile_contents: guardfile)
|
148
|
-
::Guard.guards('watchman').first.filemanager = @filemanager
|
149
|
-
::Guard.guards('watchman').first.debug = @debug
|
150
|
-
end
|
151
|
-
end
|
152
|
-
end
|