lense 0.1.39 → 0.1.40

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/lense +3 -2
  3. data/lib/lense.rb +66 -7
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9d7d65178e1451e35da987d1506c2a4deebfc311
4
- data.tar.gz: 88ae8045d093a1a8e0e205d389387f4aeef7fac2
3
+ metadata.gz: f8046ab388fd8787dd774068dbbd8cdd22cd24ca
4
+ data.tar.gz: 9c5db94e5ca701d53dc14948c6e3b184140beb44
5
5
  SHA512:
6
- metadata.gz: b032fab4a714bc5506df1e6299dc9cb84cb7b2827508df14b5865b17ee4b1a8c2d65708e7596aa3a64cae1bd076c02416d6c5375ece7b637c534382f1c13252b
7
- data.tar.gz: 69aa8053300cd931ae128c41438aaf95315c5e61bdab41f03020664bf0747b4922d91c2cd57c977a23a1e461d37f77b054a9727e64a3b3d20b6465374e8eb567
6
+ metadata.gz: 93caf439b7d324d6edda091945a0402dee0977cddd7c903bff1497e7884dca3c2d5da36553629c0a9ea69720afee14abc61832dab304453ca8aaedaf2799829b
7
+ data.tar.gz: 4b50ba8a0f1f43aca9223414530a3870a92c60a0f99b82a742495573809750561a509465e44438b3298f490520be9c6b37e4b085dc0e68de7c0e70d13172d453
data/bin/lense CHANGED
@@ -90,8 +90,9 @@ command :select do |c|
90
90
  end
91
91
 
92
92
  command :commit do |c|
93
- c.action do
94
- LENSE_APP.commit
93
+ c.action do |global_options,options,args|
94
+ exit_now!('Must supply files.') if args.count < 1
95
+ LENSE_APP.commit args.join(' ')
95
96
  end
96
97
  end
97
98
 
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.39'
9
+ VERSION = '0.1.40'
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')
@@ -150,7 +150,9 @@ class LENSE
150
150
  # - - output any ones that have changed
151
151
  end
152
152
 
153
- def commit()
153
+ def commit(msg)
154
+ # check that we have items in staging
155
+ rows = @DB.execute 'select path from staging;'
154
156
  # add new files to dependancies
155
157
  # create a hash for the commit and add to commits
156
158
  # for all dependancies add current hashes to revisions
@@ -158,10 +160,28 @@ class LENSE
158
160
  end
159
161
 
160
162
  def stage(file)
161
- if File.file?(file) # and new or modified
162
- @DB.transaction
163
- @DB.execute "insert into staging (path) values (?);", file
164
- @DB.commit
163
+ if File.file?(file)
164
+ dependency = get_dependency(file)
165
+ if depenency.nil?
166
+ should_stage = true
167
+ else
168
+ current_hash = Digest::SHA256.hexdigest(File.read(file))
169
+ rows = @DB.execute "select "
170
+ # is it modified?
171
+ if rows.length == 0
172
+ say "Staging because we haven't seen this revision"
173
+ should_stage = true
174
+ else
175
+ say "Not Staging because we've seen this file"
176
+ should_stage = false
177
+ end
178
+ end
179
+
180
+ if should_stage
181
+ @DB.transaction
182
+ @DB.execute "insert into staging (path) values (?);", file
183
+ @DB.commit
184
+ end
165
185
  end
166
186
  end
167
187
 
@@ -177,27 +197,61 @@ class LENSE
177
197
  end
178
198
 
179
199
  private
200
+ def get_dependency(file)
201
+ rows = @DB.execute("
202
+ select d.id, d.path, d.added_at, r.hash, r.created_at, c.hash
203
+ from dependencies d
204
+ join revisions r on r.dependency_id = d.id
205
+ join commits c on c.id = r.commit_id
206
+ where
207
+ d.path = ?
208
+ and d.deleted = 0
209
+ order by r.created_at desc
210
+ limit 1;
211
+ ", file)
212
+ if rows.length > 0
213
+ id, path, added_at, file_hash, saved_at, commit_hash = row[0]
214
+
215
+ {
216
+ id: id,
217
+ path: path,
218
+ added_at: added_at,
219
+ file_hash: file_hash,
220
+ saved_at: saved_at,
221
+ commit_hash: commit_hash
222
+ }
223
+ else
224
+ nil
225
+ end
226
+ end
227
+
180
228
  def setup_db()
181
229
  @DB.execute <<-SQL
182
230
  CREATE TABLE IF NOT EXISTS dependencies (
183
231
  id integer primary key autoincrement,
184
232
  path text not null,
185
- added_at datetime not null
233
+ added_at datetime not null,
234
+ deleted bool default false
186
235
  );
187
236
  SQL
237
+
188
238
  @DB.execute <<-SQL
189
239
  CREATE UNIQUE INDEX IF NOT EXISTS dependency_path_idx ON dependencies (path);
190
240
  SQL
241
+
191
242
  @DB.execute <<-SQL
192
243
  CREATE TABLE IF NOT EXISTS commits (
193
244
  id integer primary key autoincrement,
194
245
  hash text not null,
246
+ message text not null,
195
247
  created_at datetime not null
196
248
  );
197
249
  SQL
250
+
198
251
  @DB.execute <<-SQL
199
252
  CREATE INDEX IF NOT EXISTS commits_hash_idx ON commits (hash);
200
253
  SQL
254
+
201
255
  @DB.execute <<-SQL
202
256
  CREATE TABLE IF NOT EXISTS revisions (
203
257
  id integer primary key autoincrement,
@@ -207,21 +261,26 @@ class LENSE
207
261
  created_at datetime not null
208
262
  );
209
263
  SQL
264
+
210
265
  @DB.execute <<-SQL
211
266
  CREATE INDEX IF NOT EXISTS revisions_hash_idx ON revisions (hash);
212
267
  SQL
268
+
213
269
  @DB.execute <<-SQL
214
270
  CREATE INDEX IF NOT EXISTS revisions_dependency_id_idx ON revisions (dependency_id);
215
271
  SQL
272
+
216
273
  @DB.execute <<-SQL
217
274
  CREATE INDEX IF NOT EXISTS revisions_commit_id_idx ON revisions (commit_id);
218
275
  SQL
276
+
219
277
  @DB.execute <<-SQL
220
278
  CREATE TABLE IF NOT EXISTS staging (
221
279
  id integer primary key autoincrement,
222
280
  path text not null
223
281
  );
224
282
  SQL
283
+
225
284
  @DB.execute <<-SQL
226
285
  CREATE UNIQUE INDEX IF NOT EXISTS staging_path_idx ON staging (path);
227
286
  SQL
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.1.39
4
+ version: 0.1.40
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-24 00:00:00.000000000 Z
12
+ date: 2015-04-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake