central 0.3.2 → 0.3.3

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/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