file_pool 0.4.0 → 0.5.0

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
  SHA1:
3
- metadata.gz: c7f119ba9e27968da351cae536fb49dcb7e8c967
4
- data.tar.gz: 5f774c28a82bbca70a397343132c3258aea9cadd
3
+ metadata.gz: 92b693e812622ddf1df122afe233c2bde4907921
4
+ data.tar.gz: e126ad5ff94b137c1bd983ea64b438dd60129aff
5
5
  SHA512:
6
- metadata.gz: ed3d39e566dc996e3c0f5909443190514770bd1a48c87fbbf65fdc950d2a92bb0e6c5df897070a5acdda1fc82157d2b40bf27fdf4d8eca48b70b0adec4536f2e
7
- data.tar.gz: 366078e33a3fa105a5254cc41acaf625033ad3daff5417bcecc1487b3b23f99a345e8fc03dc3389983affe6478cd600d9451d5c6b5a3f38d5e494f7af3cec581
6
+ metadata.gz: 0e34e2384e4d185ef4c6063892c18799d82d2b5e8825090d16c843d34e0b33f58e1b0641158e502252e5559226d206480b21027dc25ef41a37a64143ae45ba35
7
+ data.tar.gz: 0db3ef7390c70efd6cc77cb147a0147273caafe9ef0d905866dbd3b8981dd923d7bc25305d5d54bde87318d1a6e424be63559631e5e22efa1134340018d9280a
data/lib/file_pool.rb CHANGED
@@ -26,13 +26,33 @@ module FilePool
26
26
  # * :encryption_block_size (Integer) sets the block size for
27
27
  # encryption/decryption in bytes. Larger blocks need more memory and less time (less IO).
28
28
  # Defaults to 1'048'576 (1 MiB).
29
+ # * :copy_source (true,false)
30
+ # if +false+ files added to the pool are hard-linked with the source if source and file pool
31
+ # are on the same file system (default). If set to +true+ files are always copied into the pool.
32
+ # * :mode (Integer)
33
+ # File mode to set on all files added to the pool. E.g. +mode:+ +0640+ for +rw-r-----+ or symbolic "u=wrx,go=rx"
34
+ # (see Ruby stdlib FileUtils#chmod).
35
+ # Note that the desired mode is not set if the file is hard-linked with the source.
36
+ # Use +copy_source:true+ when to ensure.
37
+ # * :owner
38
+ # Owner of the files added to the pool.
39
+ # Note that the desired owner is not set if the file is hard-linked with the source.
40
+ # Use +copy_source:true+ when to ensure.
41
+ # * :group
42
+ # Group of the files added to the pool.
43
+ # Note that the desired group is not set if the file is hard-linked with the source.
44
+ # Use +copy_source:true+ when to ensure.
29
45
  def self.setup root, options={}
30
- unless(unknown = options.keys - [:encryption_block_size, :secrets_file]).empty?
46
+ unless(unknown = options.keys - [:encryption_block_size, :secrets_file, :copy_source, :mode, :owner, :group]).empty?
31
47
  puts "FilePool Warning: unknown option(s) passed to #setup: #{unknown.inspect}"
32
48
  end
33
49
  @@root = root
34
50
  @@crypted_mode = false
35
51
  @@block_size = options[:encryption_block_size] || (1024*1024)
52
+ @@copy_source = options[:copy_source] || false
53
+ @@mode = options[:mode]
54
+ @@group = options[:group]
55
+ @@owner = options[:owner]
36
56
  configure options[:secrets_file]
37
57
  end
38
58
 
@@ -64,13 +84,16 @@ module FilePool
64
84
  else
65
85
  FileUtils.mkpath(id2dir newid)
66
86
  end
67
- FileUtils.link(path, target)
68
87
 
69
- return newid
88
+ if !@@copy_source and (File.stat(path).dev == File.stat(File.dirname(target)).dev)
89
+ FileUtils.link(path, target)
90
+ else
91
+ FileUtils.copy(path, target)
92
+ FileUtils.chmod(@@mode, target) if @@mode
93
+ FileUtils.chown(@@owner, @@group, target)
94
+ end
70
95
 
71
- rescue Errno::EXDEV
72
- FileUtils.copy(path, target)
73
- return newid
96
+ newid
74
97
  end
75
98
 
76
99
  #
@@ -90,7 +113,7 @@ module FilePool
90
113
  def self.add path
91
114
  self.add!(path)
92
115
 
93
- rescue Exception => ex
116
+ rescue Exception
94
117
  return false
95
118
  end
96
119
 
@@ -1,3 +1,3 @@
1
1
  module FilePool
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
metadata CHANGED
@@ -1,29 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: file_pool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - robokopp (Robert Anniés)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-20 00:00:00.000000000 Z
11
+ date: 2018-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: uuidtools
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 2.1.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.1.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description: |
28
42
  FilePool helps to manage a large number of files in a Ruby
29
43
  project. It takes care of the storage of files in a balanced directory
@@ -47,19 +61,18 @@ require_paths:
47
61
  - lib
48
62
  required_ruby_version: !ruby/object:Gem::Requirement
49
63
  requirements:
50
- - - ~>
64
+ - - "~>"
51
65
  - !ruby/object:Gem::Version
52
66
  version: '2.0'
53
67
  required_rubygems_version: !ruby/object:Gem::Requirement
54
68
  requirements:
55
- - - '>='
69
+ - - ">="
56
70
  - !ruby/object:Gem::Version
57
71
  version: '0'
58
72
  requirements: []
59
73
  rubyforge_project:
60
- rubygems_version: 2.4.6
74
+ rubygems_version: 2.5.2
61
75
  signing_key:
62
76
  specification_version: 4
63
77
  summary: Manage a large number files in a pool
64
78
  test_files: []
65
- has_rdoc: