lense 0.1.42 → 0.1.43
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/lib/lense.rb +46 -6
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f42192d4855d217e54d3dfc54dc0de59450e7b42
|
4
|
+
data.tar.gz: 410af56c080571b1c261b431239121cb90822bc6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea1a22f30d4addf2799d89b2beee9ff20da740814fb2391e7f5f70f8a911d41f2011c438f049207c4097bb3b7a62814bd0972cd5ff521d2746c9dcecc8b9fb07
|
7
|
+
data.tar.gz: 30299fc6253c6effab8171832d0cdfb4fdf7aa4274519c983f68707f5855721e1e9b7fa0f56bc3ee9ca00015b47be3ad76c4778c6a55b585d975c658e7ed4c0d
|
data/lib/lense.rb
CHANGED
@@ -6,7 +6,7 @@ require 'sqlite3'
|
|
6
6
|
class LENSE
|
7
7
|
attr_reader :config, :current_course, :lense_file_hash
|
8
8
|
|
9
|
-
VERSION = '0.1.
|
9
|
+
VERSION = '0.1.43'
|
10
10
|
LENSE_DIR = File.join(ENV['HOME'],'.lense')
|
11
11
|
COURSES_DIR = File.join(LENSE_DIR,'courses')
|
12
12
|
CURRENT_COURSE_FILE = File.join(LENSE_DIR,'current_course')
|
@@ -28,7 +28,7 @@ class LENSE
|
|
28
28
|
|
29
29
|
@current_course = File.read(CURRENT_COURSE_FILE).strip()
|
30
30
|
@current_course = '> NOT SET <' if @current_course.empty?
|
31
|
-
@lense_file_hash =
|
31
|
+
@lense_file_hash = hash_file(LENSE_FILE) if File.file?(LENSE_FILE)
|
32
32
|
@DB = SQLite3::Database.new File.join(LOCAL_LENSE_DIR,'db') if File.file? File.join(LOCAL_LENSE_DIR,'db')
|
33
33
|
end
|
34
34
|
|
@@ -153,6 +153,39 @@ class LENSE
|
|
153
153
|
def commit(msg)
|
154
154
|
# check that we have items in staging
|
155
155
|
rows = @DB.execute 'select path from staging;'
|
156
|
+
rows.map! do |r|
|
157
|
+
path = r[0]
|
158
|
+
{
|
159
|
+
path: path,
|
160
|
+
hash: hash_file(path)
|
161
|
+
}
|
162
|
+
end
|
163
|
+
|
164
|
+
files = rows.select do |file|
|
165
|
+
dependency = get_dependency(file[:path])
|
166
|
+
dependency.nil? || dependency.file_hash != file[:hash]
|
167
|
+
end
|
168
|
+
|
169
|
+
combined_hash = files.map {|f| f[:hash]}.join ''
|
170
|
+
commit_hash = Digest::SHA256.hexdigest "#{DateTime.now.to_s}#{combined_hash}"
|
171
|
+
@DB.execute 'insert into commits (dependency_id,hash,created_at) values (?,?,?);',[dependency_id,commit_hash,DateTime.now.to_s]
|
172
|
+
commit_id = @DB.last_insert_row_id
|
173
|
+
|
174
|
+
files.each do |file|
|
175
|
+
@DB.transaction
|
176
|
+
dependency = get_dependency(file[:path])
|
177
|
+
if dependency.nil?
|
178
|
+
@DB.execute 'insert into dependencies (path,added_at) values (?,?);',[file[:path],DateTime.now.to_s]
|
179
|
+
dependency_id = @DB.last_insert_row_id
|
180
|
+
else
|
181
|
+
dependency_id = dependency.id
|
182
|
+
end
|
183
|
+
@DB.execute 'insert into revisions (commit_id,dependency_id,hash,created_at) values (?,?,?,?);',[commit_id,dependency_id,file[:hash],DateTime.now.to_s]
|
184
|
+
@DB.commit
|
185
|
+
end
|
186
|
+
@DB.transaction
|
187
|
+
@DB.execute 'truncate staging;'
|
188
|
+
@DB.commit
|
156
189
|
# add new files to dependancies
|
157
190
|
# create a hash for the commit and add to commits
|
158
191
|
# for all dependancies add current hashes to revisions
|
@@ -165,7 +198,7 @@ class LENSE
|
|
165
198
|
if dependency.nil?
|
166
199
|
should_stage = true
|
167
200
|
else
|
168
|
-
current_hash =
|
201
|
+
current_hash = hash_file(file)
|
169
202
|
# is it modified?
|
170
203
|
if dependency.file_hash == current_hash
|
171
204
|
say "Not Staging because we've seen this file"
|
@@ -177,9 +210,13 @@ class LENSE
|
|
177
210
|
end
|
178
211
|
|
179
212
|
if should_stage
|
180
|
-
|
181
|
-
|
182
|
-
|
213
|
+
begin
|
214
|
+
@DB.transaction
|
215
|
+
@DB.execute "insert into staging (path) values (?);", file
|
216
|
+
@DB.commit
|
217
|
+
rescue
|
218
|
+
say "File already staged!"
|
219
|
+
end
|
183
220
|
end
|
184
221
|
end
|
185
222
|
end
|
@@ -196,6 +233,9 @@ class LENSE
|
|
196
233
|
end
|
197
234
|
|
198
235
|
private
|
236
|
+
def hash_file(file)
|
237
|
+
Digest::SHA256.hexdigest(File.read(file))
|
238
|
+
end
|
199
239
|
def get_dependency(file)
|
200
240
|
rows = @DB.execute("
|
201
241
|
select d.id, d.path, d.added_at, r.hash, r.created_at, c.hash
|