dry-files 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -0
- data/LICENSE +1 -1
- data/README.md +4 -12
- data/lib/dry/files/file_system.rb +19 -0
- data/lib/dry/files/version.rb +1 -1
- data/lib/dry/files.rb +49 -5
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73391c6f7e4e115941911686c45307707e68fa4ba0f4be5a7cebba14d7eeb042
|
4
|
+
data.tar.gz: dcd71ad5b06891df556f0146f2520e4b981024afa06291016e56b194a4f1fb2e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 392bfc69636d993cd92e8462079079ad000ef6ebe60467eee72d30f9e2726fc04705f05ada482cfe0147320abab56afd91b6b782b25e9f3a042c563590d589fd
|
7
|
+
data.tar.gz: 7c3a4723b89339db36f532f7579f6574c593864e6a79cecfc5cc382280d421338fdd2700c1edffb6fb83b5d917102a2c5be63306f2833c555d5250f0a8d9c1da
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,26 @@
|
|
1
1
|
<!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
|
2
2
|
|
3
|
+
## 1.1.0 2023-10-18
|
4
|
+
|
5
|
+
|
6
|
+
### Added
|
7
|
+
|
8
|
+
- Add `Dry::Files#chmod(path, mode)` to modify file permissions. Provide the mode as an integer
|
9
|
+
to match UNIX octal permissions, such as `0o755`. (@timriley in #18)
|
10
|
+
|
11
|
+
|
12
|
+
[Compare v1.0.2...v1.1.0](https://github.com/dry-rb/dry-files/compare/v1.0.2...v1.1.0)
|
13
|
+
|
14
|
+
## 1.0.2 2023-10-03
|
15
|
+
|
16
|
+
|
17
|
+
### Fixed
|
18
|
+
|
19
|
+
- Ensure `Dry::Files#inject_line_at_block_bottom` to not match false positive closing blocks (@jodosha in #17)
|
20
|
+
|
21
|
+
|
22
|
+
[Compare v1.0.1...v1.0.2](https://github.com/dry-rb/dry-files/compare/v1.0.1...v1.0.2)
|
23
|
+
|
3
24
|
## 1.0.1 2022-11-21
|
4
25
|
|
5
26
|
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,29 +1,21 @@
|
|
1
1
|
<!--- this file is synced from dry-rb/template-gem project -->
|
2
2
|
[gem]: https://rubygems.org/gems/dry-files
|
3
3
|
[actions]: https://github.com/dry-rb/dry-files/actions
|
4
|
-
[codacy]: https://www.codacy.com/gh/dry-rb/dry-files
|
5
|
-
[chat]: https://dry-rb.zulipchat.com
|
6
|
-
[inchpages]: http://inch-ci.org/github/dry-rb/dry-files
|
7
4
|
|
8
|
-
# dry-files [![
|
9
|
-
|
10
|
-
[![Gem Version](https://badge.fury.io/rb/dry-files.svg)][gem]
|
11
|
-
[![CI Status](https://github.com/dry-rb/dry-files/workflows/ci/badge.svg)][actions]
|
12
|
-
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/71200ee8d70b412c9e21c20b8b3b3688)][codacy]
|
13
|
-
[![Codacy Badge](https://api.codacy.com/project/badge/Coverage/71200ee8d70b412c9e21c20b8b3b3688)][codacy]
|
14
|
-
[![Inline docs](http://inch-ci.org/github/dry-rb/dry-files.svg?branch=main)][inchpages]
|
5
|
+
# dry-files [![Gem Version](https://badge.fury.io/rb/dry-files.svg)][gem] [![CI Status](https://github.com/dry-rb/dry-files/workflows/ci/badge.svg)][actions]
|
15
6
|
|
16
7
|
## Links
|
17
8
|
|
18
9
|
* [User documentation](https://dry-rb.org/gems/dry-files)
|
19
10
|
* [API documentation](http://rubydoc.info/gems/dry-files)
|
11
|
+
* [Forum](https://discourse.dry-rb.org)
|
20
12
|
|
21
13
|
## Supported Ruby versions
|
22
14
|
|
23
15
|
This library officially supports the following Ruby versions:
|
24
16
|
|
25
|
-
* MRI `>=
|
26
|
-
* jruby `>= 9.
|
17
|
+
* MRI `>= 3.0.0`
|
18
|
+
* jruby `>= 9.4` (not tested on CI)
|
27
19
|
|
28
20
|
## License
|
29
21
|
|
@@ -131,6 +131,25 @@ module Dry
|
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
134
|
+
# Sets UNIX permissions of the file at the given path.
|
135
|
+
#
|
136
|
+
# Accepts permissions in numeric mode only, best provided as octal numbers matching the
|
137
|
+
# standard UNIX octal permission modes, such as `0o544` for a file writeable by its owner and
|
138
|
+
# readable by others, or `0o755` for a file writeable by its owner and executable by everyone.
|
139
|
+
#
|
140
|
+
# @param path [String,Pathname] the path to the file
|
141
|
+
# @param mode [Integer] the UNIX permissions mode
|
142
|
+
#
|
143
|
+
# @raise [Dry::Files::IOError] in case of I/O error
|
144
|
+
#
|
145
|
+
# @since 1.1.0
|
146
|
+
# @api private
|
147
|
+
def chmod(path, mode)
|
148
|
+
with_error_handling do
|
149
|
+
file_utils.chmod(mode, path)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
134
153
|
# Returns a new string formed by joining the strings using Operating
|
135
154
|
# System path separator
|
136
155
|
#
|
data/lib/dry/files/version.rb
CHANGED
data/lib/dry/files.rb
CHANGED
@@ -82,6 +82,25 @@ module Dry
|
|
82
82
|
adapter.write(path, *content)
|
83
83
|
end
|
84
84
|
|
85
|
+
# Sets UNIX permissions of the file at the given path.
|
86
|
+
#
|
87
|
+
# Accepts permissions in numeric mode only, best provided as octal numbers matching the
|
88
|
+
# standard UNIX octal permission modes, such as `0o544` for a file writeable by its owner and
|
89
|
+
# readable by others, or `0o755` for a file writeable by its owner and executable by everyone.
|
90
|
+
#
|
91
|
+
# @param path [String,Pathname] the path to the file
|
92
|
+
# @param mode [Integer] the UNIX permissions mode
|
93
|
+
#
|
94
|
+
# @raise [Dry::Files::IOError] in case of I/O error
|
95
|
+
#
|
96
|
+
# @since 1.1.0
|
97
|
+
# @api public
|
98
|
+
def chmod(path, mode)
|
99
|
+
raise Dry::Files::Error, "mode should be an integer (e.g. 0o755)" unless mode.is_a?(Integer)
|
100
|
+
|
101
|
+
adapter.chmod(path, mode)
|
102
|
+
end
|
103
|
+
|
85
104
|
# Returns a new string formed by joining the strings using Operating
|
86
105
|
# System path separator
|
87
106
|
#
|
@@ -841,6 +860,11 @@ module Dry
|
|
841
860
|
# @since 0.3.0
|
842
861
|
# @api private
|
843
862
|
class Delimiter
|
863
|
+
# @since 1.0.2
|
864
|
+
# @api private
|
865
|
+
SPACE_MATCHER_GENERAL = /[[:space:]]*/
|
866
|
+
private_constant :SPACE_MATCHER_GENERAL
|
867
|
+
|
844
868
|
# @since 0.3.0
|
845
869
|
# @api private
|
846
870
|
attr_reader :opening, :closing
|
@@ -853,6 +877,26 @@ module Dry
|
|
853
877
|
@closing = closing
|
854
878
|
freeze
|
855
879
|
end
|
880
|
+
|
881
|
+
# @since 1.0.2
|
882
|
+
# @api private
|
883
|
+
def opening_matcher
|
884
|
+
matcher(opening)
|
885
|
+
end
|
886
|
+
|
887
|
+
# @since 1.0.2
|
888
|
+
# @api private
|
889
|
+
def closing_matcher
|
890
|
+
matcher(closing)
|
891
|
+
end
|
892
|
+
|
893
|
+
private
|
894
|
+
|
895
|
+
# @since 1.0.2
|
896
|
+
# @api private
|
897
|
+
def matcher(delimiter)
|
898
|
+
/#{SPACE_MATCHER_GENERAL}\b#{delimiter}\b(?:#{SPACE_MATCHER_GENERAL}|#{NEW_LINE_MATCHER})/
|
899
|
+
end
|
856
900
|
end
|
857
901
|
|
858
902
|
# @since 0.1.0
|
@@ -862,12 +906,12 @@ module Dry
|
|
862
906
|
|
863
907
|
# @since 0.3.0
|
864
908
|
# @api private
|
865
|
-
NEW_LINE_MATCHER = /#{NEW_LINE}\z
|
909
|
+
NEW_LINE_MATCHER = /#{NEW_LINE}\z/
|
866
910
|
private_constant :NEW_LINE_MATCHER
|
867
911
|
|
868
912
|
# @since 0.3.0
|
869
913
|
# @api private
|
870
|
-
EMPTY_LINE = /\A\z
|
914
|
+
EMPTY_LINE = /\A\z/
|
871
915
|
private_constant :EMPTY_LINE
|
872
916
|
|
873
917
|
# @since 0.1.0
|
@@ -887,7 +931,7 @@ module Dry
|
|
887
931
|
|
888
932
|
# @since 0.1.0
|
889
933
|
# @api private
|
890
|
-
SPACE_MATCHER = /\A[[:space:]]
|
934
|
+
SPACE_MATCHER = /\A[[:space:]]*/
|
891
935
|
private_constant :SPACE_MATCHER
|
892
936
|
|
893
937
|
# @since 0.3.0
|
@@ -967,9 +1011,9 @@ module Dry
|
|
967
1011
|
# @since 0.3.0
|
968
1012
|
# @api private
|
969
1013
|
def closing_block_index(content, starting, path, target, delimiter, count_offset = 0) # rubocop:disable Metrics/ParameterLists
|
970
|
-
blocks_count = content.count { |line| line.match?(delimiter.
|
1014
|
+
blocks_count = content.count { |line| line.match?(delimiter.opening_matcher) } + count_offset
|
971
1015
|
matching_line = content.find do |line|
|
972
|
-
blocks_count -= 1 if line.match?(delimiter.
|
1016
|
+
blocks_count -= 1 if line.match?(delimiter.closing_matcher)
|
973
1017
|
line if blocks_count.zero?
|
974
1018
|
end
|
975
1019
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-files
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -67,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
requirements: []
|
70
|
-
rubygems_version: 3.
|
70
|
+
rubygems_version: 3.3.26
|
71
71
|
signing_key:
|
72
72
|
specification_version: 4
|
73
73
|
summary: file utilities
|