lense 0.2.16 → 0.2.17
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/data/mfwvl1.yaml +6 -1
- data/lib/lense.rb +71 -18
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d70caab50233ebeac96062c48b778c90ea58ed6a
|
4
|
+
data.tar.gz: 598f475c0ef9cf20a217452bb7571a4c7f887bc8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6af0ee9c28a139cb059a3684d55d58eb26affc4b8f5819a228cb590bd93638f311a315bf7ca8bc4090fa6a99644235a2819ddf376ee4b09fd26351c8c156f59b
|
7
|
+
data.tar.gz: 6f54d7b138ef4589ffeae3534f4ef3284841705f30a58aa4d8b65e28bb764733bcc038e58ce3aa24b26b7c1328e3d7c8beea0355c3344fca8188b3a96cdc6c07
|
data/data/mfwvl1.yaml
CHANGED
@@ -6,7 +6,12 @@ authors:
|
|
6
6
|
email: lance.lacoste@gmail.com
|
7
7
|
|
8
8
|
dependancies:
|
9
|
-
- data/my_memory_sample.vmem
|
9
|
+
- path: data/my_memory_sample.vmem
|
10
|
+
url: http://url.com/file
|
11
|
+
hash: fj13k4jkf15j
|
12
|
+
- path: docker-compose.yml
|
13
|
+
hash: fj13k4jkf15j
|
14
|
+
|
10
15
|
|
11
16
|
# The final command to open in a new terminal.
|
12
17
|
up:
|
data/lib/lense.rb
CHANGED
@@ -3,11 +3,12 @@ require 'highline/import'
|
|
3
3
|
require 'digest'
|
4
4
|
require 'sqlite3'
|
5
5
|
require 'base64'
|
6
|
+
require 'active_support/all'
|
6
7
|
|
7
8
|
class LENSE
|
8
9
|
attr_reader :config, :current_course, :lense_file_hash
|
9
10
|
|
10
|
-
VERSION = '0.2.
|
11
|
+
VERSION = '0.2.17'
|
11
12
|
LENSE_DIR = File.join(ENV['HOME'],'.lense')
|
12
13
|
COURSES_DIR = File.join(LENSE_DIR,'courses')
|
13
14
|
CURRENT_COURSE_FILE = File.join(LENSE_DIR,'current_course')
|
@@ -17,7 +18,7 @@ class LENSE
|
|
17
18
|
CURRENT_REF_FILE = File.join(REFS_DIR,'current')
|
18
19
|
LENSE_FILE = File.join(ENV['PWD'],'LENSEfile')
|
19
20
|
API_BASE = 'http://lightweightnetsec.com'
|
20
|
-
TARFLAGS = ''
|
21
|
+
TARFLAGS = 'z'
|
21
22
|
|
22
23
|
def initialize()
|
23
24
|
Dir.mkdir(LENSE_DIR) unless File.directory?(LENSE_DIR)
|
@@ -138,11 +139,11 @@ class LENSE
|
|
138
139
|
end
|
139
140
|
|
140
141
|
def status()
|
141
|
-
#say "Hash : #{@lense_file_hash}"
|
142
142
|
exit_now!("Not a LENSE project: .lense") unless File.directory?(LOCAL_LENSE_DIR)
|
143
143
|
|
144
|
-
|
145
|
-
|
144
|
+
rows = @DB.execute("select path from staging;")
|
145
|
+
say "Staged Files:\n" if rows.length > 0
|
146
|
+
rows.each do |row|
|
146
147
|
path = row[0]
|
147
148
|
dependency = get_dependency(path)
|
148
149
|
action = dependency.nil? ? 'New File' : 'Modified'
|
@@ -158,11 +159,6 @@ class LENSE
|
|
158
159
|
end
|
159
160
|
end
|
160
161
|
|
161
|
-
# check changes in depenancy files
|
162
|
-
# - for each depenceny
|
163
|
-
# - - get the current file hash
|
164
|
-
# - - check against .lense/deps/#{rel_path_to_dep}
|
165
|
-
# - - output any ones that have changed
|
166
162
|
end
|
167
163
|
|
168
164
|
def commit(msg)
|
@@ -176,16 +172,21 @@ class LENSE
|
|
176
172
|
}
|
177
173
|
end
|
178
174
|
|
175
|
+
# only select new or modified files
|
179
176
|
files = rows.select do |file|
|
180
177
|
dependency = get_dependency(file[:path])
|
181
178
|
dependency.nil? || dependency[:file_hash] != file[:hash]
|
182
179
|
end
|
183
180
|
|
181
|
+
# generate commit hash
|
184
182
|
combined_hash = files.map {|f| f[:hash]}.join ''
|
185
183
|
commit_hash = hash_contents "#{DateTime.now.to_s}#{combined_hash}"
|
184
|
+
|
185
|
+
# save to db
|
186
186
|
@DB.execute 'insert into commits (hash,message,created_at) values (?,?,?);',[commit_hash,msg,DateTime.now.to_s]
|
187
187
|
commit_id = @DB.last_insert_row_id
|
188
188
|
|
189
|
+
# add file revisions for all new/modified dependencies
|
189
190
|
files.each do |file|
|
190
191
|
@DB.transaction
|
191
192
|
dependency = get_dependency(file[:path])
|
@@ -198,13 +199,11 @@ class LENSE
|
|
198
199
|
@DB.execute 'insert into revisions (commit_id,dependency_id,hash,created_at) values (?,?,?,?);',[commit_id,dependency_id,file[:hash],DateTime.now.to_s]
|
199
200
|
@DB.commit
|
200
201
|
end
|
202
|
+
|
203
|
+
# empty staging
|
201
204
|
@DB.transaction
|
202
205
|
@DB.execute 'delete from staging;'
|
203
206
|
@DB.commit
|
204
|
-
# add new files to dependancies
|
205
|
-
# create a hash for the commit and add to commits
|
206
|
-
# for all dependancies add current hashes to revisions
|
207
|
-
# truncate staging
|
208
207
|
end
|
209
208
|
|
210
209
|
def stage(file)
|
@@ -260,6 +259,8 @@ class LENSE
|
|
260
259
|
output = `#{cmd}`
|
261
260
|
say "<%= color(' => ',:blue) %> #{output}"
|
262
261
|
end
|
262
|
+
|
263
|
+
run
|
263
264
|
end
|
264
265
|
|
265
266
|
def down
|
@@ -273,6 +274,35 @@ class LENSE
|
|
273
274
|
|
274
275
|
def push(repo)
|
275
276
|
repo = validate_in_repo
|
277
|
+
user, project = repo.split '/'
|
278
|
+
rows = @DB.execute "select path from dependencies where not deleted;"
|
279
|
+
rows.map! { |r| r[0] }
|
280
|
+
|
281
|
+
# only include files < 10 megabytes
|
282
|
+
deps = rows.select do |path|
|
283
|
+
File.size path <= 10.megabytes
|
284
|
+
end
|
285
|
+
|
286
|
+
db_hash = hash_file '.lense/db'
|
287
|
+
tar_fname = "#{user}_#{project}_#{db_hash}.tar"
|
288
|
+
tar_path = ".lense/temp/#{tar_fname}"
|
289
|
+
|
290
|
+
cmd = "tar -c#{TARFLAGS}f #{tar_path} .lense/db #{deps.join ' '}"
|
291
|
+
say "taring up with: #{cmd}"
|
292
|
+
`#{cmd}`
|
293
|
+
|
294
|
+
post_body = {
|
295
|
+
params: {
|
296
|
+
format: 'json',
|
297
|
+
user_token: 'z5kqZTsKU_oXvC3d5j96',
|
298
|
+
tar_file_base64: Base64::encode64(File.read(tar_path)),
|
299
|
+
filename: tar_fname,
|
300
|
+
content_type: "application/x-tar"
|
301
|
+
|
302
|
+
}
|
303
|
+
}
|
304
|
+
response = RestClient.post "#{API_BASE}/#{repo}/push", post_body
|
305
|
+
say "response: #{response}"
|
276
306
|
end
|
277
307
|
|
278
308
|
def pull()
|
@@ -328,10 +358,33 @@ class LENSE
|
|
328
358
|
`tar -x#{TARFLAGS}f #{rel_tar_path}`
|
329
359
|
|
330
360
|
say "done"
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
361
|
+
lense = read_lensefile
|
362
|
+
lense['dependencies'].each do |dep|
|
363
|
+
next unless dep['url']
|
364
|
+
|
365
|
+
# check if file already exists
|
366
|
+
if File.file? dep['path']
|
367
|
+
# skip if same hash
|
368
|
+
if dep['hash'] == hash_file(dep['path'])
|
369
|
+
say "Skipping #{dep['path']}"
|
370
|
+
next
|
371
|
+
# error if different
|
372
|
+
else
|
373
|
+
exit_now!("File already exists and has been modified: #{dep['path']}")
|
374
|
+
end
|
375
|
+
end
|
376
|
+
|
377
|
+
dirs, path = File.split dep['path']
|
378
|
+
FileUtils.mkdir_p dirs unless File.directory? dirs
|
379
|
+
begin
|
380
|
+
say "fetching #{dep['path']} from #{dep['url']}"
|
381
|
+
file_str = RestClient.get dep['url']
|
382
|
+
exit_now!("Problem downloading file: #{dep['path']}") unless dep['hash'] == hash_contents(file_str)
|
383
|
+
File.open(path,'w') { |f| f.write file_str }
|
384
|
+
rescue
|
385
|
+
exit_now!("Unable to fetch dependency: #{dep['url']}")
|
386
|
+
end
|
387
|
+
end
|
335
388
|
end
|
336
389
|
|
337
390
|
private
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lense
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manuel Zubieta
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-04-
|
12
|
+
date: 2015-04-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|