bfs 0.3.6 → 0.3.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 56981d0590fb3f90c1dfa56dd3c98f7ae762855dbad9dc6f6d687fda4e08ab37
4
- data.tar.gz: 45c5c0f59d5a5d24dadf62d551047e9e4a9f75e7d94c609a9daf11f75503512c
3
+ metadata.gz: f63579ab84fab2e5ebe18ad08e9565c4510fbaf812a7bc71316df2b4cc9c6c3a
4
+ data.tar.gz: ee8adb7378ca2fddb0b476fd0ca3ea85429d5ab0afde19593b6557a0dae418b5
5
5
  SHA512:
6
- metadata.gz: 7fee255b2c6024ee0152de273e93d24cb949345dc73c889e37977873729428208680e31e5c1aa38512828dc186305c7c1ca419af0759d91fe3f76442f4aafe67
7
- data.tar.gz: 35b8b19811e74576b6881dd0c349768035044e55821b6d626f89537a6a49e87ac3a5d37a5e660dfad34404a8a8923eb76a78c427f29d32a999edf878f6ede9f9
6
+ metadata.gz: 974f6428f3dbfefa68aa9fa2497e4763ee6418fed59afe5408cee7e7166a26952d25fb754737af318c28a8ebd755a50786c04d589742cb073105139fddf4d787
7
+ data.tar.gz: edc36b9aab8e1aabf9846235e50546d01aac0efd5477234bd0bff5ab39b67c85e527972beaba42cfdba545b854cae531c4e02703d298113339facc368e3b605f
@@ -30,16 +30,26 @@ module BFS
30
30
  end
31
31
 
32
32
  # Shortcut method to read the contents of a file into memory
33
+ #
34
+ # @param [String] path The path to read from.
35
+ # @param [Hash] opts Additional options, see #open.
33
36
  def read(path, opts={})
34
37
  open(path, opts, &:read)
35
38
  end
36
39
 
37
40
  # Shortcut method to write data to path
41
+ #
42
+ # @param [String] path The path to write to.
43
+ # @param [String] data The data to write.
44
+ # @param [Hash] opts Additional options, see #create.
38
45
  def write(path, data, opts={})
39
46
  create(path, opts) {|f| f.write data }
40
47
  end
41
48
 
42
49
  # Copies src to dst
50
+ #
51
+ # @param [String] src The source path.
52
+ # @param [String] dst The destination path.
43
53
  def cp(src, dst, opts={})
44
54
  open(src, opts) do |r|
45
55
  create(dst, opts) do |w|
@@ -49,6 +59,9 @@ module BFS
49
59
  end
50
60
 
51
61
  # Moves src to dst
62
+ #
63
+ # @param [String] src The source path.
64
+ # @param [String] dst The destination path.
52
65
  def mv(src, dst, _opts={})
53
66
  cp(src, dst)
54
67
  rm(src)
@@ -30,11 +30,15 @@ module BFS
30
30
  end
31
31
 
32
32
  # Creates a new file and opens it for writing
33
- def create(path, _opts={}, &block)
33
+ #
34
+ # @param [String] path The creation path.
35
+ # @param [Hash] opts Additional options.
36
+ # @option opts [String] :encoding Custom encoding.
37
+ def create(path, opts={}, &block)
34
38
  full = @root.join(norm_path(path))
35
39
  FileUtils.mkdir_p(full.dirname.to_s)
36
40
 
37
- temp = BFS::TempWriter.new(full) {|t| FileUtils.mv t, full.to_s }
41
+ temp = BFS::TempWriter.new(full, opts) {|t| FileUtils.mv t, full.to_s }
38
42
  return temp unless block
39
43
 
40
44
  begin
@@ -45,6 +49,10 @@ module BFS
45
49
  end
46
50
 
47
51
  # Opens an existing file for reading
52
+ #
53
+ # @param [String] path The path to open.
54
+ # @param [Hash] opts Additional options.
55
+ # @option opts [String] :encoding Custom encoding.
48
56
  def open(path, opts={}, &block)
49
57
  path = norm_path(path)
50
58
  full = @root.join(path)
@@ -54,12 +62,17 @@ module BFS
54
62
  end
55
63
 
56
64
  # Deletes a file.
65
+ #
66
+ # @param [String] path The path to delete.
57
67
  def rm(path, _opts={})
58
68
  full = @root.join(norm_path(path))
59
69
  FileUtils.rm_f full.to_s
60
70
  end
61
71
 
62
72
  # Copies a file.
73
+ #
74
+ # @param [String] src The source path.
75
+ # @param [String] dst The destination path.
63
76
  def cp(src, dst, _opts={})
64
77
  full_src = @root.join(norm_path(src))
65
78
  full_dst = @root.join(norm_path(dst))
@@ -70,6 +83,9 @@ module BFS
70
83
  end
71
84
 
72
85
  # Moves a file.
86
+ #
87
+ # @param [String] src The source path.
88
+ # @param [String] dst The destination path.
73
89
  def mv(src, dst, _opts={})
74
90
  full_src = @root.join(norm_path(src))
75
91
  full_dst = @root.join(norm_path(dst))
@@ -34,9 +34,17 @@ module BFS
34
34
  BFS::FileInfo.new(path, entry.io.size, entry.mtime, entry.content_type, entry.metadata)
35
35
  end
36
36
 
37
- # Creates a new file and opens it for writing
37
+ # Creates a new file and opens it for writing.
38
+ #
39
+ # @param [String] path The creation path.
40
+ # @param [Hash] opts Additional options.
41
+ # @option opts [String] :encoding Custom encoding.
42
+ # @option opts [String] :content_type Custom content type.
43
+ # @option opts [Hash] :metadata Metadata key-value pairs.
38
44
  def create(path, opts={}, &block)
39
45
  io = StringIO.new
46
+ opts[:encoding] ? io.set_encoding(opts[:encoding]) : io.binmode
47
+
40
48
  @files[norm_path(path)] = Entry.new(io, Time.now, opts[:content_type], opts[:metadata] || {})
41
49
  return io unless block
42
50
 
@@ -2,9 +2,11 @@ require 'tempfile'
2
2
 
3
3
  module BFS
4
4
  class TempWriter
5
- def initialize(name, &closer)
5
+ def initialize(name, opts={}, &closer)
6
+ opts = opts.merge(binmode: true) unless opts[:encoding]
7
+
6
8
  @closer = closer
7
- @tempfile = ::Tempfile.new(File.basename(name.to_s), binmode: true)
9
+ @tempfile = ::Tempfile.new(File.basename(name.to_s), opts)
8
10
  end
9
11
 
10
12
  def path
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bfs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitrij Denissenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-07 00:00:00.000000000 Z
11
+ date: 2019-04-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Minimalist abstraction for bucket storage
14
14
  email: dimitrij@blacksquaremedia.com
@@ -47,8 +47,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  requirements: []
50
- rubyforge_project:
51
- rubygems_version: 2.7.7
50
+ rubygems_version: 3.0.2
52
51
  signing_key:
53
52
  specification_version: 4
54
53
  summary: Multi-platform cloud bucket adapter