OSDN Git Service

Add bandwidth limit option.
[osdn-codes/osdn-cli.git] / lib / osdn / cli / command / relfile.rb
index 6ea473e..b7ad732 100644 (file)
@@ -5,7 +5,7 @@ module OSDN; module CLI; module Command
   class Relfile < FrsBase
     def help
       puts "#{$0} relfile [opts] [list]"
-      puts "#{$0} relfile [opts] create <target-file>"
+      puts "#{$0} relfile [opts] create <target-file> [target-files...]"
       puts "#{$0} relfile [opts] update <numeric-file-id>"
       puts "#{$0} relfile [opts] delete <numeric-file-id>"
       puts "Options:"
@@ -15,6 +15,9 @@ module OSDN; module CLI; module Command
       puts "     --release=<release-id>  Target release (numeric id)"
       puts "  -v --visibility=<public|private|hidden>"
       puts "      --force-digest         Calc local file digest forcely"
+      puts "      --progress             Force to show upload progress"
+      puts "      --no-progress          Force to hide upload progress"
+      puts "      --bwlimit=RATE         Limit bandwidth (in KB)"
     end
 
     def self.description
@@ -29,6 +32,9 @@ module OSDN; module CLI; module Command
         [ '--release', GetoptLong::REQUIRED_ARGUMENT ],
         [ '--visibility', '-v', GetoptLong::REQUIRED_ARGUMENT ],
         [ '--force-digest', GetoptLong::NO_ARGUMENT],
+        [ '--progress', GetoptLong::NO_ARGUMENT],
+        [ '--no-progress', GetoptLong::NO_ARGUMENT],
+        [ '--bwlimit', GetoptLong::REQUIRED_ARGUMENT ],
       )
       opts.each do |opt, arg|
         case opt
@@ -52,6 +58,13 @@ module OSDN; module CLI; module Command
             exit
           end
           @visibility = arg
+        when '--progress'
+          @show_progress = true
+        when '--no-progress'
+          @show_progress = false
+        when '--bwlimit'
+          arg.to_i != 0 and
+            OSDN::CLI._rate_limit = arg.to_i * 1024
         end
       end
     end
@@ -69,12 +82,18 @@ module OSDN; module CLI; module Command
     end
 
     def create
-      filename = ARGV.shift
-      if !filename
+      if ARGV.empty? || ARGV.first == ""
         logger.fatal "Target filename is missing."
         help
         return
       end
+
+      ARGV.each do |f|
+        create_one(f)
+      end
+    end
+
+    def create_one(filename)
       file = Pathname('.') + filename
       logger.debug "Calculating digest for #{file}..."
 
@@ -99,7 +118,7 @@ module OSDN; module CLI; module Command
       end
 
       fio = file.open
-      logger.level <= Logger::INFO and
+      logger.level <= Logger::INFO && @show_progress != false || @show_progress and
         OSDN::CLI._show_progress = true
       logger.info "Starting upload #{file}..."
       f = api.create_release_file target_proj, target_package, target_release, fio, visibility: @visibility