file_discard 0.1.5 → 0.1.6
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 +4 -4
- data/README.md +9 -1
- data/Rakefile +1 -1
- data/bin/discard +6 -0
- data/lib/file_discard.rb +10 -2
- data/lib/file_discard_version.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7539efaa26ed718413f4770434de5cb04a45d36
|
4
|
+
data.tar.gz: 514b8d987d89790aa7aac1585b878b189afdf6a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c1e810875af7e912f85055a77c937c679afaaa8ea374815239150ca48aeaef432e9b7974ccb26fcc83b83aa223953de667a9dda91633f94f039fd14f088a6e1
|
7
|
+
data.tar.gz: 5ac9cd626b81ef753135565cf3ace8865f1dea0c5d82bdb11be5aa5edd2eaefe038c211441f9aa46d52654051ff9b919440df8cca3a83e3f26823537c2b0c3b6
|
data/README.md
CHANGED
@@ -2,6 +2,14 @@ FileDiscard is a simple helper to make it easy for applications to move files to
|
|
2
2
|
|
3
3
|
## Getting Started
|
4
4
|
|
5
|
+
### Installation
|
6
|
+
|
7
|
+
```shell
|
8
|
+
> gem install file_discard
|
9
|
+
```
|
10
|
+
|
11
|
+
[](http://badge.fury.io/rb/file_discard)
|
12
|
+
|
5
13
|
### Using the Executable
|
6
14
|
|
7
15
|
Part of the `file_discard` gem is an executable that can be used as a drop-in replacement for "rm":
|
@@ -9,6 +17,7 @@ Part of the `file_discard` gem is an executable that can be used as a drop-in re
|
|
9
17
|
```shell
|
10
18
|
> discard
|
11
19
|
Usage: discard [options] file ...
|
20
|
+
-f, --force when provided twice, permanently remove targets
|
12
21
|
-d, --dir allow empty directories to be discarded
|
13
22
|
-r allow directories to be discarded recursively
|
14
23
|
-R, --recursive allow directories to be discarded recursively
|
@@ -17,7 +26,6 @@ Usage: discard [options] file ...
|
|
17
26
|
--version show version
|
18
27
|
|
19
28
|
Options ignored to provide compatibility with "rm":
|
20
|
-
-f
|
21
29
|
-i
|
22
30
|
-I
|
23
31
|
```
|
data/Rakefile
CHANGED
data/bin/discard
CHANGED
@@ -55,8 +55,14 @@ FileDiscard.create_trash_when_missing = true
|
|
55
55
|
|
56
56
|
status = 0
|
57
57
|
ARGV.each do |file|
|
58
|
+
options.force > 1 and $stderr.puts "Warning: Permanently removing #{file}"
|
58
59
|
begin
|
59
60
|
FileDiscard.discard(file, options.marshal_dump)
|
61
|
+
rescue FileDiscard::TrashNotPermitted => ex
|
62
|
+
$stderr.puts "#{parser.program_name}: #{file}: #{ex.message}"
|
63
|
+
options.verbose and $stderr.puts ex.backtrace
|
64
|
+
$stderr.puts "Consider using -ff to permanently remove"
|
65
|
+
status = 3
|
60
66
|
rescue Errno::EINVAL, Errno::ENOENT => ex
|
61
67
|
$stderr.puts "#{parser.program_name}: #{file}: #{ex.message}"
|
62
68
|
status = 1
|
data/lib/file_discard.rb
CHANGED
@@ -85,6 +85,10 @@ module FileDiscard
|
|
85
85
|
# Raised when the configured trash directory for a given mountpoint does not exist.
|
86
86
|
class TrashMissing < Errno::ENOENT; end;
|
87
87
|
|
88
|
+
# Raised when the configured trash directory for a given mountpoint does not exist
|
89
|
+
# and user does not have permissions to create it.
|
90
|
+
class TrashNotPermitted < Errno::EACCES; end;
|
91
|
+
|
88
92
|
# The core logic for moving files to an appropriate trash directory.
|
89
93
|
class Discarder
|
90
94
|
SPECIAL_DIRS = ['.','..'] # :nodoc:
|
@@ -99,6 +103,7 @@ module FileDiscard
|
|
99
103
|
# Request that +obj+ be moved to the trash.
|
100
104
|
#
|
101
105
|
# +options+ - a hash of any of the following:
|
106
|
+
# * :force - if greater than one, permanently remove +obj+
|
102
107
|
# * :directory - allow an empty directory to be discarded
|
103
108
|
# * :recursive - allow a directory to be discarded even if not empty
|
104
109
|
# * :verbose - report the move operation
|
@@ -122,7 +127,6 @@ module FileDiscard
|
|
122
127
|
end
|
123
128
|
|
124
129
|
if options.key?(:force) && options[:force] > 1
|
125
|
-
$stderr.puts "Warning: Permanently removing #{pn}"
|
126
130
|
FileUtils.rm_rf(pn, {verbose: options[:verbose] || false})
|
127
131
|
return
|
128
132
|
end
|
@@ -130,7 +134,11 @@ module FileDiscard
|
|
130
134
|
trash = find_trash_for pn
|
131
135
|
unless trash.exist?
|
132
136
|
FileDiscard.create_trash_when_missing or raise TrashMissing.new(trash.to_s)
|
133
|
-
|
137
|
+
begin
|
138
|
+
trash.mkpath
|
139
|
+
rescue Errno::EACCES
|
140
|
+
raise TrashNotPermitted.new("Unable to create #{trash.to_s}")
|
141
|
+
end
|
134
142
|
end
|
135
143
|
|
136
144
|
move_options = options.has_key?(:verbose) ? {verbose: options[:verbose]} : {}
|
data/lib/file_discard_version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: file_discard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brad Robel-Forrest
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Simple helper to move files to the trash folder.
|
14
14
|
email: brad+filediscard@gigglewax.com
|