module Dapp::Dapp::Command::Sample::Create

Public Instance Methods

_sample_directory(sample_name) click to toggle source
# File lib/dapp/dapp/command/sample/create.rb, line 42
def _sample_directory(sample_name)
  File.expand_path(File.join('/', _samples_dir, sample_name))[1..-1]
end
_sample_repo_blobs_entries(sample_name) click to toggle source
# File lib/dapp/dapp/command/sample/create.rb, line 36
def _sample_repo_blobs_entries(sample_name)
  _sample_git_repo
    .blobs_entries(_sample_git_repo.latest_branch_commit(_samples_git_repo_branch), paths: [_sample_directory(sample_name)])
    .reject { |_, entry| entry[:filemode] == 0o160000 }
end
_sample_slice_cwd(sample_name, path) click to toggle source
# File lib/dapp/dapp/command/sample/create.rb, line 46
def _sample_slice_cwd(sample_name, path)
  path
    .reverse
    .chomp(_sample_directory(sample_name).reverse)
    .chomp('/')
    .reverse
end
sample_create(sample_name) click to toggle source
# File lib/dapp/dapp/command/sample/create.rb, line 6
def sample_create(sample_name)
  sample_exist!(sample_name)

  _sample_repo_blobs_entries(sample_name).each do |root, entry|
    file_path = _sample_slice_cwd(sample_name, File.join(root, entry[:name]))
    content = _sample_git_repo.lookup_object(entry[:oid]).content

    begin
      FileUtils.mkdir_p(File.dirname(file_path))
      if entry[:filemode] == 0o120000 # symlink
        FileUtils.symlink(content, file_path)
      else
        IO.write(file_path, content)
        FileUtils.chmod(entry[:filemode], file_path)
      end
    rescue Errno::EEXIST => e
      log_warning("File `#{file_path}` skipped: `#{e.message}`")
    end
  end
end
sample_exist!(sample_name) click to toggle source
# File lib/dapp/dapp/command/sample/create.rb, line 27
def sample_exist!(sample_name)
  return if sample_exist?(sample_name)
  raise Error::Command, code: :sample_not_exist, data: { name: sample_name, url: _samples_git_repo_url, path: _samples_dir }
end
sample_exist?(sample_name) click to toggle source
# File lib/dapp/dapp/command/sample/create.rb, line 32
def sample_exist?(sample_name)
  _sample_list.include?(sample_name)
end