Sha256: 856fe62f6acb3a791e9fff8161a23c6ce0f8cd20b649b1f0428e208314abf430

Contents?: true

Size: 1.35 KB

Versions: 6

Compression:

Stored size: 1.35 KB

Contents

# (c) Copyright 2020 Ribose Inc.
#

namespace :geolexica do

  desc "Deploy site to S3"
  task :s3_deploy do
    s3sync_patterns_and_options = {
      "*.html" => ["--content-type", "text/html; charset=utf-8"],
      "*.json" => ["--content-type", "application/json; charset=utf-8"],
      "*.jsonld" => ["--content-type", "application/ld+json; charset=utf-8"],
      "*.tbx.xml" => ["--content-type", "application/xml; charset=utf-8"],
      "*.ttl" => ["--content-type", "text/turtle; charset=utf-8"],
      "*.yaml" => ["--content-type", "text/yaml; charset=utf-8"],
    }

    s3sync_patterns_and_options.each_pair do |pattern, options|
      s3_sync "--exclude", "*", "--include", pattern, *options
    end

    # Remaining files
    remaining_patterns = s3sync_patterns_and_options.keys
    s3_sync "--include", "*", *remaining_patterns.flat_map { |k| ["--exclude", k] }

    aws "configure", "set", "preview.cloudfront", "true"

    aws "cloudfront", "create-invalidation",
      "--distribution-id", ENV["CLOUDFRONT_DISTRIBUTION_ID"],
      "--paths", "/*"
  end

  def s3_sync(*args)
    source = "_site"
    target = "s3://#{ENV["S3_BUCKET_NAME"]}"
    common_options = ["--region", ENV["AWS_REGION"], "--delete", "--no-progress"]

    aws "s3", "sync", source, target, *common_options, *args
  end

  def aws(*args)
    system "aws", *args, exception: true
  end

end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
geolexica-server-0.0.1 lib/tasks/deploy.rake
geolexica-server-0.0.1.pre.beta.pre.32 lib/tasks/deploy.rake
jekyll-geolexica-1.7.0 lib/tasks/deploy.rake
jekyll-geolexica-1.6.0 lib/tasks/deploy.rake
jekyll-geolexica-1.5.4 lib/tasks/deploy.rake
jekyll-geolexica-1.5.3 lib/tasks/deploy.rake