watch_tower 0.0.1.beta7 → 0.0.1.beta8
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.
- data/CREDITS.md +34 -0
- data/README.md +3 -33
- data/lib/watch_tower/editor/vim.rb +39 -29
- data/lib/watch_tower/server/assets/javascripts/datepicker.coffee +8 -1
- data/lib/watch_tower/server/assets/javascripts/file_tree.coffee +5 -3
- data/lib/watch_tower/server/public/assets/{application-6a1be75d4fd6a545faceb638e47a2486.js → application-386eb3efa6bdd52fa22b0b715d80fcc9.js} +18 -7
- data/lib/watch_tower/version.rb +1 -1
- data/spec/watch_tower/editor/vim_spec.rb +54 -14
- data/watch_tower.gemspec +0 -3
- metadata +53 -63
data/CREDITS.md
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# Credits
|
2
|
+
|
3
|
+
This project is heavily inspired by
|
4
|
+
[timetap](https://github.com/elia/timetap) created by [Elia
|
5
|
+
Schito](https://github.com/elia).
|
6
|
+
|
7
|
+
It also uses a number of open source
|
8
|
+
projects including, but not limited to:
|
9
|
+
|
10
|
+
- [rb-appscript](http://appscript.sourceforge.net/)
|
11
|
+
- [activesupport](https://github.com/rails/rails)
|
12
|
+
- [activerecord](https://github.com/rails/rails)
|
13
|
+
- [sinatra](https://github.com/sinatra/sinatra)
|
14
|
+
- [sinatra-snap](http://github.com/bcarlso/snap)
|
15
|
+
- [haml](http://haml-lang.com)
|
16
|
+
- [grit](https://github.com/mojombo/grit)
|
17
|
+
- [coffee-script](http://github.com/josh/ruby-coffee-script)
|
18
|
+
- [uglifier](https://github.com/lautis/uglifier)
|
19
|
+
- [sass](http://sass-lang.com)
|
20
|
+
- [sprockets](http://getsprockets.org/)
|
21
|
+
- [guard](https://github.com/guard/guard)
|
22
|
+
- [guard-bundler](https://github.com/guard/guard-bundler)
|
23
|
+
- [guard-rspec](https://github.com/guard/guard-rspec)
|
24
|
+
- [guard-sprockets2](https://github.com/stevehodgkiss/guard-sprockets2)
|
25
|
+
- [yard](http://github.com/lsegal/yard)
|
26
|
+
- [rspec](http://github.com/rspec/rspec)
|
27
|
+
- [rspec-rails](http://github.com/rspec/rspec-rails)
|
28
|
+
- [capybara](https://github.com/jnicklas/capybara)
|
29
|
+
- [launchy](https://github.com/copiousfreetime/launchy)
|
30
|
+
- [mocha](https://github.com/floehopper/mocha)
|
31
|
+
- [factory_girl](https://github.com/thoughtbot/factory_girl)
|
32
|
+
- [timecop](https://github.com/jtrupiano/timecop)
|
33
|
+
- [pry](https://github.com/pry/pry)
|
34
|
+
- [cronedit](http://cronedit.rubyforge.org)
|
data/README.md
CHANGED
@@ -119,39 +119,9 @@ in mind for the project
|
|
119
119
|
|
120
120
|
# Credits
|
121
121
|
|
122
|
-
|
123
|
-
[
|
124
|
-
|
125
|
-
|
126
|
-
It also uses a number of open source
|
127
|
-
projects including, but not limited to:
|
128
|
-
|
129
|
-
- [rb-appscript](http://appscript.sourceforge.net/)
|
130
|
-
- [activesupport](https://github.com/rails/rails)
|
131
|
-
- [activerecord](https://github.com/rails/rails)
|
132
|
-
- [sinatra](https://github.com/sinatra/sinatra)
|
133
|
-
- [sinatra-snap](http://github.com/bcarlso/snap)
|
134
|
-
- [haml](http://haml-lang.com)
|
135
|
-
- [grit](https://github.com/mojombo/grit)
|
136
|
-
- [coffee-script](http://github.com/josh/ruby-coffee-script)
|
137
|
-
- [uglifier](https://github.com/lautis/uglifier)
|
138
|
-
- [sass](http://sass-lang.com)
|
139
|
-
- [sprockets](http://getsprockets.org/)
|
140
|
-
- [guard](https://github.com/guard/guard)
|
141
|
-
- [guard-bundler](https://github.com/guard/guard-bundler)
|
142
|
-
- [guard-rspec](https://github.com/guard/guard-rspec)
|
143
|
-
- [guard-sprockets2](https://github.com/stevehodgkiss/guard-sprockets2)
|
144
|
-
- [yard](http://github.com/lsegal/yard)
|
145
|
-
- [rspec](http://github.com/rspec/rspec)
|
146
|
-
- [rspec-rails](http://github.com/rspec/rspec-rails)
|
147
|
-
- [capybara](https://github.com/jnicklas/capybara)
|
148
|
-
- [launchy](https://github.com/copiousfreetime/launchy)
|
149
|
-
- [mocha](https://github.com/floehopper/mocha)
|
150
|
-
- [factory_girl](https://github.com/thoughtbot/factory_girl)
|
151
|
-
- [timecop](https://github.com/jtrupiano/timecop)
|
152
|
-
- [pry](https://github.com/pry/pry)
|
153
|
-
- [systemu](https://github.com/ahoward/systemu)
|
154
|
-
- [cronedit](http://cronedit.rubyforge.org)
|
122
|
+
Please see the
|
123
|
+
[CREDITS.md](https://github.com/TechnoGate/watch_tower/blob/master/CREDITS.md) file.
|
124
|
+
|
155
125
|
|
156
126
|
# License
|
157
127
|
|
@@ -1,20 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
|
-
|
4
|
-
# work at all for gvim, in fact calling systemu just returns an empty stdout.
|
5
|
-
# TODO: Figure out if it's a problem on my box or systemu's bug
|
6
|
-
|
7
|
-
# require 'systemu'
|
8
|
-
class Object
|
9
|
-
# This method returns the output of a system command
|
10
|
-
# much like the original systemu method
|
11
|
-
#
|
12
|
-
# @param [String] cmd: The command to run.
|
13
|
-
# @return [Array] formed of status, stdout, stderr
|
14
|
-
def systemu(cmd)
|
15
|
-
[0, `#{cmd}`, '']
|
16
|
-
end
|
17
|
-
end
|
3
|
+
require 'open3'
|
18
4
|
|
19
5
|
module WatchTower
|
20
6
|
module Editor
|
@@ -39,18 +25,21 @@ module WatchTower
|
|
39
25
|
#
|
40
26
|
# @return [String] The editor's version
|
41
27
|
def version
|
28
|
+
version = nil
|
42
29
|
if is_running?
|
43
|
-
|
44
|
-
|
45
|
-
|
30
|
+
Open3.popen2 "#{editor} --version" do |stdin, stdout, wait_thr|
|
31
|
+
version = stdout.read.scan(/^VIM - Vi IMproved (\d+\.\d+).*/).first.first
|
32
|
+
end
|
46
33
|
end
|
34
|
+
|
35
|
+
version
|
47
36
|
end
|
48
37
|
|
49
38
|
# Is it running ?
|
50
39
|
#
|
51
40
|
# @return [Boolean] Is ViM running ?
|
52
41
|
def is_running?
|
53
|
-
servers.any?
|
42
|
+
servers && servers.any?
|
54
43
|
end
|
55
44
|
|
56
45
|
# Return the open documents of all vim servers
|
@@ -58,14 +47,24 @@ module WatchTower
|
|
58
47
|
# @return [Array] Absolute paths to all open documents
|
59
48
|
def current_paths
|
60
49
|
if is_running?
|
61
|
-
# Make sure All servers has loaded our function
|
62
|
-
send_extensions_to_editor
|
63
50
|
# Init documents
|
64
51
|
documents = []
|
65
52
|
servers.each do |server|
|
66
|
-
|
53
|
+
stdin, stdout, stderr, wait_thr = Open3.popen3 "#{editor} --servername #{server} --remote-expr 'watchtower#ls()'"
|
54
|
+
|
55
|
+
if stderr.read =~ /Invalid expression received: Send expression failed/i
|
56
|
+
# Close the pipes
|
57
|
+
[stdin, stdout, stderr].each { |p| p.try(:close) }
|
58
|
+
# Send the extenstion to the ViM server
|
59
|
+
send_extensions_to_editor
|
60
|
+
# Ask ViM for the documents again
|
61
|
+
stdin, stdout, stderr, wait_thr = Open3.popen3 "#{editor} --servername #{server} --remote-expr 'watchtower#ls()'"
|
62
|
+
end
|
67
63
|
|
68
|
-
documents += stdout.split("\n")
|
64
|
+
documents += stdout.read.split("\n")
|
65
|
+
|
66
|
+
# Close the pipes
|
67
|
+
[stdin, stdout, stderr].each { |p| p.try(:close) }
|
69
68
|
end
|
70
69
|
|
71
70
|
documents.uniq
|
@@ -81,9 +80,12 @@ module WatchTower
|
|
81
80
|
# Get the absolute path of the command
|
82
81
|
vim_path = WatchTower.which(vim)
|
83
82
|
# Print the help of the command
|
84
|
-
|
83
|
+
stdin, stdout, wait_thr = Open3.popen2 "#{vim_path} --help" if vim_path
|
85
84
|
# This command is compatible if it exists and if it respond to --remote
|
86
|
-
vim_path && stdout =~ %r(--remote) ? vim_path : nil
|
85
|
+
r = vim_path && (vim != 'vim' || stdout.read =~ %r(--remote)) ? vim_path : nil
|
86
|
+
# Close the pipes
|
87
|
+
[stdin, stdout].each { |p| p.try(:close) }
|
88
|
+
r
|
87
89
|
end.reject { |vim| vim.nil? }
|
88
90
|
end
|
89
91
|
|
@@ -91,21 +93,29 @@ module WatchTower
|
|
91
93
|
#
|
92
94
|
# @return [String|nil] The editor command
|
93
95
|
def editor
|
94
|
-
@vims.any?
|
96
|
+
@vims && @vims.any? ? @vims.first : nil
|
95
97
|
end
|
96
98
|
|
97
99
|
# Returns the running servers
|
98
100
|
#
|
99
101
|
# @return [Array] Name of running ViM Servers
|
100
102
|
def servers
|
101
|
-
|
102
|
-
|
103
|
+
servers = nil
|
104
|
+
# Tell vim to print the server list
|
105
|
+
Open3.popen2 "#{editor} --serverlist" do |stdin, stdout, wait_thr|
|
106
|
+
# Read the server list
|
107
|
+
servers = stdout.read.split("\n")
|
108
|
+
end
|
109
|
+
servers
|
103
110
|
end
|
104
111
|
|
105
112
|
# Send WatchTower extensions to vim
|
106
113
|
def send_extensions_to_editor
|
107
114
|
servers.each do |server|
|
108
|
-
|
115
|
+
# Tell vim to source the extensions
|
116
|
+
stdin, stdout, wait_thr = Open3.popen2 "#{editor} --servername #{server} --remote-send '<ESC>:source #{VIM_EXTENSION_PATH}<CR>'"
|
117
|
+
# Close the pipes
|
118
|
+
[stdin, stdout].each { |p| p.try(:close) }
|
109
119
|
end
|
110
120
|
end
|
111
121
|
end
|
@@ -2,11 +2,17 @@ window.date_filtering =
|
|
2
2
|
handleResponse: (response, textStatus, jqXHR) ->
|
3
3
|
($ '.page').html(response)
|
4
4
|
percentage.applyPercentage()
|
5
|
+
file_tree.bind_event_on_buttons()
|
5
6
|
|
6
7
|
updateMetaTags: (dates) ->
|
7
8
|
($ 'meta[name="date_filtering_from"]').attr 'content', $.datepick.formatDate(dates[0])
|
8
9
|
($ 'meta[name="date_filtering_to"]').attr 'content', $.datepick.formatDate(dates[1])
|
9
10
|
|
11
|
+
updateDatePickerDates: ->
|
12
|
+
from_date = ($ 'meta[name="date_filtering_from"]').attr 'content'
|
13
|
+
to_date = ($ 'meta[name="date_filtering_to"]').attr 'content'
|
14
|
+
($ '#date input').datepick 'setDate', [from_date, to_date]
|
15
|
+
|
10
16
|
handleDatePicker: (dates) ->
|
11
17
|
options = { from_date: $.datepick.formatDate(dates[0]), to_date: $.datepick.formatDate(dates[1]) }
|
12
18
|
url = window.location.pathname
|
@@ -18,4 +24,5 @@ jQuery ->
|
|
18
24
|
rangeSelect: true,
|
19
25
|
monthsToShow: 2,
|
20
26
|
alignment: 'bottomRight',
|
21
|
-
onClose: date_filtering.handleDatePicker
|
27
|
+
onClose: date_filtering.handleDatePicker
|
28
|
+
date_filtering.updateDatePickerDates()
|
@@ -1,4 +1,8 @@
|
|
1
1
|
window.file_tree =
|
2
|
+
bind_event_on_buttons: ->
|
3
|
+
($ '.collapsed').each (index, element) ->
|
4
|
+
($ element).bind 'click', ->
|
5
|
+
file_tree.handle_button element
|
2
6
|
handle_button: (domId) ->
|
3
7
|
if ($ domId).hasClass "collapsed"
|
4
8
|
($ domId).removeClass "collapsed"
|
@@ -25,6 +29,4 @@ window.file_tree =
|
|
25
29
|
($ element).hide()
|
26
30
|
|
27
31
|
jQuery ($) ->
|
28
|
-
|
29
|
-
($ element).bind 'click', ->
|
30
|
-
file_tree.handle_button element
|
32
|
+
file_tree.bind_event_on_buttons()
|
@@ -23671,12 +23671,19 @@ if ($.fn.validate) {
|
|
23671
23671
|
window.date_filtering = {
|
23672
23672
|
handleResponse: function(response, textStatus, jqXHR) {
|
23673
23673
|
($('.page')).html(response);
|
23674
|
-
|
23674
|
+
percentage.applyPercentage();
|
23675
|
+
return file_tree.bind_event_on_buttons();
|
23675
23676
|
},
|
23676
23677
|
updateMetaTags: function(dates) {
|
23677
23678
|
($('meta[name="date_filtering_from"]')).attr('content', $.datepick.formatDate(dates[0]));
|
23678
23679
|
return ($('meta[name="date_filtering_to"]')).attr('content', $.datepick.formatDate(dates[1]));
|
23679
23680
|
},
|
23681
|
+
updateDatePickerDates: function() {
|
23682
|
+
var from_date, to_date;
|
23683
|
+
from_date = ($('meta[name="date_filtering_from"]')).attr('content');
|
23684
|
+
to_date = ($('meta[name="date_filtering_to"]')).attr('content');
|
23685
|
+
return ($('#date input')).datepick('setDate', [from_date, to_date]);
|
23686
|
+
},
|
23680
23687
|
handleDatePicker: function(dates) {
|
23681
23688
|
var options, url;
|
23682
23689
|
options = {
|
@@ -23689,16 +23696,24 @@ if ($.fn.validate) {
|
|
23689
23696
|
}
|
23690
23697
|
};
|
23691
23698
|
jQuery(function() {
|
23692
|
-
|
23699
|
+
($('#date input')).datepick({
|
23693
23700
|
rangeSelect: true,
|
23694
23701
|
monthsToShow: 2,
|
23695
23702
|
alignment: 'bottomRight',
|
23696
23703
|
onClose: date_filtering.handleDatePicker
|
23697
23704
|
});
|
23705
|
+
return date_filtering.updateDatePickerDates();
|
23698
23706
|
});
|
23699
23707
|
}).call(this);
|
23700
23708
|
(function() {
|
23701
23709
|
window.file_tree = {
|
23710
|
+
bind_event_on_buttons: function() {
|
23711
|
+
return ($('.collapsed')).each(function(index, element) {
|
23712
|
+
return ($(element)).bind('click', function() {
|
23713
|
+
return file_tree.handle_button(element);
|
23714
|
+
});
|
23715
|
+
});
|
23716
|
+
},
|
23702
23717
|
handle_button: function(domId) {
|
23703
23718
|
if (($(domId)).hasClass("collapsed")) {
|
23704
23719
|
($(domId)).removeClass("collapsed");
|
@@ -23730,11 +23745,7 @@ if ($.fn.validate) {
|
|
23730
23745
|
}
|
23731
23746
|
};
|
23732
23747
|
jQuery(function($) {
|
23733
|
-
return
|
23734
|
-
return ($(element)).bind('click', function() {
|
23735
|
-
return file_tree.handle_button(element);
|
23736
|
-
});
|
23737
|
-
});
|
23748
|
+
return file_tree.bind_event_on_buttons();
|
23738
23749
|
});
|
23739
23750
|
}).call(this);
|
23740
23751
|
(function() {
|
data/lib/watch_tower/version.rb
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
def mock_pipe(out)
|
4
|
+
pipe = mock
|
5
|
+
pipe.stubs(:read).returns(out)
|
6
|
+
pipe.stubs(:close)
|
7
|
+
pipe
|
8
|
+
end
|
9
|
+
|
3
10
|
module Editor
|
4
11
|
describe Vim do
|
5
12
|
before(:each) do
|
@@ -9,17 +16,17 @@ module Editor
|
|
9
16
|
WatchTower.stubs(:which).with('mvim').returns(nil)
|
10
17
|
|
11
18
|
# Stub systemu
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
19
|
+
Open3.stubs(:popen2).with("/usr/bin/vim --help").returns([mock_pipe(""), mock_pipe(""), mock_pipe("")])
|
20
|
+
Open3.stubs(:popen2).with("/usr/bin/gvim --help").returns([mock_pipe(""), mock_pipe("--remote-send"), mock_pipe("")])
|
21
|
+
Open3.stubs(:popen2).with("/usr/bin/gvim --servername VIM --remote-send ':source #{Vim::VIM_EXTENSION_PATH}<CR>'").returns([mock_pipe(""), mock_pipe(""), mock_pipe("")])
|
22
|
+
Open3.stubs(:popen3).with("/usr/bin/gvim --servername VIM --remote-expr 'watchtower#ls()'").returns([mock_pipe(""), mock_pipe(<<-EOS), mock_pipe('')])
|
16
23
|
/path/to/file.rb
|
17
24
|
EOS
|
18
|
-
|
25
|
+
Open3.stubs(:popen2).with('/usr/bin/gvim --serverlist').yields([mock_pipe(""), mock_pipe(<<-EOC), mock_pipe('')])
|
19
26
|
VIM
|
20
27
|
EOC
|
21
|
-
|
22
|
-
|
28
|
+
Open3.stubs(:popen2).with("/usr/bin/gvim --version").
|
29
|
+
yields [mock_pipe(""), mock_pipe(<<-EOV), mock_pipe('')]
|
23
30
|
VIM - Vi IMproved 7.3 (2010 Aug 15)
|
24
31
|
Included patches: 1-202, 204-222, 224-322
|
25
32
|
Compiled by 'http://www.opensuse.org/'
|
@@ -63,11 +70,11 @@ EOV
|
|
63
70
|
it { should respond_to :supported_vims }
|
64
71
|
|
65
72
|
it "should return gvim" do
|
66
|
-
Vim.any_instance.expects(:systemu).with("/usr/bin/vim --help").returns([0, "", ""]).once
|
67
|
-
Vim.any_instance.expects(:systemu).with("/usr/bin/gvim --help").returns([0, "--remote server", ""]).once
|
68
73
|
WatchTower.expects(:which).with('vim').returns('/usr/bin/vim').once
|
69
74
|
WatchTower.expects(:which).with('gvim').returns('/usr/bin/gvim').once
|
70
75
|
WatchTower.expects(:which).with('mvim').returns(nil).once
|
76
|
+
Open3.expects(:popen2).with("/usr/bin/vim --help").returns([mock_pipe(""), mock_pipe(""), mock_pipe("")]).once
|
77
|
+
Open3.expects(:popen2).with("/usr/bin/gvim --help").returns([mock_pipe(""), mock_pipe("--remote-send"), mock_pipe("")]).once
|
71
78
|
|
72
79
|
subject.send :supported_vims
|
73
80
|
subject.instance_variable_get('@vims').should == ['/usr/bin/gvim']
|
@@ -80,13 +87,25 @@ EOV
|
|
80
87
|
it "should return /usr/bin/gvim" do
|
81
88
|
subject.send(:editor).should == '/usr/bin/gvim'
|
82
89
|
end
|
90
|
+
|
91
|
+
it "should return nil if @vims is []" do
|
92
|
+
subject.instance_variable_set('@vims', [])
|
93
|
+
|
94
|
+
subject.send(:editor).should == nil
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should return nil if @vims is nil" do
|
98
|
+
subject.instance_variable_set('@vims', nil)
|
99
|
+
|
100
|
+
subject.send(:editor).should == nil
|
101
|
+
end
|
83
102
|
end
|
84
103
|
|
85
104
|
describe "#servers" do
|
86
105
|
it { should respond_to :servers }
|
87
106
|
|
88
107
|
it "should return VIM" do
|
89
|
-
|
108
|
+
Open3.expects(:popen2).with('/usr/bin/gvim --serverlist').yields([mock_pipe(""), mock_pipe(<<-EOC), mock_pipe('')]).once
|
90
109
|
VIM
|
91
110
|
EOC
|
92
111
|
subject.send(:servers).should == ['VIM']
|
@@ -97,7 +116,7 @@ EOC
|
|
97
116
|
it { should respond_to :send_extensions_to_editor }
|
98
117
|
|
99
118
|
it "should send the extensions to vim" do
|
100
|
-
|
119
|
+
Open3.expects(:popen2).with("/usr/bin/gvim --servername VIM --remote-send '<ESC>:source #{Vim::VIM_EXTENSION_PATH}<CR>'").once
|
101
120
|
|
102
121
|
subject.send :send_extensions_to_editor
|
103
122
|
end
|
@@ -109,6 +128,18 @@ EOC
|
|
109
128
|
it "should return true if ViM is running" do
|
110
129
|
subject.is_running?.should be_true
|
111
130
|
end
|
131
|
+
|
132
|
+
it "should return false if servers is []" do
|
133
|
+
Vim.any_instance.stubs(:servers).returns([])
|
134
|
+
|
135
|
+
subject.is_running?.should be_false
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should return false if servers is nil" do
|
139
|
+
Vim.any_instance.stubs(:servers).returns(nil)
|
140
|
+
|
141
|
+
subject.is_running?.should be_false
|
142
|
+
end
|
112
143
|
end
|
113
144
|
|
114
145
|
describe "#current_paths" do
|
@@ -120,7 +151,16 @@ EOC
|
|
120
151
|
subject.current_paths
|
121
152
|
end
|
122
153
|
|
123
|
-
it "should call send_extensions_to_editor" do
|
154
|
+
it "should not call send_extensions_to_editor if the function is already loaded" do
|
155
|
+
Vim.any_instance.expects(:send_extensions_to_editor).never
|
156
|
+
|
157
|
+
subject.current_paths
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should call send_extensions_to_editor only if the remote did not evaluate the command" do
|
161
|
+
Open3.expects(:popen3).with("/usr/bin/gvim --servername VIM --remote-expr 'watchtower#ls()'").returns([mock_pipe(""), mock_pipe(""), mock_pipe(<<-EOS)]).twice
|
162
|
+
E449: Invalid expression received: Send expression failed.
|
163
|
+
EOS
|
124
164
|
Vim.any_instance.expects(:send_extensions_to_editor).once
|
125
165
|
|
126
166
|
subject.current_paths
|
@@ -133,7 +173,7 @@ EOC
|
|
133
173
|
end
|
134
174
|
|
135
175
|
it "should be able to parse ls output" do
|
136
|
-
|
176
|
+
Open3.expects(:popen3).with("/usr/bin/gvim --servername VIM --remote-expr 'watchtower#ls()'").returns([mock_pipe(""), mock_pipe(<<-EOS), mock_pipe('')]).once
|
137
177
|
/path/to/file.rb
|
138
178
|
/path/to/file2.rb
|
139
179
|
EOS
|
@@ -144,7 +184,7 @@ EOS
|
|
144
184
|
end
|
145
185
|
|
146
186
|
it "should not return duplicate documents" do
|
147
|
-
|
187
|
+
Open3.expects(:popen3).with("/usr/bin/gvim --servername VIM --remote-expr 'watchtower#ls()'").returns([mock_pipe(""), mock_pipe(<<-EOS), mock_pipe('')]).once
|
148
188
|
/path/to/file.rb
|
149
189
|
/path/to/file.rb
|
150
190
|
/path/to/file.rb
|
data/watch_tower.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: watch_tower
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.
|
4
|
+
version: 0.0.1.beta8
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-10-26 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &6542020 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.1.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *6542020
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: i18n
|
27
|
-
requirement: &
|
27
|
+
requirement: &6563580 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.6.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *6563580
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activerecord
|
38
|
-
requirement: &
|
38
|
+
requirement: &6561180 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 3.1.1
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *6561180
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: sinatra
|
49
|
-
requirement: &
|
49
|
+
requirement: &6560120 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.3.0
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *6560120
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: sinatra-snap
|
60
|
-
requirement: &
|
60
|
+
requirement: &6558920 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 0.3.2
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *6558920
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: haml
|
71
|
-
requirement: &
|
71
|
+
requirement: &6557280 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 3.1.3
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *6557280
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: grit
|
82
|
-
requirement: &
|
82
|
+
requirement: &6574640 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 2.4.1
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *6574640
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: coffee-script
|
93
|
-
requirement: &
|
93
|
+
requirement: &6573800 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: 2.2.0
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *6573800
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: uglifier
|
104
|
-
requirement: &
|
104
|
+
requirement: &6573120 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: 1.0.3
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *6573120
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: sass
|
115
|
-
requirement: &
|
115
|
+
requirement: &6571940 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ~>
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: 3.1.10
|
121
121
|
type: :runtime
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *6571940
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: sprockets
|
126
|
-
requirement: &
|
126
|
+
requirement: &6570400 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ~>
|
@@ -131,21 +131,10 @@ dependencies:
|
|
131
131
|
version: 2.0.2
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
135
|
-
- !ruby/object:Gem::Dependency
|
136
|
-
name: systemu
|
137
|
-
requirement: &6331640 !ruby/object:Gem::Requirement
|
138
|
-
none: false
|
139
|
-
requirements:
|
140
|
-
- - ~>
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
version: 2.4.0
|
143
|
-
type: :runtime
|
144
|
-
prerelease: false
|
145
|
-
version_requirements: *6331640
|
134
|
+
version_requirements: *6570400
|
146
135
|
- !ruby/object:Gem::Dependency
|
147
136
|
name: cronedit
|
148
|
-
requirement: &
|
137
|
+
requirement: &6569280 !ruby/object:Gem::Requirement
|
149
138
|
none: false
|
150
139
|
requirements:
|
151
140
|
- - ~>
|
@@ -153,10 +142,10 @@ dependencies:
|
|
153
142
|
version: 0.3.0
|
154
143
|
type: :runtime
|
155
144
|
prerelease: false
|
156
|
-
version_requirements: *
|
145
|
+
version_requirements: *6569280
|
157
146
|
- !ruby/object:Gem::Dependency
|
158
147
|
name: guard
|
159
|
-
requirement: &
|
148
|
+
requirement: &6583600 !ruby/object:Gem::Requirement
|
160
149
|
none: false
|
161
150
|
requirements:
|
162
151
|
- - ~>
|
@@ -164,10 +153,10 @@ dependencies:
|
|
164
153
|
version: 0.8.4
|
165
154
|
type: :development
|
166
155
|
prerelease: false
|
167
|
-
version_requirements: *
|
156
|
+
version_requirements: *6583600
|
168
157
|
- !ruby/object:Gem::Dependency
|
169
158
|
name: guard-bundler
|
170
|
-
requirement: &
|
159
|
+
requirement: &6582220 !ruby/object:Gem::Requirement
|
171
160
|
none: false
|
172
161
|
requirements:
|
173
162
|
- - ~>
|
@@ -175,10 +164,10 @@ dependencies:
|
|
175
164
|
version: 0.1.3
|
176
165
|
type: :development
|
177
166
|
prerelease: false
|
178
|
-
version_requirements: *
|
167
|
+
version_requirements: *6582220
|
179
168
|
- !ruby/object:Gem::Dependency
|
180
169
|
name: guard-rspec
|
181
|
-
requirement: &
|
170
|
+
requirement: &6581500 !ruby/object:Gem::Requirement
|
182
171
|
none: false
|
183
172
|
requirements:
|
184
173
|
- - ~>
|
@@ -186,10 +175,10 @@ dependencies:
|
|
186
175
|
version: 0.4.5
|
187
176
|
type: :development
|
188
177
|
prerelease: false
|
189
|
-
version_requirements: *
|
178
|
+
version_requirements: *6581500
|
190
179
|
- !ruby/object:Gem::Dependency
|
191
180
|
name: guard-sprockets2
|
192
|
-
requirement: &
|
181
|
+
requirement: &6580240 !ruby/object:Gem::Requirement
|
193
182
|
none: false
|
194
183
|
requirements:
|
195
184
|
- - ~>
|
@@ -197,10 +186,10 @@ dependencies:
|
|
197
186
|
version: 0.0.5
|
198
187
|
type: :development
|
199
188
|
prerelease: false
|
200
|
-
version_requirements: *
|
189
|
+
version_requirements: *6580240
|
201
190
|
- !ruby/object:Gem::Dependency
|
202
191
|
name: yard
|
203
|
-
requirement: &
|
192
|
+
requirement: &6579440 !ruby/object:Gem::Requirement
|
204
193
|
none: false
|
205
194
|
requirements:
|
206
195
|
- - ~>
|
@@ -208,10 +197,10 @@ dependencies:
|
|
208
197
|
version: 0.7.2
|
209
198
|
type: :development
|
210
199
|
prerelease: false
|
211
|
-
version_requirements: *
|
200
|
+
version_requirements: *6579440
|
212
201
|
- !ruby/object:Gem::Dependency
|
213
202
|
name: rspec
|
214
|
-
requirement: &
|
203
|
+
requirement: &6577800 !ruby/object:Gem::Requirement
|
215
204
|
none: false
|
216
205
|
requirements:
|
217
206
|
- - ~>
|
@@ -219,10 +208,10 @@ dependencies:
|
|
219
208
|
version: 2.6.0
|
220
209
|
type: :development
|
221
210
|
prerelease: false
|
222
|
-
version_requirements: *
|
211
|
+
version_requirements: *6577800
|
223
212
|
- !ruby/object:Gem::Dependency
|
224
213
|
name: rspec-rails
|
225
|
-
requirement: &
|
214
|
+
requirement: &6592720 !ruby/object:Gem::Requirement
|
226
215
|
none: false
|
227
216
|
requirements:
|
228
217
|
- - ~>
|
@@ -230,10 +219,10 @@ dependencies:
|
|
230
219
|
version: 2.6.1
|
231
220
|
type: :development
|
232
221
|
prerelease: false
|
233
|
-
version_requirements: *
|
222
|
+
version_requirements: *6592720
|
234
223
|
- !ruby/object:Gem::Dependency
|
235
224
|
name: capybara
|
236
|
-
requirement: &
|
225
|
+
requirement: &6591440 !ruby/object:Gem::Requirement
|
237
226
|
none: false
|
238
227
|
requirements:
|
239
228
|
- - ~>
|
@@ -241,10 +230,10 @@ dependencies:
|
|
241
230
|
version: 1.1.1
|
242
231
|
type: :development
|
243
232
|
prerelease: false
|
244
|
-
version_requirements: *
|
233
|
+
version_requirements: *6591440
|
245
234
|
- !ruby/object:Gem::Dependency
|
246
235
|
name: launchy
|
247
|
-
requirement: &
|
236
|
+
requirement: &6588580 !ruby/object:Gem::Requirement
|
248
237
|
none: false
|
249
238
|
requirements:
|
250
239
|
- - ~>
|
@@ -252,10 +241,10 @@ dependencies:
|
|
252
241
|
version: 2.0.5
|
253
242
|
type: :development
|
254
243
|
prerelease: false
|
255
|
-
version_requirements: *
|
244
|
+
version_requirements: *6588580
|
256
245
|
- !ruby/object:Gem::Dependency
|
257
246
|
name: mocha
|
258
|
-
requirement: &
|
247
|
+
requirement: &6587320 !ruby/object:Gem::Requirement
|
259
248
|
none: false
|
260
249
|
requirements:
|
261
250
|
- - ~>
|
@@ -263,10 +252,10 @@ dependencies:
|
|
263
252
|
version: 0.10.0
|
264
253
|
type: :development
|
265
254
|
prerelease: false
|
266
|
-
version_requirements: *
|
255
|
+
version_requirements: *6587320
|
267
256
|
- !ruby/object:Gem::Dependency
|
268
257
|
name: factory_girl
|
269
|
-
requirement: &
|
258
|
+
requirement: &6585700 !ruby/object:Gem::Requirement
|
270
259
|
none: false
|
271
260
|
requirements:
|
272
261
|
- - ~>
|
@@ -274,10 +263,10 @@ dependencies:
|
|
274
263
|
version: 2.1.2
|
275
264
|
type: :development
|
276
265
|
prerelease: false
|
277
|
-
version_requirements: *
|
266
|
+
version_requirements: *6585700
|
278
267
|
- !ruby/object:Gem::Dependency
|
279
268
|
name: timecop
|
280
|
-
requirement: &
|
269
|
+
requirement: &6605860 !ruby/object:Gem::Requirement
|
281
270
|
none: false
|
282
271
|
requirements:
|
283
272
|
- - ~>
|
@@ -285,10 +274,10 @@ dependencies:
|
|
285
274
|
version: 0.3.5
|
286
275
|
type: :development
|
287
276
|
prerelease: false
|
288
|
-
version_requirements: *
|
277
|
+
version_requirements: *6605860
|
289
278
|
- !ruby/object:Gem::Dependency
|
290
279
|
name: pry
|
291
|
-
requirement: &
|
280
|
+
requirement: &6603500 !ruby/object:Gem::Requirement
|
292
281
|
none: false
|
293
282
|
requirements:
|
294
283
|
- - ~>
|
@@ -296,7 +285,7 @@ dependencies:
|
|
296
285
|
version: 0.9.6.2
|
297
286
|
type: :development
|
298
287
|
prerelease: false
|
299
|
-
version_requirements: *
|
288
|
+
version_requirements: *6603500
|
300
289
|
description: ! 'Did you ever want to keep track of how much time you _really_ spend
|
301
290
|
on all of
|
302
291
|
|
@@ -342,6 +331,7 @@ files:
|
|
342
331
|
- .gitignore
|
343
332
|
- .todo
|
344
333
|
- .travis.yml
|
334
|
+
- CREDITS.md
|
345
335
|
- Gemfile
|
346
336
|
- Guardfile
|
347
337
|
- MIT-LICENSE
|
@@ -423,7 +413,7 @@ files:
|
|
423
413
|
- lib/watch_tower/server/presenters/file_presenter.rb
|
424
414
|
- lib/watch_tower/server/presenters/project_presenter.rb
|
425
415
|
- lib/watch_tower/server/public/assets/WatchTower-58eff0713efffbc6054defddc879e0b1.jpg
|
426
|
-
- lib/watch_tower/server/public/assets/application-
|
416
|
+
- lib/watch_tower/server/public/assets/application-386eb3efa6bdd52fa22b0b715d80fcc9.js
|
427
417
|
- lib/watch_tower/server/public/assets/application-b8c3ec9943038da13afb0c29ade74542.css
|
428
418
|
- lib/watch_tower/server/public/assets/calendar-379834cd6e6321a940b662ace47f3032.gif
|
429
419
|
- lib/watch_tower/server/public/assets/calendar-blue-d6aa74feef7ee4287532761db99a6c0a.gif
|