first commit
This commit is contained in:
commit
8f3b0d8846
6 changed files with 117 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
*~
|
7
Makefile
Normal file
7
Makefile
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
install:
|
||||||
|
cp organize.rb /usr/local/bin/organize
|
||||||
|
|
||||||
|
install-config:
|
||||||
|
mkdir -p ${HOME}/.config/organize/scripts
|
||||||
|
cp -R scripts/ ${HOME}/.config/organize/scripts
|
||||||
|
cp organizers/* ${HOME}/.config/organize/
|
46
organize.rb
Normal file
46
organize.rb
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
require 'json'
|
||||||
|
require 'fileutils'
|
||||||
|
|
||||||
|
|
||||||
|
organizer = JSON.parse(File.read(File.expand_path('~/.config/organize/organizer.json')))
|
||||||
|
|
||||||
|
organizer.each do |match|
|
||||||
|
puts "[+] Match: "+match["match"]
|
||||||
|
keep_answer = false
|
||||||
|
answer = nil
|
||||||
|
Dir.glob(match["match"]).each do |file|
|
||||||
|
file = File.realdirpath(file)
|
||||||
|
puts " [-] File matched "+file
|
||||||
|
|
||||||
|
if match.has_key?("ask_confirm") and match["ask_confirm"]
|
||||||
|
if !keep_answer
|
||||||
|
print "Really y,n ! "
|
||||||
|
answer = gets.chomp
|
||||||
|
end
|
||||||
|
keep_answer = true if answer.match /(y|n)!/
|
||||||
|
case answer
|
||||||
|
when /y!?/
|
||||||
|
when /n!?/
|
||||||
|
next
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
match["action"] = "none" unless match.has_key?("action") # no action if action not exists
|
||||||
|
|
||||||
|
case match["action"]
|
||||||
|
when "exec"
|
||||||
|
if match.has_key?("exec")
|
||||||
|
system match["exec"]+' "'+File.expand_path(file)+'"'
|
||||||
|
end
|
||||||
|
when "move"
|
||||||
|
if match.has_key?("to")
|
||||||
|
FileUtils.mv(file, File.expand_path(match["to"]))
|
||||||
|
end
|
||||||
|
when "remove"
|
||||||
|
FileUtils.rm(file)
|
||||||
|
when "none"
|
||||||
|
else
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
56
organizers/organizer.json
Normal file
56
organizers/organizer.json
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "music-p4f",
|
||||||
|
"match": "*{\\[P4F\\],p4f}.zip",
|
||||||
|
"action": "exec",
|
||||||
|
"exec": "~/.config/organize/scripts/unzip-music.sh"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "screenshots",
|
||||||
|
"match": "*_scrot.png",
|
||||||
|
"action": "move",
|
||||||
|
"to": "~/images/screenshots"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"match": "*.html",
|
||||||
|
"action": "move",
|
||||||
|
"to": "~/docs/html/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"match": "*.pdf",
|
||||||
|
"action": "move",
|
||||||
|
"to": "~/docs/pdf/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"match": "*.txt",
|
||||||
|
"action": "move",
|
||||||
|
"to": "~/docs/txt/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"match": "*.{jpeg,jpg,gif,png,svg,xcf}",
|
||||||
|
"action": "move",
|
||||||
|
"to": "~/images/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"match": "*.{mkv,mp4,wmv}",
|
||||||
|
"action": "move",
|
||||||
|
"to": "~/videos"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"match": "*.{sh,bash}",
|
||||||
|
"action": "move",
|
||||||
|
"to": "~/random/code/sh",
|
||||||
|
"ask_confirm": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"match": "*.c",
|
||||||
|
"action": "move",
|
||||||
|
"to": "~/random/code/c",
|
||||||
|
"ask_confirm": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"match": "*~",
|
||||||
|
"action": "remove",
|
||||||
|
"ask_confirm": true
|
||||||
|
}
|
||||||
|
]
|
3
scripts/dummy-script.sh
Executable file
3
scripts/dummy-script.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo "dummy-script: $1"
|
4
scripts/unzip-music.sh
Executable file
4
scripts/unzip-music.sh
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
unzip -n "$1" -d ~/music
|
||||||
|
rm -rf "$1"
|
Loading…
Reference in a new issue