rubysl-ftools 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 74b4dfc8ddaf27b36022f78e7253893aa3f6a700
4
+ data.tar.gz: e5e8f66accf3b1610355fcf5c1bb1f612a5f1558
5
+ SHA512:
6
+ metadata.gz: 3d45833925ee35c79188d5e4af0a9b360fa01048dc36f423d8efecbf1995eec9b8739d1be524b2b0f81fc2f8786b8868488e20d80c5f27a48e039099258973ec
7
+ data.tar.gz: 2ddf2e33d6d8dcb34d4f5a6da6ac99f8b63226d8cb84c43c335480396904f526b72f0dd33b4dba7aa6b3753848f27c7f29592989a514dd1014cadf63f331cf78
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ env:
3
+ - RUBYLIB=lib
4
+ script: bundle exec mspec
5
+ rvm:
6
+ - 1.8.7
7
+ - rbx-nightly-18mode
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rubysl-ftools.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,25 @@
1
+ Copyright (c) 2013, Brian Shirai
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+
7
+ 1. Redistributions of source code must retain the above copyright notice, this
8
+ list of conditions and the following disclaimer.
9
+ 2. Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+ 3. Neither the name of the library nor the names of its contributors may be
13
+ used to endorse or promote products derived from this software without
14
+ specific prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
+ DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY DIRECT,
20
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23
+ OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
25
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Rubysl::Ftools
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'rubysl-ftools'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install rubysl-ftools
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/lib/ftools.rb ADDED
@@ -0,0 +1 @@
1
+ require "rubysl/ftools"
@@ -0,0 +1,2 @@
1
+ require "rubysl/ftools/ftools"
2
+ require "rubysl/ftools/version"
@@ -0,0 +1,261 @@
1
+ #
2
+ # = ftools.rb: Extra tools for the File class
3
+ #
4
+ # Author:: WATANABE, Hirofumi
5
+ # Documentation:: Zachary Landau
6
+ #
7
+ # This library can be distributed under the terms of the Ruby license.
8
+ # You can freely distribute/modify this library.
9
+ #
10
+ # It is included in the Ruby standard library.
11
+ #
12
+ # == Description
13
+ #
14
+ # ftools adds several (class, not instance) methods to the File class, for
15
+ # copying, moving, deleting, installing, and comparing files, as well as
16
+ # creating a directory path. See the File class for details.
17
+ #
18
+ # FileUtils contains all or nearly all the same functionality and more, and
19
+ # is a recommended option over ftools
20
+ #
21
+ # When you
22
+ #
23
+ # require 'ftools'
24
+ #
25
+ # then the File class aquires some utility methods for copying, moving, and
26
+ # deleting files, and more.
27
+ #
28
+ # See the method descriptions below, and consider using FileUtils as it is
29
+ # more comprehensive.
30
+ #
31
+ class File
32
+ end
33
+
34
+ class << File
35
+
36
+ BUFSIZE = 8 * 1024
37
+
38
+ #
39
+ # If +to+ is a valid directory, +from+ will be appended to +to+, adding
40
+ # and escaping backslashes as necessary. Otherwise, +to+ will be returned.
41
+ # Useful for appending +from+ to +to+ only if the filename was not specified
42
+ # in +to+.
43
+ #
44
+ def catname(from, to)
45
+ if directory? to
46
+ join to.sub(%r([/\\]$), ''), basename(from)
47
+ else
48
+ to
49
+ end
50
+ end
51
+
52
+ #
53
+ # Copies a file +from+ to +to+. If +to+ is a directory, copies +from+
54
+ # to <tt>to/from</tt>.
55
+ #
56
+ def syscopy(from, to)
57
+ to = catname(from, to)
58
+
59
+ fmode = stat(from).mode
60
+ tpath = to
61
+ not_exist = !exist?(tpath)
62
+
63
+ from = open(from, "rb")
64
+ to = open(to, "wb")
65
+
66
+ begin
67
+ while true
68
+ to.syswrite from.sysread(BUFSIZE)
69
+ end
70
+ rescue EOFError
71
+ ret = true
72
+ rescue
73
+ ret = false
74
+ ensure
75
+ to.close
76
+ from.close
77
+ end
78
+ chmod(fmode, tpath) if not_exist
79
+ ret
80
+ end
81
+
82
+ #
83
+ # Copies a file +from+ to +to+ using #syscopy. If +to+ is a directory,
84
+ # copies +from+ to <tt>to/from</tt>. If +verbose+ is true, <tt>from -> to</tt>
85
+ # is printed.
86
+ #
87
+ def copy(from, to, verbose = false)
88
+ $stderr.print from, " -> ", catname(from, to), "\n" if verbose
89
+ syscopy from, to
90
+ end
91
+
92
+ alias cp copy
93
+
94
+ #
95
+ # Moves a file +from+ to +to+ using #syscopy. If +to+ is a directory,
96
+ # copies from +from+ to <tt>to/from</tt>. If +verbose+ is true, <tt>from ->
97
+ # to</tt> is printed.
98
+ #
99
+ def move(from, to, verbose = false)
100
+ to = catname(from, to)
101
+ $stderr.print from, " -> ", to, "\n" if verbose
102
+
103
+ if RUBY_PLATFORM =~ /djgpp|(cyg|ms|bcc)win|mingw/ and file? to
104
+ unlink to
105
+ end
106
+ fstat = stat(from)
107
+ begin
108
+ rename from, to
109
+ rescue
110
+ begin
111
+ symlink readlink(from), to and unlink from
112
+ rescue
113
+ from_stat = stat(from)
114
+ syscopy from, to and unlink from
115
+ utime(from_stat.atime, from_stat.mtime, to)
116
+ begin
117
+ chown(fstat.uid, fstat.gid, to)
118
+ rescue
119
+ end
120
+ end
121
+ end
122
+ end
123
+
124
+ alias mv move
125
+
126
+ #
127
+ # Returns +true+ if and only if the contents of files +from+ and +to+ are
128
+ # identical. If +verbose+ is +true+, <tt>from <=> to</tt> is printed.
129
+ #
130
+ def compare(from, to, verbose = false)
131
+ $stderr.print from, " <=> ", to, "\n" if verbose
132
+
133
+ return false if stat(from).size != stat(to).size
134
+
135
+ from = open(from, "rb")
136
+ to = open(to, "rb")
137
+
138
+ ret = false
139
+ fr = tr = ''
140
+
141
+ begin
142
+ while fr == tr
143
+ fr = from.read(BUFSIZE)
144
+ if fr
145
+ tr = to.read(fr.size)
146
+ else
147
+ ret = to.read(BUFSIZE)
148
+ ret = !ret || ret.length == 0
149
+ break
150
+ end
151
+ end
152
+ rescue
153
+ ret = false
154
+ ensure
155
+ to.close
156
+ from.close
157
+ end
158
+ ret
159
+ end
160
+
161
+ alias cmp compare
162
+
163
+ #
164
+ # Removes a list of files. Each parameter should be the name of the file to
165
+ # delete. If the last parameter isn't a String, verbose mode will be enabled.
166
+ # Returns the number of files deleted.
167
+ #
168
+ def safe_unlink(*files)
169
+ verbose = if files[-1].is_a? String then false else files.pop end
170
+ files.each do |file|
171
+ begin
172
+ unlink file
173
+ $stderr.print "removing ", file, "\n" if verbose
174
+ rescue Errno::EACCES # for Windows
175
+ continue if symlink? file
176
+ begin
177
+ mode = stat(file).mode
178
+ o_chmod mode | 0200, file
179
+ unlink file
180
+ $stderr.print "removing ", file, "\n" if verbose
181
+ rescue
182
+ o_chmod mode, file rescue nil
183
+ end
184
+ rescue
185
+ end
186
+ end
187
+ end
188
+
189
+ alias rm_f safe_unlink
190
+
191
+ #
192
+ # Creates a directory and all its parent directories.
193
+ # For example,
194
+ #
195
+ # File.makedirs '/usr/lib/ruby'
196
+ #
197
+ # causes the following directories to be made, if they do not exist.
198
+ # * /usr
199
+ # * /usr/lib
200
+ # * /usr/lib/ruby
201
+ #
202
+ # You can pass several directories, each as a parameter. If the last
203
+ # parameter isn't a String, verbose mode will be enabled.
204
+ #
205
+ def makedirs(*dirs)
206
+ verbose = if dirs[-1].is_a? String then false else dirs.pop end
207
+ mode = 0755
208
+ for dir in dirs
209
+ parent = dirname(dir)
210
+ next if parent == dir or directory? dir
211
+ makedirs parent unless directory? parent
212
+ $stderr.print "mkdir ", dir, "\n" if verbose
213
+ if basename(dir) != ""
214
+ begin
215
+ Dir.mkdir dir, mode
216
+ rescue SystemCallError
217
+ raise unless directory? dir
218
+ end
219
+ end
220
+ end
221
+ end
222
+
223
+ alias mkpath makedirs
224
+
225
+ alias o_chmod chmod
226
+
227
+ vsave, $VERBOSE = $VERBOSE, false
228
+
229
+ #
230
+ # Changes permission bits on +files+ to the bit pattern represented
231
+ # by +mode+. If the last parameter isn't a String, verbose mode will
232
+ # be enabled.
233
+ #
234
+ # File.chmod 0755, 'somecommand'
235
+ # File.chmod 0644, 'my.rb', 'your.rb', true
236
+ #
237
+ def chmod(mode, *files)
238
+ verbose = if files[-1].is_a? String then false else files.pop end
239
+ $stderr.printf "chmod %04o %s\n", mode, files.join(" ") if verbose
240
+ o_chmod mode, *files
241
+ end
242
+ $VERBOSE = vsave
243
+
244
+ #
245
+ # If +src+ is not the same as +dest+, copies it and changes the permission
246
+ # mode to +mode+. If +dest+ is a directory, destination is <tt>dest/src</tt>.
247
+ # If +mode+ is not set, default is used. If +verbose+ is set to true, the
248
+ # name of each file copied will be printed.
249
+ #
250
+ def install(from, to, mode = nil, verbose = false)
251
+ to = catname(from, to)
252
+ unless exist? to and cmp from, to
253
+ safe_unlink to if exist? to
254
+ cp from, to, verbose
255
+ chmod mode, to, verbose if mode
256
+ end
257
+ end
258
+
259
+ end
260
+
261
+ # vi:set sw=2:
@@ -0,0 +1,5 @@
1
+ module RubySL
2
+ module FTools
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ require './lib/rubysl/ftools/version'
3
+
4
+ Gem::Specification.new do |spec|
5
+ spec.name = "rubysl-ftools"
6
+ spec.version = RubySL::FTools::VERSION
7
+ spec.authors = ["Brian Shirai"]
8
+ spec.email = ["brixen@gmail.com"]
9
+ spec.description = %q{Ruby standard library ftools.}
10
+ spec.summary = %q{Ruby standard library ftools.}
11
+ spec.homepage = "https://github.com/rubysl/rubysl-ftools"
12
+ spec.license = "BSD"
13
+
14
+ spec.files = `git ls-files`.split($/)
15
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
16
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
+ spec.require_paths = ["lib"]
18
+
19
+ spec.add_development_dependency "bundler", "~> 1.3"
20
+ spec.add_development_dependency "rake", "~> 10.0"
21
+ spec.add_development_dependency "mspec", "~> 1.5"
22
+ spec.add_development_dependency "rubysl-prettyprint", "~> 1.0"
23
+ end
@@ -0,0 +1,18 @@
1
+ ruby_version_is ""..."1.9" do
2
+
3
+ require 'ftools'
4
+
5
+ describe "File.catname" do
6
+ it "returns the 2nd arg if it's not a directory" do
7
+ File.catname("blah", "/etc/passwd").should == "/etc/passwd"
8
+ end
9
+
10
+ it "uses File.join with the args" do
11
+ File.catname("passwd", ".").should == "./passwd"
12
+ end
13
+
14
+ it "uses File.basename on the 1st arg before joining" do
15
+ File.catname("etc/passwd", ".").should == "./passwd"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,28 @@
1
+ ruby_version_is ""..."1.9" do
2
+
3
+ # the tests below are windows-hostile
4
+ platform_is_not :windows do
5
+ require 'ftools'
6
+
7
+ describe "File.chmod" do
8
+ before(:each) do
9
+ (1..2).each do |n|
10
+ system "echo 'hello rubinius' > chmod_test_#{n}"
11
+ system "chmod 0777 chmod_test_#{n}"
12
+ end
13
+ end
14
+
15
+ after(:each) do
16
+ (1..2).each { |n| File.unlink "chmod_test_#{n}" rescue nil }
17
+ end
18
+
19
+ it "changes the mode to 1st arg for files in 2nd arg" do
20
+ `ls -l chmod_test_1`.should =~ /^-rwxrwxrwx/
21
+ `ls -l chmod_test_2`.should =~ /^-rwxrwxrwx/
22
+ File.chmod 0644, "chmod_test_1", "chmod_test_2"
23
+ `ls -l chmod_test_1`.should =~ /^-rw-r--r--/
24
+ `ls -l chmod_test_2`.should =~ /^-rw-r--r--/
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,29 @@
1
+ ruby_version_is ""..."1.9" do
2
+
3
+ require 'ftools'
4
+
5
+ describe "File.compare" do
6
+ before(:each) do
7
+ (1..3).to_a.each do |n|
8
+ if n == 3
9
+ system "echo 'hello mri' > compare_test_#{n}"
10
+ else
11
+ system "echo 'hello rubinius' > compare_test_#{n}"
12
+ end
13
+ system "chmod a+x compare_test_#{n}"
14
+ end
15
+ end
16
+
17
+ after(:each) do
18
+ (1..3).to_a.each { |n| File.unlink "compare_test_#{n}" }
19
+ end
20
+
21
+ it "compares the file at 1st arg to the file at 2nd arg" do
22
+ File.compare("compare_test_1", "compare_test_2").should == true
23
+ File.compare("compare_test_2", "compare_test_1").should == true
24
+
25
+ File.compare("compare_test_1", "compare_test_3").should == false
26
+ File.compare("compare_test_2", "compare_test_3").should == false
27
+ end
28
+ end
29
+ end
data/spec/copy_spec.rb ADDED
@@ -0,0 +1,33 @@
1
+ ruby_version_is ""..."1.9" do
2
+
3
+ require 'ftools'
4
+
5
+ describe "File.copy" do
6
+ before(:each) do
7
+ File.open('copy_test', 'w+') do |f|
8
+ f.puts('hello rubinius')
9
+ end
10
+ platform_is_not :windows do
11
+ system "chmod a+x copy_test"
12
+ end
13
+ end
14
+
15
+ after(:each) do
16
+ File.unlink "copy_test"
17
+ File.unlink "copy_test_dest" rescue nil
18
+ end
19
+
20
+ it "copies the file at 1st arg to the file at 2nd arg" do
21
+ File.copy("copy_test", "copy_test_dest")
22
+ fd = File.open("copy_test_dest")
23
+ data = fd.read
24
+ data.should == "hello rubinius\n"
25
+ fd.close
26
+
27
+ omode = File.stat("copy_test").mode
28
+ mode = File.stat("copy_test_dest").mode
29
+
30
+ omode.should == mode
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,24 @@
1
+ ruby_version_is ""..."1.9" do
2
+
3
+ require 'ftools'
4
+
5
+ # the tests below are windows-hostile
6
+ platform_is_not :windows do
7
+ describe "File.install" do
8
+ before(:each) do
9
+ system "echo 'hello rubinius' > install_test_1"
10
+ system "chmod 0777 install_test_1"
11
+ end
12
+
13
+ after(:each) do
14
+ (1..2).each { |n| File.unlink "install_test_#{n}" rescue nil }
15
+ end
16
+
17
+ it "changes the mode to 1st arg for files in 2nd arg" do
18
+ `ls -l install_test_1`.should =~ /^-rwxrwxrwx/
19
+ File.install "install_test_1", "install_test_2", 0644
20
+ `ls -l install_test_2`.should =~ /^-rw-r--r--/
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,23 @@
1
+ ruby_version_is ""..."1.9" do
2
+
3
+ require 'ftools'
4
+
5
+ describe "File.makedirs" do
6
+ before :each do
7
+ @dir = tmp "file_makedirs"
8
+ end
9
+
10
+ after(:each) do
11
+ rm_r @dir
12
+ end
13
+
14
+ it "creates the dirs from arg" do
15
+ File.exist?(@dir).should == false
16
+ File.makedirs("#{@dir}/second_dir")
17
+ File.exist?(@dir).should == true
18
+ File.directory?(@dir).should == true
19
+ File.exist?("#{@dir}/second_dir").should == true
20
+ File.directory?("#{@dir}/second_dir").should == true
21
+ end
22
+ end
23
+ end
data/spec/move_spec.rb ADDED
@@ -0,0 +1,32 @@
1
+ ruby_version_is ""..."1.9" do
2
+
3
+ require 'ftools'
4
+
5
+ describe "File.move" do
6
+ before(:each) do
7
+ File.open('move_test', 'w+') do |f|
8
+ f.puts('hello rubinius')
9
+ end
10
+ platform_is_not :windows do
11
+ system "chmod a+x move_test"
12
+ end
13
+ end
14
+
15
+ after(:each) do
16
+ File.unlink "move_test_dest"
17
+ File.unlink "move_test" rescue nil
18
+ end
19
+
20
+ it "moves the file at 1st arg to the file at 2nd arg" do
21
+ omode = File.stat("move_test").mode
22
+ File.move("move_test", "move_test_dest")
23
+ fd = File.open("move_test_dest")
24
+ data = fd.read
25
+ data.should == "hello rubinius\n"
26
+ fd.close
27
+ mode = File.stat("move_test_dest").mode
28
+
29
+ omode.should == mode
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,25 @@
1
+ ruby_version_is ""..."1.9" do
2
+
3
+ require 'ftools'
4
+
5
+ describe "File.safe_unlink" do
6
+ before(:each) do
7
+ (1..2).each do |n|
8
+ system "echo 'hello rubinius' > safe_unlink_test_#{n}"
9
+ system "chmod 0777 safe_unlink_test_#{n}"
10
+ end
11
+ end
12
+
13
+ after(:each) do
14
+ (1..2).each { |n| File.unlink "safe_unlink_test_#{n}" rescue nil }
15
+ end
16
+
17
+ it "deletes the files in arg and returns an array of files deleted" do
18
+ File.exist?("safe_unlink_test_1").should == true
19
+ File.exist?("safe_unlink_test_2").should == true
20
+ File.safe_unlink("safe_unlink_test_1", "safe_unlink_test_2").should == ["safe_unlink_test_1", "safe_unlink_test_2"]
21
+ File.exist?("safe_unlink_test_1").should == false
22
+ File.exist?("safe_unlink_test_2").should == false
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,33 @@
1
+ ruby_version_is ""..."1.9" do
2
+
3
+ require 'ftools'
4
+
5
+ describe "File.syscopy" do
6
+ before(:each) do
7
+ File.open('syscopy_test', 'w+') do |f|
8
+ f.puts('hello rubinius')
9
+ end
10
+ platform_is_not :windows do
11
+ system "chmod a+x syscopy_test"
12
+ end
13
+ end
14
+
15
+ after(:each) do
16
+ File.unlink "syscopy_test"
17
+ File.unlink "syscopy_test_dest" rescue nil
18
+ end
19
+
20
+ it "copies the file at 1st arg to the file at 2nd arg" do
21
+ File.syscopy("syscopy_test", "syscopy_test_dest")
22
+ fd = File.open("syscopy_test_dest")
23
+ data = fd.read
24
+ data.should == "hello rubinius\n"
25
+ fd.close
26
+
27
+ omode = File.stat("syscopy_test").mode
28
+ mode = File.stat("syscopy_test_dest").mode
29
+
30
+ omode.should == mode
31
+ end
32
+ end
33
+ end
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubysl-ftools
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Brian Shirai
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-09-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '1.5'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '1.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubysl-prettyprint
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '1.0'
69
+ description: Ruby standard library ftools.
70
+ email:
71
+ - brixen@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - .travis.yml
78
+ - Gemfile
79
+ - LICENSE
80
+ - README.md
81
+ - Rakefile
82
+ - lib/ftools.rb
83
+ - lib/rubysl/ftools.rb
84
+ - lib/rubysl/ftools/ftools.rb
85
+ - lib/rubysl/ftools/version.rb
86
+ - rubysl-ftools.gemspec
87
+ - spec/catname_spec.rb
88
+ - spec/chmod_spec.rb
89
+ - spec/compare_spec.rb
90
+ - spec/copy_spec.rb
91
+ - spec/install_spec.rb
92
+ - spec/makedirs_spec.rb
93
+ - spec/move_spec.rb
94
+ - spec/safe_unlink_spec.rb
95
+ - spec/syscopy_spec.rb
96
+ homepage: https://github.com/rubysl/rubysl-ftools
97
+ licenses:
98
+ - BSD
99
+ metadata: {}
100
+ post_install_message:
101
+ rdoc_options: []
102
+ require_paths:
103
+ - lib
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ requirements: []
115
+ rubyforge_project:
116
+ rubygems_version: 2.0.7
117
+ signing_key:
118
+ specification_version: 4
119
+ summary: Ruby standard library ftools.
120
+ test_files:
121
+ - spec/catname_spec.rb
122
+ - spec/chmod_spec.rb
123
+ - spec/compare_spec.rb
124
+ - spec/copy_spec.rb
125
+ - spec/install_spec.rb
126
+ - spec/makedirs_spec.rb
127
+ - spec/move_spec.rb
128
+ - spec/safe_unlink_spec.rb
129
+ - spec/syscopy_spec.rb
130
+ has_rdoc: