diff --git a/README.md b/README.md index 17dad5e..b376fea 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,7 @@ See [Examples](examples.md) for a list of `actions/cache` implementations for us - [Java - Maven](./examples.md#java---maven) - [Node - npm](./examples.md#node---npm) - [Node - Yarn](./examples.md#node---yarn) +- [OCaml/Reason - esy](./examples.md##ocamlreason---esy) - [PHP - Composer](./examples.md#php---composer) - [Python - pip](./examples.md#python---pip) - [R - renv](./examples.md#r---renv) diff --git a/examples.md b/examples.md index 1b0d0c0..b21fda9 100644 --- a/examples.md +++ b/examples.md @@ -1,22 +1,32 @@ # Examples -- [C# - NuGet](#c---nuget) -- [Elixir - Mix](#elixir---mix) -- [Go - Modules](#go---modules) -- [Haskell - Cabal](#haskell---cabal) -- [Java - Gradle](#java---gradle) -- [Java - Maven](#java---maven) -- [Node - npm](#node---npm) -- [Node - Yarn](#node---yarn) -- [PHP - Composer](#php---composer) -- [Python - pip](#python---pip) -- [R - renv](#r---renv) -- [Ruby - Bundler](#ruby---bundler) -- [Rust - Cargo](#rust---cargo) -- [Scala - SBT](#scala---sbt) -- [Swift, Objective-C - Carthage](#swift-objective-c---carthage) -- [Swift, Objective-C - CocoaPods](#swift-objective-c---cocoapods) -- [Swift - Swift Package Manager](#swift---swift-package-manager) +- [Examples](#examples) + - [C# - NuGet](#c---nuget) + - [Elixir - Mix](#elixir---mix) + - [Go - Modules](#go---modules) + - [Haskell - Cabal](#haskell---cabal) + - [Java - Gradle](#java---gradle) + - [Java - Maven](#java---maven) + - [Node - npm](#node---npm) + - [macOS and Ubuntu](#macos-and-ubuntu) + - [Windows](#windows) + - [Using multiple systems and `npm config`](#using-multiple-systems-and-npm-config) + - [Node - Yarn](#node---yarn) + - [OCaml/Reason - esy](#ocamlreason---esy) + - [PHP - Composer](#php---composer) + - [Python - pip](#python---pip) + - [Simple example](#simple-example) + - [Multiple OS's in a workflow](#multiple-oss-in-a-workflow) + - [Using a script to get cache location](#using-a-script-to-get-cache-location) + - [R - renv](#r---renv) + - [Simple example](#simple-example-1) + - [Multiple OS's in a workflow](#multiple-oss-in-a-workflow-1) + - [Ruby - Bundler](#ruby---bundler) + - [Rust - Cargo](#rust---cargo) + - [Scala - SBT](#scala---sbt) + - [Swift, Objective-C - Carthage](#swift-objective-c---carthage) + - [Swift, Objective-C - CocoaPods](#swift-objective-c---cocoapods) + - [Swift - Swift Package Manager](#swift---swift-package-manager) ## C# - NuGet Using [NuGet lock files](https://docs.microsoft.com/nuget/consume-packages/package-references-in-project-files#locking-dependencies): @@ -170,6 +180,33 @@ The yarn cache directory will depend on your operating system and version of `ya ${{ runner.os }}-yarn- ``` +## OCaml/Reason - esy +Esy allows you to export built dependencies and import pre-built dependencies. +```yaml + - name: Restore Cache + id: restore-cache + uses: actions/cache@v1 + with: + path: _export + key: ${{ runner.os }}-esy-${{ hashFiles('esy.lock/index.json') }} + restore-keys: | + ${{ runner.os }}-esy- + - name: Esy install + run: 'esy install' + - name: Import Cache + run: | + esy import-dependencies _export + rm -rf _export + + ...(Build job)... + + # Re-export dependencies if anything has changed or if it is the first time + - name: Setting dependency cache + run: | + esy export-dependencies + if: steps.restore-cache.outputs.cache-hit != 'true' +``` + ## PHP - Composer