attic-cleanup 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +99 -0
- data/bin/attic-cleanup +4 -0
- data/lib/attic-cleanup.rb +40 -0
- data/lib/attic-cleanup/initialize/init.rb +51 -0
- data/lib/attic-cleanup/log/log.rb +9 -0
- data/lib/attic-cleanup/path/custom.rb +87 -0
- data/lib/attic-cleanup/storage/folder_files.rb +27 -0
- data/lib/attic-cleanup/storage/store_files.rb +142 -0
- data/lib/attic-cleanup/utility.rb +65 -0
- metadata +67 -0
data/README.md
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
Attic-Cleanup
|
2
|
+
=============
|
3
|
+
|
4
|
+
About
|
5
|
+
=====
|
6
|
+
Attic-cleanup is a gem to manage files on your computer.
|
7
|
+
|
8
|
+
If you ever feel like you need to store your files you can throw them in your attic.
|
9
|
+
|
10
|
+
Let's say your attic is filled with files and folders and you just want to get them out of the way.
|
11
|
+
|
12
|
+
If you use the attic-cleanup gem all the files in the specified location will be moved into ~/MyAttic/Date-today.
|
13
|
+
|
14
|
+
An example of Date-today is ~/MyAttic/2011-11-23.
|
15
|
+
|
16
|
+
You can set specific location that you want to manage and create shortcuts for them.
|
17
|
+
|
18
|
+
A log will be kept of which files are moved to where, so if you ever forgot where you stored a specific file
|
19
|
+
|
20
|
+
you can find it in the log.txt file in the MyAttic folder.
|
21
|
+
|
22
|
+
|
23
|
+
Notes
|
24
|
+
=====
|
25
|
+
This gem has NOT been tested on Windows, and there's a big chance it won't work correctly.
|
26
|
+
|
27
|
+
This gem is still in beta, and moves, creates and deletes files / folders.
|
28
|
+
|
29
|
+
I use this gem every day and have never lost any folders or files.
|
30
|
+
|
31
|
+
However, if something does go wrong and you lose any files or folders I will not be held responsible.
|
32
|
+
|
33
|
+
Use at own risk
|
34
|
+
|
35
|
+
Installation
|
36
|
+
============
|
37
|
+
gem install attic-cleanup
|
38
|
+
|
39
|
+
|
40
|
+
Usage
|
41
|
+
=====
|
42
|
+
Attic-cleanup is easy to use.
|
43
|
+
Here are a few examples to help you understand how to use it.
|
44
|
+
|
45
|
+
Example: We want to store all the files from our Desktop into MyAttic.
|
46
|
+
======================================================================
|
47
|
+
attic-cleanup store -a -f
|
48
|
+
|
49
|
+
This line will store all the files from your Desktop to the MyAttic folder.
|
50
|
+
|
51
|
+
-a is an option to selected all the files.
|
52
|
+
|
53
|
+
-f is an option to force move everything, you wont have to type "y" to confirm.
|
54
|
+
|
55
|
+
You don't have to specify a path because Desktop is automatically the default location.
|
56
|
+
|
57
|
+
If you want to change your default location, you can simply do that in the default_path.txt file.
|
58
|
+
|
59
|
+
|
60
|
+
Another Example: I want to move certain items from my Projects folder, I made a shortcut called projects
|
61
|
+
========================================================================================================
|
62
|
+
attic-cleanup store @projects
|
63
|
+
|
64
|
+
|
65
|
+
This line will take you to the projects folder, the @ sign stands for shortcut.
|
66
|
+
|
67
|
+
In the custom_paths.txt file you can set your own shortcuts. You can also create them with the 'new' command.
|
68
|
+
|
69
|
+
It's easy to do and there are already a few pre-generated shortcuts for you.
|
70
|
+
|
71
|
+
Since we didn't use the -a option, we can choose which files we want to store.
|
72
|
+
|
73
|
+
Now type 'ls' to view all the files and their IDs.
|
74
|
+
|
75
|
+
Then type the IDs of the files you wish to store. example: 1,3,6,12,25
|
76
|
+
|
77
|
+
Press enter, since we didn't use the -f option we will be asked if we want to move the files.
|
78
|
+
|
79
|
+
Type y to continue or type n to exit.
|
80
|
+
|
81
|
+
Once you press y all the file will be moved to the MyAttic folder and every file will be printed in the log.txt file.
|
82
|
+
|
83
|
+
|
84
|
+
Checking which shortcuts are available
|
85
|
+
======================================
|
86
|
+
attic-cleanup shortcuts
|
87
|
+
|
88
|
+
|
89
|
+
This will display every shortcut in the custom_paths.txt file.
|
90
|
+
|
91
|
+
|
92
|
+
Creating a new shortcut with the 'new' command
|
93
|
+
==============================================
|
94
|
+
attic-cleanup new --name projects --path ~/MyProjects/CurrentProject
|
95
|
+
|
96
|
+
|
97
|
+
This will generate a new shortcut. The shortcut name will be @projects and the path will be ~/MyProjects/CurrentProject
|
98
|
+
|
99
|
+
You can always adjust shortcuts and default location in MyAttic folder.
|
data/bin/attic-cleanup
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require "fileutils"
|
3
|
+
require "date"
|
4
|
+
require "time"
|
5
|
+
|
6
|
+
# Check for required gems
|
7
|
+
begin
|
8
|
+
require 'thor'
|
9
|
+
rescue LoadError
|
10
|
+
puts "Thor is not installed"
|
11
|
+
puts "Run 'gem install thor'"
|
12
|
+
exit 1
|
13
|
+
end
|
14
|
+
|
15
|
+
# require the classes
|
16
|
+
require File.expand_path("../../lib/attic-cleanup/storage/store_files", __FILE__)
|
17
|
+
require File.expand_path("../../lib/attic-cleanup/storage/folder_files", __FILE__)
|
18
|
+
require File.expand_path("../../lib/attic-cleanup/path/custom", __FILE__)
|
19
|
+
require File.expand_path("../../lib/attic-cleanup/log/log", __FILE__)
|
20
|
+
require File.expand_path("../../lib/attic-cleanup/initialize/init", __FILE__)
|
21
|
+
|
22
|
+
# All the constants and initializers
|
23
|
+
module MyAttic
|
24
|
+
ATTIC = File.join(ENV["HOME"], "MyAttic")
|
25
|
+
TODAY = File.join(ENV["HOME"], "MyAttic", Date.today.to_s)
|
26
|
+
CUSTOM = File.join(ENV["HOME"], "MyAttic/custom_paths.txt")
|
27
|
+
DEFAULT = File.join(ENV["HOME"], "MyAttic/default_path.txt")
|
28
|
+
LOG = File.join(ENV["HOME"], "MyAttic/log.txt")
|
29
|
+
|
30
|
+
# Checks if all the folders and files exist, also deletes any empty folders
|
31
|
+
AtticCleanup::Init.check_folder(MyAttic::ATTIC)
|
32
|
+
AtticCleanup::Init.check_folder(MyAttic::TODAY)
|
33
|
+
AtticCleanup::Init.check_file(MyAttic::DEFAULT)
|
34
|
+
AtticCleanup::Init.check_file(MyAttic::CUSTOM)
|
35
|
+
AtticCleanup::Init.clear
|
36
|
+
|
37
|
+
# This constant is set after the initializers because it reads
|
38
|
+
# the custom_paths.txt file. And it needs to be created first.
|
39
|
+
SHORTCUTS = AtticCleanup::Path::Custom.all(MyAttic::CUSTOM)
|
40
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module AtticCleanup
|
2
|
+
module Init
|
3
|
+
|
4
|
+
# Default text for the custom_paths.txt file
|
5
|
+
CUSTOM_FILE = "#Write all your custom paths here.
|
6
|
+
#Or generate them with the 'attic-cleanup new' command
|
7
|
+
doc #{File.join(ENV['HOME'], 'Documents')}
|
8
|
+
pic #{File.join(ENV['HOME'], 'Pictures')}
|
9
|
+
mus #{File.join(ENV['HOME'], 'Music')}
|
10
|
+
mov #{File.join(ENV['HOME'], 'Movies')}
|
11
|
+
dow #{File.join(ENV['HOME'], 'Downloads')}"
|
12
|
+
|
13
|
+
# Default text for the default_path.txt file
|
14
|
+
DEFAULT_FILE = "#Write your default location here.
|
15
|
+
#{File.join(ENV['HOME'], 'Desktop')}"
|
16
|
+
|
17
|
+
# Checks if folder exists, if it doesn't it will be created
|
18
|
+
def self.check_folder(value)
|
19
|
+
if !File.directory? value
|
20
|
+
FileUtils.mkdir(value)
|
21
|
+
puts "#{value} doesn't exist yet.\nCreating #{value}.."
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Checks if file exists, if it doesn't it will be created
|
26
|
+
# and depending on which file, the default text will be set
|
27
|
+
def self.check_file(value)
|
28
|
+
if !File.exist?(value)
|
29
|
+
File.open(value, 'w') do |w|
|
30
|
+
if value == MyAttic::CUSTOM
|
31
|
+
text = CUSTOM_FILE
|
32
|
+
elsif value == MyAttic::DEFAULT
|
33
|
+
text = DEFAULT_FILE
|
34
|
+
end
|
35
|
+
w.write(text)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# Delete all folders in MyAttic that are empty
|
41
|
+
def self.clear
|
42
|
+
attic_folders = Dir.glob(File.join(MyAttic::ATTIC, "*"));
|
43
|
+
attic_folders.each do |f|
|
44
|
+
if f == MyAttic::CUSTOM || f == MyAttic::LOG || f == MyAttic::TODAY || f == MyAttic::DEFAULT
|
45
|
+
elsif Dir[File.join(f, "/*")].empty?
|
46
|
+
FileUtils.rm_rf(f)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
module AtticCleanup
|
2
|
+
module Path
|
3
|
+
class Custom
|
4
|
+
attr_accessor :name, :path, :file, :line_nr
|
5
|
+
|
6
|
+
# Gets the last line in the default_path.txt file,
|
7
|
+
# which is the path to the default route
|
8
|
+
def self.default
|
9
|
+
File.open(MyAttic::DEFAULT, 'r') do |r|
|
10
|
+
line_array = []
|
11
|
+
while line = r.gets do
|
12
|
+
line_array << line
|
13
|
+
end
|
14
|
+
line_array.last
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# Selects every line from the selected file
|
19
|
+
# but ignores lines where the first character is '#'
|
20
|
+
def self.all(file)
|
21
|
+
File.open(file, 'r') do |r|
|
22
|
+
line_array = []
|
23
|
+
while line = r.gets do
|
24
|
+
if line[0..0] == "#"
|
25
|
+
else
|
26
|
+
line_array << line
|
27
|
+
end
|
28
|
+
end
|
29
|
+
line_array
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Gets a specific line from a file
|
34
|
+
def find_line
|
35
|
+
File.open(@file, 'r') do |r|
|
36
|
+
k = []
|
37
|
+
k[0] = nil
|
38
|
+
while line = r.gets do
|
39
|
+
k << line
|
40
|
+
end
|
41
|
+
if k[@line_nr] == nil
|
42
|
+
"This line does not exist."
|
43
|
+
elsif k[@line_nr] == "\n"
|
44
|
+
"Empty"
|
45
|
+
else
|
46
|
+
k[@line_nr]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# Gets the custom shortcuts and looks in the custom_paths.txt file
|
52
|
+
# if there is a match. If there is it will select that line and
|
53
|
+
# extract the shortcut, so only the path remains
|
54
|
+
def find_custom
|
55
|
+
File.open(@file, 'r') do |r|
|
56
|
+
k = []
|
57
|
+
k[0] = nil
|
58
|
+
while line = r.gets do
|
59
|
+
name_count = @name.count("A-z, \s")
|
60
|
+
k << line[0..name_count]
|
61
|
+
this_name = k.last
|
62
|
+
|
63
|
+
if this_name == @name+" "
|
64
|
+
selected_line = line
|
65
|
+
the_name = this_name
|
66
|
+
end
|
67
|
+
end
|
68
|
+
if selected_line == nil
|
69
|
+
puts "Shortcut not found"
|
70
|
+
exit 1
|
71
|
+
else
|
72
|
+
the_name_count = the_name.count("A-z, \s")
|
73
|
+
line_count = selected_line.count("A-z, \s, '/'")
|
74
|
+
selected_line[the_name_count..line_count-1]
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# Write to the custom_paths.txt file
|
80
|
+
def write
|
81
|
+
File.open(@file, 'a') do |w|
|
82
|
+
w.write("\n"+ @name + " " + @path)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module AtticCleanup
|
2
|
+
module Storage
|
3
|
+
class FolderFiles
|
4
|
+
|
5
|
+
def all_files
|
6
|
+
@all_files
|
7
|
+
end
|
8
|
+
|
9
|
+
# Select all files from the selected folder
|
10
|
+
def all_files= ( value )
|
11
|
+
Dir.chdir(value)
|
12
|
+
@all_files = Dir.glob("*");
|
13
|
+
end
|
14
|
+
|
15
|
+
# Find the file by it's ID
|
16
|
+
def self.find(files, number)
|
17
|
+
current_files = []
|
18
|
+
file_id = 0
|
19
|
+
files.each do |f|
|
20
|
+
current_files[file_id] = f
|
21
|
+
file_id += 1
|
22
|
+
end
|
23
|
+
current_files[number]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,142 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
module AtticCleanup
|
3
|
+
module Storage
|
4
|
+
class StoreFiles
|
5
|
+
|
6
|
+
# Easy method for input
|
7
|
+
def input
|
8
|
+
STDOUT.flush
|
9
|
+
@input = $stdin.gets.chomp
|
10
|
+
end
|
11
|
+
|
12
|
+
def location
|
13
|
+
@location
|
14
|
+
end
|
15
|
+
|
16
|
+
# Sets the location of the store method
|
17
|
+
# If the location wasn't set, the default
|
18
|
+
# location will be used from the default_path.txt file
|
19
|
+
def location= ( value )
|
20
|
+
if value == ""
|
21
|
+
value = AtticCleanup::Path::Custom.default
|
22
|
+
elsif value == "."
|
23
|
+
Dir.chdir(".")
|
24
|
+
value = Dir.getwd()
|
25
|
+
puts Dir.getwd()
|
26
|
+
end
|
27
|
+
@location = value
|
28
|
+
end
|
29
|
+
|
30
|
+
# Checks if the selected path exists
|
31
|
+
def check
|
32
|
+
if !File.directory? @location
|
33
|
+
puts "Invalid path " + @location
|
34
|
+
exit 1
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# Puts the string of numbers in an array and removes the ','
|
39
|
+
def bundle(input)
|
40
|
+
bundle = input
|
41
|
+
bundle = bundle.scan( /\d+/ )
|
42
|
+
bundle.map!{ |bundle| bundle.to_i }
|
43
|
+
@bundle_items = bundle
|
44
|
+
@bundle_count = bundle.count
|
45
|
+
|
46
|
+
# If the user typed 'all' instead of numbers, every file will
|
47
|
+
# be set into the the array.
|
48
|
+
if @input == "all"
|
49
|
+
@bundle_items = []
|
50
|
+
p = 0
|
51
|
+
folder_files = AtticCleanup::Storage::FolderFiles.new
|
52
|
+
folder_files.all_files = location
|
53
|
+
folder_files.all_files.each do
|
54
|
+
@bundle_items[p] = p
|
55
|
+
p += 1
|
56
|
+
@bundle_count = "all"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
def store(a, f)
|
63
|
+
folder_files = AtticCleanup::Storage::FolderFiles.new
|
64
|
+
# Selects all files from the current location
|
65
|
+
folder_files.all_files = location
|
66
|
+
|
67
|
+
# If option a is nil, the files will have to be selected manually
|
68
|
+
if a == nil
|
69
|
+
i = 1
|
70
|
+
while i == 1
|
71
|
+
# Message with the current location and simple instructions
|
72
|
+
puts "\n"+location
|
73
|
+
puts "Which files do you want to store in your attic?"
|
74
|
+
puts "Type ls for the list of items"
|
75
|
+
puts "Select the items by id. Example: 1,3,5"
|
76
|
+
input()
|
77
|
+
|
78
|
+
file_id = 0
|
79
|
+
# If input is "all" all the files and folders will be added to the array
|
80
|
+
if @input == "all"
|
81
|
+
@bundle_count = "all"
|
82
|
+
bundle("1")
|
83
|
+
i = 0
|
84
|
+
# If input is "ls" all the files and folder will be shown with their IDs
|
85
|
+
elsif @input == "ls"
|
86
|
+
folder_files.all_files.each do |k|
|
87
|
+
puts file_id.to_s + " - " + AtticCleanup::Storage::FolderFiles.find(folder_files.all_files, file_id)
|
88
|
+
file_id += 1
|
89
|
+
end
|
90
|
+
elsif @input == "exit"
|
91
|
+
exit 1
|
92
|
+
else
|
93
|
+
bundle(@input)
|
94
|
+
i = 0
|
95
|
+
end
|
96
|
+
end
|
97
|
+
else
|
98
|
+
# If option a was selected, all files will be added to the array
|
99
|
+
@bundle_count = "all"
|
100
|
+
@input = "all"
|
101
|
+
bundle(@input)
|
102
|
+
end
|
103
|
+
|
104
|
+
if f == nil
|
105
|
+
i = 1
|
106
|
+
# If no items were selected, go back to the input
|
107
|
+
if @bundle_count == 0
|
108
|
+
puts "\n\nNo file was selected."
|
109
|
+
store(nil, nil)
|
110
|
+
end
|
111
|
+
while i == 1
|
112
|
+
# If option f was not selected, you will get a warning before moving the files
|
113
|
+
puts "\nAre you sure you want to move #{@bundle_count} files/folders?\n [y/n]"
|
114
|
+
input()
|
115
|
+
if @input == "y"
|
116
|
+
i = 0
|
117
|
+
elsif @input == "n"
|
118
|
+
exit 1
|
119
|
+
else
|
120
|
+
puts "y or n?"
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
# Moves each file to the MyAttic folder
|
126
|
+
@bundle_items.each do |b|
|
127
|
+
# If the file wasn't found, print error
|
128
|
+
if AtticCleanup::Storage::FolderFiles.find(folder_files.all_files, b) == nil
|
129
|
+
puts "File ID " + b.to_s + " was not found"
|
130
|
+
else
|
131
|
+
# If file was found move it, print it and record it in the log
|
132
|
+
selected_file = File.join( location, AtticCleanup::Storage::FolderFiles.find(folder_files.all_files, b) )
|
133
|
+
puts "Moving " + selected_file + " to your attic.."
|
134
|
+
AtticCleanup::Log.save(selected_file, MyAttic::TODAY)
|
135
|
+
FileUtils.mv(selected_file, MyAttic::TODAY)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
puts "The files have been moved to " + MyAttic::TODAY
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module AtticCleanup
|
2
|
+
class Utility < Thor
|
3
|
+
include Thor::Actions
|
4
|
+
|
5
|
+
desc "store",
|
6
|
+
"Choose a path or shortcut to store the contents of the given folder.
|
7
|
+
custom paths are called by placing an '@' sign in front of it.
|
8
|
+
example: @mypath
|
9
|
+
|
10
|
+
-a => 'all'
|
11
|
+
-f => 'force'\n\n"
|
12
|
+
method_options :a => :boolean, :f => :boolean
|
13
|
+
def store(input="")
|
14
|
+
|
15
|
+
# Checks if the options are set
|
16
|
+
if options[:a]
|
17
|
+
a = true
|
18
|
+
end
|
19
|
+
if options[:f]
|
20
|
+
f = true
|
21
|
+
end
|
22
|
+
|
23
|
+
# If the input for store has an "@" at the beginning
|
24
|
+
# it's a shortcut.
|
25
|
+
if input[0..0] == "@"
|
26
|
+
c = AtticCleanup::Path::Custom.new
|
27
|
+
# The input without the first character (the @ sign)
|
28
|
+
c.name = input[1..-1]
|
29
|
+
c.file = MyAttic::CUSTOM
|
30
|
+
input = c.find_custom
|
31
|
+
end
|
32
|
+
# The input is the location, if the input had an @ sign
|
33
|
+
# at the beginning, the custom path will be stored in input variable
|
34
|
+
s = AtticCleanup::Storage::StoreFiles.new
|
35
|
+
s.location = input
|
36
|
+
s.check
|
37
|
+
s.store(a, f)
|
38
|
+
end
|
39
|
+
|
40
|
+
desc "new", "Create a custom path.
|
41
|
+
--name => 'Name for your custom path'
|
42
|
+
--path => 'The path for your shortcut'\n\n"
|
43
|
+
method_options :name => :string, :path => :string
|
44
|
+
def new
|
45
|
+
if options[:path] != "path" && options[:path] && options[:name] != "name" && options[:name]
|
46
|
+
c = AtticCleanup::Path::Custom.new
|
47
|
+
# Sets name and path, adds it to the custom_paths.txt file
|
48
|
+
c.name = options[:name]
|
49
|
+
c.path = options[:path]
|
50
|
+
c.file = MyAttic::CUSTOM
|
51
|
+
c.write
|
52
|
+
else
|
53
|
+
puts "Please enter a path and name"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
desc "shortcuts", "View all available shortcuts"
|
58
|
+
# Show all the availible shortcuts from the custom_paths.txt file
|
59
|
+
def shortcuts
|
60
|
+
MyAttic::SHORTCUTS.each do |s|
|
61
|
+
puts s
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
metadata
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: attic-cleanup
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Kevin van Rooijen
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-12-04 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: thor
|
16
|
+
requirement: &70360767219960 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70360767219960
|
25
|
+
description:
|
26
|
+
email: kevin.van.rooijen@gmail.com
|
27
|
+
executables:
|
28
|
+
- attic-cleanup
|
29
|
+
extensions: []
|
30
|
+
extra_rdoc_files: []
|
31
|
+
files:
|
32
|
+
- README.md
|
33
|
+
- bin/attic-cleanup
|
34
|
+
- lib/attic-cleanup.rb
|
35
|
+
- lib/attic-cleanup/utility.rb
|
36
|
+
- lib/attic-cleanup/initialize/init.rb
|
37
|
+
- lib/attic-cleanup/log/log.rb
|
38
|
+
- lib/attic-cleanup/path/custom.rb
|
39
|
+
- lib/attic-cleanup/storage/folder_files.rb
|
40
|
+
- lib/attic-cleanup/storage/store_files.rb
|
41
|
+
homepage: http://rubygems.org/gems/attic-cleanup
|
42
|
+
licenses: []
|
43
|
+
post_install_message:
|
44
|
+
rdoc_options: []
|
45
|
+
require_paths:
|
46
|
+
- lib
|
47
|
+
- bin
|
48
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ! '>='
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
requirements: []
|
61
|
+
rubyforge_project:
|
62
|
+
rubygems_version: 1.8.11
|
63
|
+
signing_key:
|
64
|
+
specification_version: 3
|
65
|
+
summary: attic-cleanup is a gem to easily store your files when you need to get them
|
66
|
+
out of the way.
|
67
|
+
test_files: []
|