Forward compatibility: use dencli, because it will be used in future versions. prevents cli-changes in future. Errnos load only ones. version 0.0.2
This commit is contained in:
parent
01b3ebe04f
commit
e8273e2aae
5 changed files with 67 additions and 41 deletions
51
bin/deduperemoverb
Executable file
51
bin/deduperemoverb
Executable file
|
@ -0,0 +1,51 @@
|
|||
#!/usr/bin/env ruby
|
||||
# vim: set noet sw=2 ts=2 sts=2:
|
||||
|
||||
require 'dencli'
|
||||
require 'deduperemoverb'
|
||||
require 'ostruct'
|
||||
require 'logger'
|
||||
|
||||
$logger = Logger.new STDERR
|
||||
$logger.formatter =
|
||||
proc do |severity, datetime, progname, message|
|
||||
sprintf "%s %s %s\n", datetime.strftime( '%H:%M:%S.%6N'), severity[0], message
|
||||
end
|
||||
|
||||
begin
|
||||
cli = DenCli.new File.basename($0), <<EOF
|
||||
Deduplicates extents, which were already registered by `duperemove`.
|
||||
This tool does not provide scanning, yet.
|
||||
If PATHx given, only extents of files which matches this pattern and equal extents will be deduplicated. So, non-equal extents of not listed paths will be ignored.
|
||||
EOF
|
||||
|
||||
cli.cmd :help, '(Help)', aliases: [nil, '-h', '--help'], &lambda {|cmd=nil|
|
||||
STDERR.puts cli.help(cmd)
|
||||
exit 1
|
||||
}
|
||||
|
||||
cli.cmd( :dedupe, 'deduplicates files', &lambda {|db, *dirs, tempdb: nil|
|
||||
dbfile = Pathname.new db
|
||||
raise DenCli::UsageError, "Argument 0: Database missing: #{dbfile}" unless dbfile.exist?
|
||||
tempdb ||= Pathname.new("/run/user/#{Process.uid}").join dbfile.basename
|
||||
dr = Duperemove.new dbfile, tempdb
|
||||
dr.run dirs
|
||||
dr.finish
|
||||
}).opt( :tempdb, '--tempdb=FILE', '-t', "Use given [empty] database as temporary database. (default in /run/user/...)")
|
||||
|
||||
cli.call *ARGV
|
||||
|
||||
rescue DenCli::UsageError
|
||||
$logger.fatal "#$!"
|
||||
|
||||
rescue SystemExit
|
||||
raise
|
||||
|
||||
rescue Interrupt
|
||||
$logger.info "was interrupted"
|
||||
exit 1
|
||||
|
||||
rescue
|
||||
$logger.fatal "#$! (#{$!.class})\n#{$!.backtrace.join "\n\t"}"
|
||||
|
||||
end
|
|
@ -1,33 +0,0 @@
|
|||
#!/usr/bin/env ruby
|
||||
# vim: set noet sw=2 ts=2 sts=2:
|
||||
|
||||
require 'deduperemoverb'
|
||||
require 'ostruct'
|
||||
require 'logger'
|
||||
|
||||
$logger = Logger.new STDERR
|
||||
$logger.formatter =
|
||||
proc do |severity, datetime, progname, message|
|
||||
sprintf "%s %s %s\n", datetime.strftime( '%H:%M:%S.%6N'), severity[0], message
|
||||
end
|
||||
|
||||
begin
|
||||
raise "Argument 0: Database expected" if ARGV.empty?
|
||||
dbfile = Pathname.new ARGV[0]
|
||||
raise "Argument 0: Database missing: #{dbfile}" unless dbfile.exist?
|
||||
tempfile = Pathname.new("/run/user/#{Process.uid}").join dbfile.basename
|
||||
dr = Duperemove.new dbfile, tempfile
|
||||
dr.run ARGV[1..-1]
|
||||
dr.finish
|
||||
|
||||
rescue SystemExit
|
||||
raise
|
||||
|
||||
rescue Interrupt
|
||||
$logger.info "was interrupted"
|
||||
exit 1
|
||||
|
||||
rescue
|
||||
$logger.fatal "#$! (#{$!.class})\n#{$!.backtrace.join "\n\t"}"
|
||||
|
||||
end
|
|
@ -1,9 +1,10 @@
|
|||
# vim: set noet sw=2 ts=2 sts=2:
|
||||
require 'rake'
|
||||
require_relative 'lib/deduperemoverb/version'
|
||||
|
||||
Gem::Specification.new do |s|
|
||||
s.name = 'deduperemoverb'
|
||||
s.version = '0.0.1'
|
||||
s.version = Duperemove::VERSION
|
||||
s.licenses = %w[LGPLv3]
|
||||
s.authors = 'Denis Knauf'
|
||||
s.homepage = 'https://git.denkn.at/deac/deduperemoverb'
|
||||
|
@ -16,12 +17,14 @@ Gem::Specification.new do |s|
|
|||
ext/*/*.c ext/*/extconf.rb
|
||||
]]
|
||||
s.bindir = %w[bin]
|
||||
s.executables << 'deduperemoverb'
|
||||
s.require_paths = %w[lib]
|
||||
s.extensions = %w[ext/deduperemoverb/extconf.rb]
|
||||
|
||||
s.add_development_dependency "rake", "~> 13"
|
||||
s.add_dependency "ffi", '~> 1.15'
|
||||
s.add_dependency "sqlite3", '~> 1.4'
|
||||
s.add_dependency 'dencli', '~> 0.3.1'
|
||||
|
||||
s.requirements << 'cc'
|
||||
s.requirements << 'ruby-dev'
|
||||
|
|
|
@ -3,17 +3,19 @@
|
|||
require 'ffi'
|
||||
require 'pathname'
|
||||
|
||||
Errno::Errnos = []
|
||||
Errno.constants.
|
||||
map {|c| Errno.const_get c }.
|
||||
select {|c| c.is_a?( Class) and c.superclass == SystemCallError and c.const_defined?( :Errno) }.
|
||||
each {|c| Errno::Errnos[c::Errno] = c }
|
||||
unless Errno.const_defined? :Errnos
|
||||
Errno::Errnos ||= []
|
||||
Errno.constants.
|
||||
map {|c| Errno.const_get c }.
|
||||
select {|c| c.is_a?( Class) and c.superclass == SystemCallError and c.const_defined?( :Errno) }.
|
||||
each {|c| Errno::Errnos[c::Errno] = c }
|
||||
end
|
||||
|
||||
module FileDedupeRange
|
||||
extend FFI::Library
|
||||
ffi_lib Pathname.new( __FILE__).
|
||||
dirname.
|
||||
join( *w[ext deduperemoverb deduperemoverb.so]).
|
||||
dirname.dirname.dirname.
|
||||
join( *%w[ext deduperemoverb deduperemoverb.so]).
|
||||
expand_path.
|
||||
to_s
|
||||
|
||||
|
|
3
lib/deduperemoverb/version.rb
Normal file
3
lib/deduperemoverb/version.rb
Normal file
|
@ -0,0 +1,3 @@
|
|||
class Duperemove
|
||||
VERSION = '0.0.2'
|
||||
end
|
Loading…
Add table
Reference in a new issue