clarity 0.9.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.
@@ -0,0 +1,17 @@
1
+ require "test/unit"
2
+
3
+ require "strscan"
4
+
5
+ class TestLibraryFileName < Test::Unit::TestCase
6
+
7
+ NewLine = /\n/
8
+ def test_case_name
9
+ s = StringScanner.new('')
10
+ s << "abc\nd"
11
+ assert_equal "abc\n", s.scan_until(NewLine)
12
+ assert_equal nil, s.scan_until(NewLine)
13
+ s << "ef\ng"
14
+ assert_equal "def\n", s.scan_until(NewLine)
15
+ assert_equal nil, s.scan_until(NewLine)
16
+ end
17
+ end
@@ -0,0 +1,5 @@
1
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
2
+ <title>Clarity ~ A Log Search Tool</title>
3
+ <link rel="stylesheet" href="/stylesheets/app.css" type="text/css" media="screen">
4
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
5
+ <script src="/javascripts/app.js" type="text/javascript"></script>
@@ -0,0 +1,89 @@
1
+ <div id='toolbar'>
2
+ <div id='header'>
3
+ <h1><a href="/">Clarity</a> <span class='small' style='color:#aaa'>Log Search Tool</span></h1>
4
+ </div>
5
+
6
+ <form id='search' method='get' action='/perform'>
7
+ <table class='actions'>
8
+ <tr>
9
+ <th>Action</th>
10
+ <th>Log File</th>
11
+ <th colspan=5>
12
+ Search Terms
13
+ <span class='note'><a href='#' onclick='Search.clear(); return false;'>clear</a></span>
14
+ </th>
15
+ <th> </th>
16
+ </tr>
17
+ <tr>
18
+ <td id='tool-selector'>
19
+ <input type='radio' name='tool' value='grep' id='grep-tool' checked='checked'> <span class='label' id='grep-label'>Search</span> <br/>
20
+ <input type='radio' name='tool' value='tail' id='tail-tool'> <span class='label' id='tail-label'>Tail</span> <br/>
21
+ </td>
22
+ <td id='file-selector'>
23
+ <select id='file-list' name='file'>
24
+ <% logfiles.map do |f| %>
25
+ <%= "<option value='#{f}'>#{f}</option>\n" %>
26
+ <% end %>
27
+ </select>
28
+ </td>
29
+ <td>
30
+ <input type='text' id='term1' name='term1' />
31
+ </td>
32
+ <td> <span class='and'>AND</span> </td>
33
+ <td>
34
+ <input type='text' id='term2' name='term2' />
35
+ </td>
36
+ <td> <span class='and'>AND</span> </td>
37
+ <td>
38
+ <input type='text' id='term3' name='term3' />
39
+ </td>
40
+ <td>
41
+ <input type='submit' value='Submit' onclick="Search.submit(); return false;"/>
42
+ </td>
43
+ <td>
44
+ </td>
45
+ </tr>
46
+ <tr id='advanced-options'>
47
+ <td></td>
48
+ <td>
49
+ <span class='small'>
50
+ <a href="#" id="enable-advanced" onclick="Search.showAdvanced(); return false;">Enable Advanced Options</a>
51
+ <a href="#" id="disable-advanced" onclick="Search.hideAdvanced(); return false;" style='display:none'>Disable Advanced Options</a>
52
+ </span>
53
+ </td>
54
+ <td colspan=2 id='start-time' class='advanced-options' style='display:none'>
55
+ <span class='small'>Start Time</span>
56
+ <input type='text' name='sh' class='time' id='sh'> :
57
+ <input type='text' name='sm' class='time' id='sm'> :
58
+ <input type='text' name='ss' class='time' id='ss'>
59
+ </td>
60
+ <td colspan=2 id='end-time' class='advanced-options' style='display:none'>
61
+ <span class='small'>End Time</span>
62
+ <input type='text' name='eh' class='time' id='eh'> :
63
+ <input type='text' name='em' class='time' id='em'> :
64
+ <input type='text' name='es' class='time' id='es'>
65
+ </td>
66
+ <td class='advanced-options' style='display:none'>
67
+ <span class="small">
68
+ <a href="#" onclick="Search.clearAdvanced();return false">clear advanced</a>
69
+ </span>
70
+ </td>
71
+ </tr>
72
+ </table>
73
+ </form>
74
+ </div>
75
+
76
+
77
+ <div id="option-ctrl">
78
+ <ul>
79
+ <li><input type='checkbox' name='enable_scrolling' id='auto-scroll'/><span> Auto scroll?</span></li>
80
+ </ul>
81
+ </div>
82
+
83
+ <script>
84
+ Search.init({ 'grep': <%= logfiles.map {|f| f }.to_json %>,
85
+ 'tail': <%= logfiles.map {|f| f if f =~ /log$/ }.compact.to_json %> },
86
+ <%= params.empty? ? nil.to_json : params.to_json %> );
87
+
88
+
89
+ </script>
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html>
3
+ <head>
4
+ <%= @content_for_header %>
5
+ </head>
6
+ <body>
7
+ <%= @toolbar %>
8
+ <h1>Error</h1>
9
+ <p><%= @error %></p>
10
+ </body>
11
+ </html>
@@ -0,0 +1,9 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html>
3
+ <head>
4
+ <%= @content_for_header %>
5
+ </head>
6
+
7
+ <body>
8
+ <%= @toolbar %>
9
+ <div id="results">
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: clarity
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ platform: ruby
6
+ authors:
7
+ - "Tobias L\xC3\xBCtke"
8
+ - John Tajima
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2009-11-04 00:00:00 -05:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: eventmachine
18
+ type: :runtime
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 0.12.10
25
+ version:
26
+ - !ruby/object:Gem::Dependency
27
+ name: eventmachine_httpserver
28
+ type: :runtime
29
+ version_requirement:
30
+ version_requirements: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 0.2.0
35
+ version:
36
+ - !ruby/object:Gem::Dependency
37
+ name: hoe
38
+ type: :development
39
+ version_requirement:
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: 2.3.3
45
+ version:
46
+ description: "Clarity - a log search tool\n\
47
+ By John Tajima & Tobi L\xC3\xBCtke\n\n\
48
+ Clarity is an eventmachine-based web application that is used at Shopify to\n\
49
+ search log files on production servers.\n\n\
50
+ We wrote Clarity to allow authorized users to use a simple interface to look\n\
51
+ through the various log files in our server farm, without requiring access to\n\
52
+ production servers.\n\n\
53
+ Clarity requires eventmachine and eventmachine/evma_httpserver.\n\n sudo gem install eventmachine eventmachine_httpserver"
54
+ email:
55
+ - tobi@shopify.com
56
+ - john@shopify.com
57
+ executables:
58
+ - clarity
59
+ extensions: []
60
+
61
+ extra_rdoc_files:
62
+ - History.txt
63
+ - Manifest.txt
64
+ - PostInstall.txt
65
+ files:
66
+ - History.txt
67
+ - Manifest.txt
68
+ - PostInstall.txt
69
+ - README.rdoc
70
+ - Rakefile
71
+ - bin/clarity
72
+ - config/config.yml.sample
73
+ - lib/clarity.rb
74
+ - lib/clarity/cli.rb
75
+ - lib/clarity/commands/command_builder.rb
76
+ - lib/clarity/commands/tail_command_builder.rb
77
+ - lib/clarity/parsers/hostname_parser.rb
78
+ - lib/clarity/parsers/shop_parser.rb
79
+ - lib/clarity/parsers/time_parser.rb
80
+ - lib/clarity/renderers/log_renderer.rb
81
+ - lib/clarity/server.rb
82
+ - lib/clarity/server/basic_auth.rb
83
+ - lib/clarity/server/chunk_http.rb
84
+ - lib/clarity/server/mime_types.rb
85
+ - public/images/spinner_big.gif
86
+ - public/javascripts/app.js
87
+ - public/stylesheets/app.css
88
+ - script/console
89
+ - script/destroy
90
+ - script/generate
91
+ - test/commands/command_builder_test.rb
92
+ - test/commands/tail_command_builder_test.rb
93
+ - test/files/logfile.log
94
+ - test/parsers/hostname_parser_test.rb
95
+ - test/parsers/shop_parser_test.rb
96
+ - test/parsers/time_parser_test.rb
97
+ - test/test_helper.rb
98
+ - test/test_string_scanner.rb
99
+ - views/_header.html.erb
100
+ - views/_toolbar.html.erb
101
+ - views/error.html.erb
102
+ - views/index.html.erb
103
+ has_rdoc: true
104
+ homepage: http://github.com/#{github_username}/#{project_name}
105
+ licenses: []
106
+
107
+ post_install_message: PostInstall.txt
108
+ rdoc_options:
109
+ - --main
110
+ - README.rdoc
111
+ require_paths:
112
+ - lib
113
+ required_ruby_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: "0"
118
+ version:
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: "0"
124
+ version:
125
+ requirements: []
126
+
127
+ rubyforge_project: clarity
128
+ rubygems_version: 1.3.5
129
+ signing_key:
130
+ specification_version: 3
131
+ summary: "Clarity - a log search tool By John Tajima & Tobi L\xC3\xBCtke Clarity is an eventmachine-based web application that is used at Shopify to search log files on production servers"
132
+ test_files:
133
+ - test/test_helper.rb
134
+ - test/test_string_scanner.rb