class Canvas::Workflow::CLI::Push

Public Instance Methods

push() click to toggle source
# File lib/canvas/workflow/cli/push.rb, line 6
def push
  # upload files
  # FIXME This assumes a unix-like environment which uses backslash as
  #   file separator.
  Dir.glob('files/**/*', File::FNM_DOTMATCH).select do |file|
    push?(file) && (Travis.created?(file) || Travis.modified?(file))
  end.each do |file|
    puts "=> uploading #{file}"

    content = {
      'name' => File.basename(file),
      'size' => File.size(file),
      'parent_folder_path' => File.dirname(file).sub('files', '')
    }

    Workflow.client.upload_file(course, file, content)
  end

  # upload assignments
  # FIXME this only compacts one level
  Dir.glob('assignments/*.md').select do |md_file|
    push?(md_file) && Travis.created?(md_file)
  end.each do |md_file|
    content = YAML.load_file(md_file)

    puts "=> creating #{content['title']}"

    Workflow.client.create_assignment(course, content['title'])
  end
end

Private Instance Methods

course() click to toggle source
# File lib/canvas/workflow/cli/push.rb, line 41
def course
  @course ||= Workflow.config['course']
end
push?(file) click to toggle source
# File lib/canvas/workflow/cli/push.rb, line 45
def push?(file)
  !File.directory?(file) &&
    (!Workflow.excluded?(file) || Workflow.included?(file))
end