require "shellwords" require "tagen/core/kernel/shell" module Saber module Task # # Usage # ----- # # Task["make"].invoke(:make, ["bib", "a.epub", "b.epub"]) # class Make < Base desc "make", "make" def make(tracker_name, *files) Saber.ui.error! "You need set #{tracker_name}.announce_url in ~/.saberrc first" unless Rc._has_key?("#{tracker_name}.announce_url") files.each { |file| torrent_file = "#{file}.torrent" if Pa.exists?(torrent_file) if options["force"] Pa.rm torrent_file else Saber.ui.say "Skip make: #{file} (torrent alreay exists. use -f to overwrite it.)" next end end if not Pa.exists?(file) Saber.ui.error "SKIP: can't find file to make -- #{file}" next end system "mktorrent -p -a #{Rc[tracker_name].announce_url} #{file.shellescape} #{options['option']}", show_cmd: true # cp tororent file if Rc._has_key?("make.watch") Pa.cp_f torrent_file, Rc.make.watch, show_cmd: "$" end if Rc._has_key?("make.remote_watch") Task["send"].invoke(:send1, [torrent_file, Rc.make.remote_watch]) end # move torrent file if Rc._has_key?("make.dir") Pa.mv_f torrent_file, Rc.make.dir, show_cmd: "$" end Saber.ui.say "" } end end end end