module BitClipboardCopy

takelage bit clipboard copy

Public Instance Methods

bit_clipboard_copy(dir, scope) click to toggle source

Backend method for bit copy.

# File lib/takelage/bit/clipboard/copy.rb, line 6
def bit_clipboard_copy(dir, scope)
  # remove trailing slash
  dir = dir.chomp('/')

  log.debug "Running bit copy \"#{dir}\" to \"#{scope}\""

  return false unless configured? %w[project_root_dir]

  return false unless _bit_clipboard_lib_prepare_workspace

  unless File.directory? dir
    log.error "The directory \"#{dir}\" does not exist"
    return false
  end

  _bit_clipboard_copy_dir dir, scope
end

Private Instance Methods

_bit_clipboard_bit_dev_scope_exists(scope) click to toggle source

Check if bit.dev remote scope exists.

# File lib/takelage/bit/clipboard/copy.rb, line 84
def _bit_clipboard_bit_dev_scope_exists(scope)
  cmd_bit_list_scope = format(
    config.active['cmd_bit_clipboard_copy_bit_list_scope'],
    scope: scope
  )

  status = try cmd_bit_list_scope

  return true if status.exitstatus.zero?

  log.error "No bit.dev remote scope \"#{scope}\" found"
  false
end
_bit_clipboard_copy_add_dir(id, dir) click to toggle source

bit tag dir.

# File lib/takelage/bit/clipboard/copy.rb, line 113
def _bit_clipboard_copy_add_dir(id, dir)
  cmd_bit_add_dir = format(
    config.active['cmd_bit_clipboard_copy_bit_add_dir'],
    id: id,
    dir: dir
  )

  run cmd_bit_add_dir
end
_bit_clipboard_copy_dir(dir, scope) click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/takelage/bit/clipboard/copy.rb, line 27
def _bit_clipboard_copy_dir(dir, scope)
  log.debug "Adding the directory \"#{dir}\" as a tagged bit component"

  return false unless _bit_clipboard_copy_dir_scope_exists? scope

  return false if _bit_clipboard_copy_readme_bit_exists_in_subdir? dir

  id = _bit_clipboard_lib_id(dir)

  _bit_clipboard_copy_touch_readme_bit dir
  _bit_clipboard_copy_add_dir id, dir
  _bit_clipboard_copy_tag_dir id
  _bit_clipboard_copy_export_to_scope scope
  _bit_clipbpard_lib_remove_bit_artifacts
  _bit_clipboard_lib_sync_workspace

  log.info "Copied directory \"#{dir}\" as bit component \"#{id}\" " \
           "to bit remote scope \"#{scope}\""
end
_bit_clipboard_copy_dir_scope_exists?(scope) click to toggle source

Check if bit scope exists.

# File lib/takelage/bit/clipboard/copy.rb, line 70
def _bit_clipboard_copy_dir_scope_exists?(scope)
  bit_dev = config.active['bit_dev_user']

  # check if scope is a candidate for a bit.dev remote scope
  if scope.start_with? "#{bit_dev}."
    return false unless _bit_clipboard_bit_dev_scope_exists scope
  else
    return false unless _bit_clipboard_custom_scope_exists scope
  end

  true
end
_bit_clipboard_copy_export_to_scope(scope) click to toggle source

bit export component to bit remote scope.

# File lib/takelage/bit/clipboard/copy.rb, line 134
def _bit_clipboard_copy_export_to_scope(scope)
  cmd_bit_export_to_scope = format(
    config.active['cmd_bit_clipboard_copy_bit_export_to_scope'],
    scope: scope
  )

  run cmd_bit_export_to_scope
end
_bit_clipboard_copy_readme_bit_exists_in_subdir?(dir) click to toggle source

Check if a README.bit file exists in a subdirectory.

# File lib/takelage/bit/clipboard/copy.rb, line 58
def _bit_clipboard_copy_readme_bit_exists_in_subdir?(dir)
  Dir.glob("#{dir}/**/README.bit").each do |file|
    unless file == "#{dir}/README.bit"
      log.error 'Nested README.bit file detected'
      return true
    end
  end

  false
end
_bit_clipboard_copy_tag_dir(id) click to toggle source

bit tag dir.

# File lib/takelage/bit/clipboard/copy.rb, line 124
def _bit_clipboard_copy_tag_dir(id)
  cmd_bit_tag_id = format(
    config.active['cmd_bit_clipboard_copy_bit_tag_id'],
    id: id
  )

  run cmd_bit_tag_id
end
_bit_clipboard_copy_touch_readme_bit(dir) click to toggle source

Touch README.bit if necessary.

# File lib/takelage/bit/clipboard/copy.rb, line 49
def _bit_clipboard_copy_touch_readme_bit(dir)
  readme_bit = "#{dir}/README.bit"
  return if File.file? readme_bit

  log.info "Creating \"README.bit\" in \"#{dir}\""
  File.open(readme_bit, 'w') {}
end
_bit_clipboard_custom_scope_exists(scope) click to toggle source

Check if bit remote scope is added to local workspace.

# File lib/takelage/bit/clipboard/copy.rb, line 99
def _bit_clipboard_custom_scope_exists(scope)
  cmd_bit_list_remotes =
    config.active['cmd_bit_clipboard_copy_bit_list_remotes']

  stdout_str = run cmd_bit_list_remotes

  return true if /.*\s+#{scope}\s+.*/m.match? stdout_str

  log.error "No bit remote scope \"#{scope}\" " \
                  'found in local bit workspace'
  false
end