central 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/central +1 -1
  3. data/lib/central.rb +28 -5
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 81f6417d161a53c2d5b0b2785a1e45cb4af4cc5f8f7b18fd8d24fbb18d1d0410
4
- data.tar.gz: 706d8b11e4d38effa588a5fe9c5b7baada931a3de3b5973cea7f1ac6c05e8dfd
3
+ metadata.gz: 562fdc501fa3f7d9b74a949f4d1ca5b62014dffbe0bc0c9e7906c834081b122a
4
+ data.tar.gz: e7972ea4c6e1f552252ea227aa5e5f298b6dbeb47ce07304b5d1030a7d6e6cc9
5
5
  SHA512:
6
- metadata.gz: 1e36f5d6f5c9730c95240fc674020af1d557f57054cb9d4ff1eb15ccaae14776c54060ea662759766bc899ef6f4a85a901e0eec34141742d83707e61a8c65f3c
7
- data.tar.gz: cbfb6d079499dfcdadbb767f5f676292e43e933083f6d13d7008ceb07c31da0c8cc8995931219fac16a1d19a71ea9a39611c4e10f0ce82dc7b6f6db8a6358c88
6
+ metadata.gz: c20230fb3d4617e3386299dacc13bace1f909d079e3ce103cdb7fe0f5f7ea575225b90dd2ba926badc2154518209d8e74b2f21a79a4d186c61cdf0e4d1ce4723
7
+ data.tar.gz: 57f70c6468a316a1fc7a5d713d647dda9509350d03d484677a317935245196d2b30fdc3a35bc45c5ea407b9319238debcb1bb3136c83bebd2f41a47f2d2a0680
data/bin/central CHANGED
@@ -9,7 +9,7 @@
9
9
  require 'central'
10
10
  require 'optparse'
11
11
 
12
- VERSION = 'v0.3.2'
12
+ VERSION = 'v0.3.3'
13
13
 
14
14
  # parse extra options
15
15
  ARGV.each do |option|
data/lib/central.rb CHANGED
@@ -321,6 +321,29 @@ def symlink(from, to)
321
321
  end
322
322
  end
323
323
 
324
+ # extract archive, supports tar, zip, 7z
325
+ def extract(path, todir)
326
+ path = abs(path)
327
+ todir = abs(todir)
328
+ unless file_exists?(path)
329
+ fail "Archive file #{path} does not exists"
330
+ end
331
+ mkdir(todir)
332
+ info 'Extracting archive', "#{path} → #{todir}"
333
+ exit_code = nil, output = nil
334
+ if path.end_with?('.zip')
335
+ exit_code, output, = shell("unzip \"#{path}\" -d \"#{todir}\" 2>&1")
336
+ elsif path.end_with?('.7z')
337
+ exit_code, output, = shell("7z x -o\"#{todir}\" \"#{path}\" 2>&1")
338
+ else
339
+ exit_code, output, = shell("tar -xf \"#{path}\" -C \"#{todir}\" 2>&1")
340
+ end
341
+ unless exit_code.success?
342
+ error output
343
+ fail "Couldn't extract archive", path
344
+ end
345
+ end
346
+
324
347
  # git clone url into a path
325
348
  def git(url, path, branch: nil, silent: true, depth: nil)
326
349
  path = abs(path)
@@ -355,14 +378,14 @@ def git(url, path, branch: nil, silent: true, depth: nil)
355
378
  end
356
379
 
357
380
  # download url into a path using curl
358
- def curl(url, path, content_length_check: false, verbose: false)
381
+ def curl(url, path, content_length_check: false, verbose: false, flags: '-L -s -S')
359
382
  path = abs(path)
360
383
  if content_length_check and file_exists?(path)
361
- content_length = curl_headers(url, verbose: verbose)['content-length'].to_i
384
+ content_length = curl_headers(url, verbose: verbose, flags: flags)['content-length'].to_i
362
385
  return if file_size(path) == content_length
363
386
  end
364
387
  info 'Downloading', "#{url} → #{path}"
365
- exit_code, output, = shell("curl -s -S \"#{url}\"",
388
+ exit_code, output, = shell("curl #{flags} \"#{url}\"",
366
389
  verbose: verbose, silent: true)
367
390
  unless exit_code.success?
368
391
  error output
@@ -373,8 +396,8 @@ def curl(url, path, content_length_check: false, verbose: false)
373
396
  end
374
397
 
375
398
  # get url response headers as Hash using curl
376
- def curl_headers(url, method: 'HEAD', verbose: false)
377
- exit_code, output, = shell("curl -I -X #{method} -s -S \"#{url}\"",
399
+ def curl_headers(url, method: 'HEAD', verbose: false, flags: '-L -s -S')
400
+ exit_code, output, = shell("curl -I -X #{method} #{flags} \"#{url}\"",
378
401
  verbose: verbose, silent: true)
379
402
  unless exit_code.success?
380
403
  error output
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: central
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Geurkov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-11 00:00:00.000000000 Z
11
+ date: 2023-01-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: central dotfile management system
14
14
  email: d.geurkov@gmail.com