phd 0.1.1
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 +7 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +92 -0
- data/Guardfile +8 -0
- data/LICENSE +22 -0
- data/README.md +46 -0
- data/Rakefile +2 -0
- data/bin/phd +17 -0
- data/lib/phd.rb +6 -0
- data/lib/phd/cli.rb +32 -0
- data/lib/phd/db/sqlite3.rb +88 -0
- data/lib/phd/indexer.rb +74 -0
- data/lib/phd/server.rb +16 -0
- data/lib/phd/version.rb +3 -0
- data/lib/third/trollop.rb +782 -0
- data/spec/ci.sh +2 -0
- data/spec/dummy/one.txt +1 -0
- data/spec/dummy/three/five.txt +5 -0
- data/spec/dummy/three/four.txt +4 -0
- data/spec/dummy/three/six/seven.txt +0 -0
- data/spec/dummy/two.txt +2 -0
- data/spec/phd_request_spec.rb +6 -0
- data/spec/phd_spec.rb +43 -0
- data/spec/spec_helper.rb +21 -0
- metadata +220 -0
data/spec/ci.sh
ADDED
data/spec/dummy/one.txt
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
|
@@ -0,0 +1,5 @@
|
|
1
|
+
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
|
2
|
+
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
|
3
|
+
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
|
4
|
+
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
|
5
|
+
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
|
File without changes
|
data/spec/dummy/two.txt
ADDED
data/spec/phd_spec.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'phd'
|
3
|
+
require 'sqlite3'
|
4
|
+
describe 'Phd' do
|
5
|
+
before :all do
|
6
|
+
@date, @time = Time.now.strftime("%Y%m%d_%H%M%S").split(/_/)
|
7
|
+
@opts = {
|
8
|
+
directory: "spec/dummy",
|
9
|
+
database: "tmp/phd_#{@date}_#{@time}.db"
|
10
|
+
}
|
11
|
+
@db = Phd::DB::SQlite3.new @opts[:database]
|
12
|
+
@direct_db = SQLite3::Database.new @opts[:database]
|
13
|
+
end
|
14
|
+
|
15
|
+
after :all do
|
16
|
+
File.unlink(@opts[:database]) if File.exists?(@opts[:database])
|
17
|
+
end
|
18
|
+
|
19
|
+
it "initializes the database" do
|
20
|
+
#should have tables
|
21
|
+
%w{files stats}.each do |name|
|
22
|
+
@direct_db.get_first_value("SELECT name FROM sqlite_master WHERE type='table' AND name='#{name}';")
|
23
|
+
end
|
24
|
+
#table columns
|
25
|
+
files_columns = [[0, "id", "integer", 0, nil, 1], [1, "path", "text", 0, nil, 0]]
|
26
|
+
@direct_db.execute("pragma table_info(files)").should match_array(files_columns)
|
27
|
+
stats_columns = [[0, "id", "integer", 0, nil, 1], [1, "file_id", "integer", 0, nil, 0], [2, "date", "text", 0, nil, 0], [3, "time", "text", 0, nil, 0], [4, "inode", "integer", 0, nil, 0], [5, "size", "integer", 0, nil, 0], [6, "mtime", "integer", 0, nil, 0], [7, "is_dir", "integer", 0, nil, 0], [8, "depth", "integer", 0, nil, 0], [9, "node_left", "integer", 0, nil, 0], [10, "node_right", "integer", 0, nil, 0]]
|
28
|
+
@direct_db.execute("pragma table_info(stats)").should match_array(stats_columns)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "indexes the directory" do
|
32
|
+
@indexer = Phd::Indexer.new(@db, @opts[:directory]).index(@opts)
|
33
|
+
#should have files
|
34
|
+
files_data = [[1, "spec/dummy/one.txt"], [2, "spec/dummy/three"], [3, "spec/dummy/three/five.txt"], [4, "spec/dummy/three/four.txt"], [5, "spec/dummy/three/six"], [6, "spec/dummy/three/six/seven.txt"], [7, "spec/dummy/two.txt"]]
|
35
|
+
@direct_db.execute("SELECT * FROM files").should match_array(files_data)
|
36
|
+
#should have specs
|
37
|
+
stats_data = [[1, 1, @date, @time, 33957578, 57, 1368225981, 0, 3, 2, 2], [2, 2, @date, @time, 33957582, 170, 1368225928, 1, 3, 3, 12], [3, 3, @date, @time, 33957587, 289, 1368226004, 0, 4, 5, 5], [4, 4, @date, @time, 33957584, 231, 1368225999, 0, 4, 7, 7], [5, 5, @date, @time, 33957588, 102, 1368225937, 1, 4, 8, 11], [6, 6, @date, @time, 33957589, 0, 1368225879, 0, 5, 10, 10], [7, 7, @date, @time, 33957579, 115, 1368225989, 0, 3, 14, 14]]
|
38
|
+
@direct_db.execute("SELECT * FROM stats").should match_array(stats_data)
|
39
|
+
end
|
40
|
+
|
41
|
+
pending "removes a date and time from the db" do
|
42
|
+
end
|
43
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
2
|
+
require 'bundler'
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'rspec/autorun'
|
5
|
+
require 'capybara/rspec'
|
6
|
+
|
7
|
+
Dir["spec/support/**/*.rb"].each {|f| require f}
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
config.color_enabled = true
|
11
|
+
config.formatter = 'documentation'
|
12
|
+
# config.use_transactional_fixtures = false
|
13
|
+
config.order = "random"
|
14
|
+
end
|
15
|
+
|
16
|
+
module ::RSpec::Core
|
17
|
+
class ExampleGroup
|
18
|
+
include Capybara::DSL
|
19
|
+
include Capybara::RSpecMatchers
|
20
|
+
end
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,220 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: phd
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Noel Peden
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-07-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: sinatra
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sqlite3
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: progress_bar
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: guard-rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: capybara
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: growl
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rb-fsevent
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
description: Phd is a tool to browse changes in disk space usage. It creates an sqlite3
|
154
|
+
index and creates SVG images of the usage. The svg uses area and color to display
|
155
|
+
both file size and size change relative to the compared date. Phd is a near complete
|
156
|
+
rewrite of philesight (http://zevv.nl/play/code/philesight/) with many changes.
|
157
|
+
email:
|
158
|
+
- noel@peden.biz
|
159
|
+
executables:
|
160
|
+
- phd
|
161
|
+
extensions: []
|
162
|
+
extra_rdoc_files: []
|
163
|
+
files:
|
164
|
+
- lib/phd/cli.rb
|
165
|
+
- lib/phd/db/sqlite3.rb
|
166
|
+
- lib/phd/indexer.rb
|
167
|
+
- lib/phd/server.rb
|
168
|
+
- lib/phd/version.rb
|
169
|
+
- lib/phd.rb
|
170
|
+
- lib/third/trollop.rb
|
171
|
+
- Gemfile
|
172
|
+
- Gemfile.lock
|
173
|
+
- LICENSE
|
174
|
+
- Rakefile
|
175
|
+
- README.md
|
176
|
+
- spec/ci.sh
|
177
|
+
- spec/dummy/one.txt
|
178
|
+
- spec/dummy/three/five.txt
|
179
|
+
- spec/dummy/three/four.txt
|
180
|
+
- spec/dummy/three/six/seven.txt
|
181
|
+
- spec/dummy/two.txt
|
182
|
+
- spec/phd_request_spec.rb
|
183
|
+
- spec/phd_spec.rb
|
184
|
+
- spec/spec_helper.rb
|
185
|
+
- Guardfile
|
186
|
+
- bin/phd
|
187
|
+
homepage: http://phd.peden.biz
|
188
|
+
licenses: []
|
189
|
+
metadata: {}
|
190
|
+
post_install_message:
|
191
|
+
rdoc_options: []
|
192
|
+
require_paths:
|
193
|
+
- lib
|
194
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
195
|
+
requirements:
|
196
|
+
- - '>='
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '0'
|
199
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
200
|
+
requirements:
|
201
|
+
- - '>='
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: '0'
|
204
|
+
requirements: []
|
205
|
+
rubyforge_project:
|
206
|
+
rubygems_version: 2.0.3
|
207
|
+
signing_key:
|
208
|
+
specification_version: 4
|
209
|
+
summary: Use phd to view disk usage over time.
|
210
|
+
test_files:
|
211
|
+
- spec/ci.sh
|
212
|
+
- spec/dummy/one.txt
|
213
|
+
- spec/dummy/three/five.txt
|
214
|
+
- spec/dummy/three/four.txt
|
215
|
+
- spec/dummy/three/six/seven.txt
|
216
|
+
- spec/dummy/two.txt
|
217
|
+
- spec/phd_request_spec.rb
|
218
|
+
- spec/phd_spec.rb
|
219
|
+
- spec/spec_helper.rb
|
220
|
+
- Guardfile
|