file_loader 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 20166382acf8d574784bb8e701df90a86ce57d0a
4
- data.tar.gz: 80aef5c99adf2db35f73d83da8dfee24dbf8916a
3
+ metadata.gz: a38a99763a2f2b7161408df4885cef39a0498d0f
4
+ data.tar.gz: e4c6a6d161429b7346bcfbc544a1e6819bace1ec
5
5
  SHA512:
6
- metadata.gz: 3cf7ffb81bcb4c6ee6f419918a13c08f4efda3e15b44ad677860e8cf1c9f4c4919b4d9604a805f43e47596f8fcf5aff9ea21e4ac1471c210a4faee14cbb02166
7
- data.tar.gz: 093fd90d4227c6dc98cb2ee4c051cb66cd31813713fb0275ce1fe67b91b8bc25078acc9746431179e29d11792c93f42372d52597661cb8f259e34be914872715
6
+ metadata.gz: 8697676b11c6709402cd1df1e40482b5693f16c4f4ea329ea72e63328ceeb2cf8b4b5b328081f81db1bb9a9acb7a34c702d347354a873d64d4f8033e3a0b6334
7
+ data.tar.gz: d9b245e098a9b84e6f4f6203544978f43dda8115503d75c7f0d6b7dbb7b4f3b8854330d990980db47a5903df5127e04afcd07bcd1dbbfef337f43466be0778af
data/lib/file_loader.rb CHANGED
@@ -6,37 +6,45 @@ require 'fileutils'
6
6
  module FileLoader
7
7
  extend self
8
8
 
9
- def parse(url)
9
+ def parse_url(url)
10
10
  url.match(/^(?:(?<protocol>\w+):\/\/(?:(?<user>.+?)(?:\:(?<password>.+?))?@)?(?<host>.+?):?)?(?<path>\/.+)?$/) or raise("Invalid url #{url}")
11
11
  end
12
12
 
13
+ def build_url(opts)
14
+ res = ''
15
+ res += "#{opts[:protocol]}://" if opts[:protocol]
16
+ res += opts[:user].to_s
17
+ res += ":#{opts[:password]}" if opts[:password]
18
+ res += '@' if opts[:user]
19
+ res += "#{opts[:host]}:" if opts[:host]
20
+ res += opts[:path].to_s
21
+ end
22
+
13
23
  def download(src, dst, opts = {})
14
24
  src = src.shellescape
15
25
  dst = dst.shellescape
16
- parsed_src = parse(src)
26
+ psrc = parse_url(src)
17
27
  unless Dir.exists?(File.dirname(dst))
18
28
  FileUtils.mkdir_p(File.dirname(dst), :mode => opts[:permissions] ? opts[:permissions].to_i(8) : nil)
19
29
  end
20
- case parsed_src[:protocol]
30
+ case psrc[:protocol]
21
31
  when 'http', 'https', 'ftp'
22
32
  cmd = "wget #{src} -O #{dst}"
23
33
  when 'scp'
24
- if Socket.gethostname == parsed_src[:host]
25
- cmd = cp_cmd(parsed_src[:path], dst)
34
+ if Socket.gethostname == psrc[:host]
35
+ cmd = cp_cmd(psrc[:path], dst)
26
36
  else
27
37
  cmd = "scp -r -oBatchMode=yes -oStrictHostKeyChecking=no "
28
38
  cmd += "-l #{speed_limit} " if opts[:speed_limit]
29
39
  cmd += '"'
30
- user = parsed_src[:user] || opts[:user]
31
- cmd += user if user
32
- cmd += ":#{parsed_src[:password]}" if parsed_src[:password]
33
- cmd += '@' if user
34
- cmd += "#{parsed_src[:host]}:#{parsed_src[:path]}\" #{dst}"
40
+ cmd += build_url(user: psrc[:user] || opts[:user], password: psrc[:password] || opts[:password], host: psrc[:host], path: psrc[:path])
41
+ cmd += '"'
42
+ cmd += " \"#{dst}\""
35
43
  end
36
44
  when nil
37
45
  cmd = cp_cmd(src, dst)
38
46
  else
39
- raise "Unsupported protocol #{parsed_src[:protocol]}"
47
+ raise "Unsupported protocol #{psrc[:protocol]}"
40
48
  end
41
49
  opts[:logger].debug(cmd) if opts[:logger]
42
50
  exec_cmd(cmd, opts[:retries].to_i) unless opts[:dry_run]
@@ -45,7 +53,7 @@ module FileLoader
45
53
  def upload(src, dst, opts = {})
46
54
  src = src.shellescape
47
55
  dst = dst.shellescape
48
- parsed_dst = parse(dst)
56
+ parsed_dst = parse_url(dst)
49
57
  case parsed_dst[:protocol]
50
58
  when 'scp'
51
59
  if Socket.gethostname == parsed_dst[:host]
@@ -1,3 +1,3 @@
1
1
  module FileLoader
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: file_loader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - novikov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-15 00:00:00.000000000 Z
11
+ date: 2015-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler