# syntax = docker/dockerfile:1.0-experimental

FROM busybox AS cache-helper-collect-gems
WORKDIR /tmp/src
RUN --mount=target=/tmp/src \
  mkdir -p /tmp/dst && \
  cp --parents -rf \
    config/canvas_rails_switcher.rb \
    Gemfile \
    Gemfile.d \
    \
    /tmp/dst && \
  find gems \( \
    -name "Gemfile" -o \
    -name "Gemfile.d" -o \
    -name "Gemfile.lock" -o \
    -name "*.gemspec" -o \
    -name "gem_version.rb" -o \
    -name "version.rb" \
  \) -exec cp --parents -rf {} /tmp/dst \;

FROM busybox AS cache-helper-collect-yarn
WORKDIR /tmp/src
RUN --mount=target=/tmp/src \
  mkdir -p /tmp/dst && \
  cp --parents -rf \
    package.json \
    yarn.lock \
    \
    /tmp/dst && \
  find \
    client_apps/* \
    gems/canvas_i18nliner \
    gems/plugins/* \
    packages/* \
    \
    -name 'package.json' \
    -exec cp --parents {} /tmp/dst \;

FROM busybox AS cache-helper-collect-packages
WORKDIR /tmp/src
RUN --mount=target=/tmp/src \
  mkdir -p /tmp/dst && \
  cp --parents -rf \
    babel.config.js \
    packages \
    \
    /tmp/dst

FROM busybox AS cache-helper-collect-webpack
WORKDIR /tmp/src
RUN --mount=target=/tmp/src \
  mkdir -p /tmp/dst && \
  find gems -type d \
    -not -path "gems" \
    -not -path "gems/plugins" \
    -maxdepth 2 \
    -path "gems/*/lib" \
    -exec cp -rf --parents {} /tmp/dst \; && \
  find gems/canvas_i18nliner \
    -not -path "gems/canvas_i18nliner" \
    -not -path "gems/canvas_i18nliner/spec" \
    -not -path "gems/canvas_i18nliner/spec/*" \
    -exec cp -rf --parents {} /tmp/dst \; && \
  find gems/plugins \( \
    -path "*/app/coffeescripts" -o \
    -path "*/app/jsx" -o \
    -path "*/app/stylesheets" -o \
    -path "*/app/views/jst" -o \
    -path "*/public" -o \
  \) -exec cp -rf --parents {} /tmp/dst \; && \
  cp --parents -rf \
    app/coffeescripts \
    app/jsx \
    app/stylesheets \
    app/views/jst \
    bin \
    client_apps \
    config/environments \
    config/locales \
    frontend_build \
    lib/canvas/cdn \
    lib/rake \
    lib/tasks \
    public \
    \
    config/application.rb \
    config/boot.rb \
    config/brandable_css.yml \
    config/browsers.yml \
    config/canvas_rails_switcher.rb \
    config/environment.rb \
    config/initializers/plugin_symlinks.rb \
    config/initializers/client_app_symlinks.rb \
    config/initializers/json.rb \
    config/initializers/revved_asset_urls.rb \
    db/migrate/*_regenerate_brand_files_based_on_new_defaults_*.rb \
    lib/brandable_css.rb \
    lib/canvas_logger.rb \
    lib/canvas_yaml.rb \
    lib/config_file.rb \
    lib/logging_filter.rb \
    lib/request_cache.rb \
    lib/temp_cache.rb \
    lib/canvas/cdn.rb \
    lib/canvas/reloader.rb \
    .bowerrc \
    .i18nignore \
    .i18nrc \
    Rakefile \
    gulpfile.js \
    webpack.config.js \
    \
    /tmp/dst
