Sha256: fe3963767d245ac113a81d1745fdc8f32dde99d9a352515e2e29cea7b8ab31bc

Contents?: true

Size: 1.38 KB

Versions: 2

Compression:

Stored size: 1.38 KB

Contents

#!/usr/bin/env ruby
require File.expand_path('../../lib/mls/cli', __FILE__)

case ARGV.shift.downcase.strip
when "documents:backup"
  MLS::CLI.parse_args(ARGV)
  directory = ARGV.shift
  
  if directory.nil? || !File.directory?(directory)
    puts "Usage: mls documents:backup dir [options...]"
    exit 1
  end
    
  MLS::CLI::Documents.backup(directory)
when "documents:migrate"
  MLS::CLI.parse_args(ARGV)
  directory = ARGV.shift

  if directory.nil? || !File.directory?(directory)
    puts "Usage: mls documents:backup dir [options...]"
    exit 1
  end

  b2 = StandardStorage::B2.new(MLS::CLI.options[:b2])
  shas = []
  
  Document.where(provider: {excludes: 'b2/sha256'}).limit(1000).each do |document|
    next if shas.include?(document.sha256)
    if document.sha256 && File.exists?(File.join(directory, MLS::CLI::Documents.partition(document.sha256)))
      b2.write(document.sha256, File.open(File.join(directory, MLS::CLI::Documents.partition(document.sha256))), {
        filename: document.filename,
        sha1: document.sha1,
        content_type: document.content_type,
        size: document.size
      })
      
      Documents.where(md5: document.md5).find_each do |d|
        next if d.sha256 != document.sha256
        d.update!(provider: d.provider + ['b2/sha256'])
      end
      shas << document.sha256
    end
  end
else
  puts "Usage: mls documents:backup dir [options...]"
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mls-1.9.0 bin/mls
mls-1.8.0 bin/mls