lara-file-tools 0.1.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 +7 -0
- data/lib/lara/file_tools/organizer.rb +48 -0
- data/lib/lara/file_tools/renamer.rb +49 -0
- data/lib/lara/file_tools/version.rb +5 -0
- data/lib/lara/file_tools.rb +13 -0
- metadata +46 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 5cf7320b83a026cf309aa512e9e774ffc68cf4ce9279502d73296c9b6cb42b64
|
|
4
|
+
data.tar.gz: 25ade7944a14168ad22e9499485f34abb0707ecffdcc9adafd7c679ca7f811e6
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: b1450f8839a75a30fca0215ae0e26f9116a4ef8c459096e65cd1d997b63d9445397201d8e0ed33eaa93348ab1146eb173d6e55ff3114437655d370799e4d292f
|
|
7
|
+
data.tar.gz: 52965a5359f205d49bba055ab99dbe8b84db25fffcab81326e93d54aa92b7e99498f6b49e57a10d3a0108f5452374aaf85dd2de724b6cf3a422378bd611a71e7
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module Lara
|
|
2
|
+
module FileTools
|
|
3
|
+
class Organizer
|
|
4
|
+
def initialize(dir = ".")
|
|
5
|
+
@dir = dir
|
|
6
|
+
@count = 0
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def by_extension
|
|
10
|
+
return "No directory: #{@dir}" unless Dir.exist?(@dir)
|
|
11
|
+
results = []
|
|
12
|
+
Dir.entries(@dir).sort.each do |f|
|
|
13
|
+
next if f.start_with?(".") || !File.file?(File.join(@dir, f))
|
|
14
|
+
@count += 1
|
|
15
|
+
if @count > LIMIT
|
|
16
|
+
results << "Trial limit reached (#{LIMIT} files). Full version: #{FileTools.full_version}"
|
|
17
|
+
break
|
|
18
|
+
end
|
|
19
|
+
ext = File.extname(f).empty? ? "no_ext" : File.extname(f).delete(".")
|
|
20
|
+
ext_dir = File.join(@dir, ext)
|
|
21
|
+
Dir.mkdir(ext_dir) unless Dir.exist?(ext_dir)
|
|
22
|
+
File.rename(File.join(@dir, f), File.join(ext_dir, f))
|
|
23
|
+
results << "#{f} -> #{ext}/"
|
|
24
|
+
end
|
|
25
|
+
results.empty? ? "No files to organize" : results.join("\n")
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def by_date_prefix
|
|
29
|
+
return "No directory: #{@dir}" unless Dir.exist?(@dir)
|
|
30
|
+
results = []
|
|
31
|
+
Dir.entries(@dir).sort.each do |f|
|
|
32
|
+
next if f.start_with?(".") || !File.file?(File.join(@dir, f))
|
|
33
|
+
@count += 1
|
|
34
|
+
if @count > LIMIT
|
|
35
|
+
results << "Trial limit reached (#{LIMIT} files). Full version: #{FileTools.full_version}"
|
|
36
|
+
break
|
|
37
|
+
end
|
|
38
|
+
mtime = File.mtime(File.join(@dir, f))
|
|
39
|
+
prefix = mtime.strftime("%Y-%m-%d")
|
|
40
|
+
new_name = "#{prefix}_#{f}"
|
|
41
|
+
File.rename(File.join(@dir, f), File.join(@dir, new_name))
|
|
42
|
+
results << "#{f} -> #{new_name}"
|
|
43
|
+
end
|
|
44
|
+
results.empty? ? "No files to organize" : results.join("\n")
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module Lara
|
|
2
|
+
module FileTools
|
|
3
|
+
class Renamer
|
|
4
|
+
def initialize(dir = ".")
|
|
5
|
+
@dir = dir
|
|
6
|
+
@count = 0
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def prepend(pattern)
|
|
10
|
+
apply { |f| "#{pattern}_#{f}" }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def append(pattern)
|
|
14
|
+
apply { |f| "#{f.sub(/\.\w+$/, "")}_#{pattern}#{File.extname(f)}" }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def replace(old, new)
|
|
18
|
+
apply { |f| f.sub(old, new) }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def sequence(format = "file_%03d")
|
|
22
|
+
i = 0
|
|
23
|
+
apply { |f| i += 1; "#{format % i}#{File.extname(f)}" }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
def apply
|
|
29
|
+
return "No directory: #{@dir}" unless Dir.exist?(@dir)
|
|
30
|
+
results = []
|
|
31
|
+
Dir.entries(@dir).sort.each do |f|
|
|
32
|
+
next if f.start_with?(".") || !File.file?(File.join(@dir, f))
|
|
33
|
+
@count += 1
|
|
34
|
+
if @count > LIMIT
|
|
35
|
+
results << "Trial limit reached (#{LIMIT} files). Full version: #{FileTools.full_version}"
|
|
36
|
+
break
|
|
37
|
+
end
|
|
38
|
+
new_name = yield(f)
|
|
39
|
+
old_path = File.join(@dir, f)
|
|
40
|
+
new_path = File.join(@dir, new_name)
|
|
41
|
+
next if new_name == f
|
|
42
|
+
File.rename(old_path, new_path)
|
|
43
|
+
results << "#{f} -> #{new_name}"
|
|
44
|
+
end
|
|
45
|
+
results.empty? ? "No files to rename" : results.join("\n")
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: lara-file-tools
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Lara AI
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies: []
|
|
12
|
+
description: 'Rename files in bulk — prepend, append, replace, sequence. Organize
|
|
13
|
+
by extension or date. Trial: 10 files. Full: https://lara-store.xyz'
|
|
14
|
+
email: jarod79tm@gmail.com
|
|
15
|
+
executables: []
|
|
16
|
+
extensions: []
|
|
17
|
+
extra_rdoc_files: []
|
|
18
|
+
files:
|
|
19
|
+
- lib/lara/file_tools.rb
|
|
20
|
+
- lib/lara/file_tools/organizer.rb
|
|
21
|
+
- lib/lara/file_tools/renamer.rb
|
|
22
|
+
- lib/lara/file_tools/version.rb
|
|
23
|
+
homepage: https://lara-store.xyz
|
|
24
|
+
licenses:
|
|
25
|
+
- MIT
|
|
26
|
+
metadata:
|
|
27
|
+
homepage_uri: https://lara-store.xyz
|
|
28
|
+
rubygems_mfa_required: 'false'
|
|
29
|
+
rdoc_options: []
|
|
30
|
+
require_paths:
|
|
31
|
+
- lib
|
|
32
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
33
|
+
requirements:
|
|
34
|
+
- - ">="
|
|
35
|
+
- !ruby/object:Gem::Version
|
|
36
|
+
version: '2.7'
|
|
37
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
38
|
+
requirements:
|
|
39
|
+
- - ">="
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '0'
|
|
42
|
+
requirements: []
|
|
43
|
+
rubygems_version: 3.6.7
|
|
44
|
+
specification_version: 4
|
|
45
|
+
summary: Batch file rename & organize
|
|
46
|
+
test_files: []
|