Sha256: 16e976a4a6aa4fc72553360b1d3daf7789715a0769b2b8b9f06daf997be7a1fb

Contents?: true

Size: 1.02 KB

Versions: 5

Compression:

Stored size: 1.02 KB

Contents

module Saber
  module Task
    # Usage
    #
    #   Task["upload"].invoke(:upload, ["site", "Hello.epub"])             # make hello.epub.torrent
    #   Task["upload"].invoke(:upload, ["site", "Hello.epub.torrent"])
    #
    class Upload < Base
      desc "upload", "upload"
      # @param [String] tracker_name
      # @param [String] file/torrent_file  "foo" or "foo.torrent"
      def upload(tracker_name, *torrent_files)
        require "saber/tracker/#{tracker_name}"

        torrent_files.map!{|v| Pa.add_ext2(v, ".torrent")}

        ensure_torrent_file(tracker_name, *torrent_files)

        tracker = Tracker[tracker_name].new
        tracker.login
        tracker.upload(*torrent_files)
      end

    private

      def ensure_torrent_file(tracker_name, *torrent_files)
        require "saber/task/make"

        torrent_files.each { |torrent_file|
          next if Pa.exists?(torrent_file)

          Task["make"].invoke(:make, [tracker_name, Pa.delete_ext2(torrent_file, ".torrent")])
        }
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
saber-1.1.1 lib/saber/task/upload.rb
saber-1.1.0 lib/saber/task/upload.rb
saber-1.0.2 lib/saber/task/upload.rb
saber-1.0.1 lib/saber/task/upload.rb
saber-1.0.0 lib/saber/task/upload.rb