module MiGA::Cli::Action::Init::FilesHelper

Helper module with files configuration functions for MiGA::Cli::Action::Init

Constants

MIGA_CONFIG_DATE
MIGA_CONFIG_LONGVERSION
MIGA_CONFIG_VERSION

Public Instance Methods

check_additional_files(paths) click to toggle source
# File lib/miga/cli/action/init/files_helper.rb, line 55
def check_additional_files(paths)
  if cli[:mytaxa]
    check_mytaxa_scores(paths)
    check_mytaxa_database(paths)
  end
  check_rdp_classifier if cli[:rdp]
  check_phyla_lite
  cli.puts ''
end
check_configuration_script(rc_fh) click to toggle source
# File lib/miga/cli/action/init/files_helper.rb, line 37
def check_configuration_script(rc_fh)
  unless File.exist? cli[:config]
    cli[:config] = cli.ask_user(
      'Is there a script I need to load at startup?',
      cli[:config]
    )
  end
  if File.exist? cli[:config]
    cli[:config] = File.expand_path(cli[:config])
    cli.puts "Found bash configuration script: #{cli[:config]}"
    rc_fh.puts "MIGA_STARTUP='#{cli[:config]}'"
    rc_fh.puts '. "$MIGA_STARTUP"'
  else
    cli[:config] = '/dev/null'
  end
  cli.puts ''
end
check_mytaxa_database(paths) click to toggle source
# File lib/miga/cli/action/init/files_helper.rb, line 75
def check_mytaxa_database(paths)
  cli.print 'Looking for MyTaxa DB... '
  mt = File.dirname(paths['MyTaxa'])
  dmnd_db = 'AllGenomes.faa.dmnd'
  miga_db = File.join(ENV['MIGA_HOME'], '.miga_db')
  home_db = File.join(miga_db, dmnd_db)
  mt_db = File.join(mt, 'AllGenomes.faa.dmnd')
  if File.exist?(home_db)
    cli.puts 'yes'
  elsif File.exist?(mt_db)
    cli.puts 'yes, sym-linking'
    FileUtils.mkdir_p(miga_db)
    File.symlink(mt_db, home_db)
  else
    cli.puts 'no, downloading'
    MiGA::MiGA.download_file_ftp(:miga_dist, dmnd_db, home_db) do |n, size|
      cli.advance("#{dmnd_db}:", n, size)
    end
    cli.puts
  end
end
check_mytaxa_scores(paths) click to toggle source
# File lib/miga/cli/action/init/files_helper.rb, line 65
def check_mytaxa_scores(paths)
  cli.print 'Looking for MyTaxa scores... '
  mt = File.dirname(paths['MyTaxa'])
  unless Dir.exist?(File.join(mt, 'db'))
    cli.puts "no\nExecute 'python2 #{mt}/utils/download_db.py'"
    raise 'Incomplete MyTaxa installation'
  end
  cli.puts 'yes'
end
check_phyla_lite() click to toggle source
# File lib/miga/cli/action/init/files_helper.rb, line 120
def check_phyla_lite
  cli.puts 'Looking for Phyla Lite... '
  cmd = ['get_db', '-n', 'Phyla_Lite', '--no-overwrite']
  MiGA::Cli.new(cmd).launch(true)
end
check_rdp_classifier() click to toggle source
# File lib/miga/cli/action/init/files_helper.rb, line 97
def check_rdp_classifier
  cli.print 'Looking for RDP classifier... '
  miga_db = File.join(ENV['MIGA_HOME'], '.miga_db')
  file = 'classifier.jar'
  path = File.join(miga_db, file)
  if File.size?(path)
    cli.puts 'yes'
  else
    cli.puts 'no, downloading'
    arch = 'classifier.tar.gz'
    MiGA::MiGA.download_file_ftp(
      :miga_dist, arch, File.join(miga_db, arch)
    ) { |n, size| cli.advance("#{arch}:", n, size) }
    cmd = <<~CMD
      cd #{miga_db.shellescape} \
        && tar zxf #{arch.shellescape} \
        && rm #{arch.shellescape}
    CMD
    run_cmd(cli, cmd, source: nil)
    cli.puts
  end
end
close_rc_file(rc_fh) click to toggle source
# File lib/miga/cli/action/init/files_helper.rb, line 26
def close_rc_file(rc_fh)
  rc_fh.puts <<~FOOT

    MIGA_CONFIG_VERSION='#{MiGA::MiGA.FULL_VERSION}'
    MIGA_CONFIG_LONGVERSION='#{MiGA::MiGA.LONG_VERSION}'
    MIGA_CONFIG_DATE='#{Time.now}'

  FOOT
  rc_fh.close
end
open_rc_file() click to toggle source
# File lib/miga/cli/action/init/files_helper.rb, line 6
def open_rc_file
  rc_path = File.expand_path('.miga_rc', ENV['MIGA_HOME'])
  if File.exist? rc_path
    if cli.ask_user(
      'I found a previous configuration. Do you want to continue?',
      'yes', %w(yes no)
    ) == 'no'
      cli.puts 'OK, see you soon!'
      exit(0)
    end
  end
  rc_fh = File.open(rc_path, 'w')
  rc_fh.puts <<~BASH
    #!/bin/bash
    # `miga init` made this on #{Time.now}

  BASH
  rc_fh
end