From 42e6e83ca63d48c72d6f33db773e082053151ea1 Mon Sep 17 00:00:00 2001
From: Sergey Dolin <dsame@github.com>
Date: Wed, 23 Aug 2023 17:59:17 +0200
Subject: [PATCH] Add advanced use cases to examples section

---
 examples.md | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/examples.md b/examples.md
index 1bcde91..16add0e 100644
--- a/examples.md
+++ b/examples.md
@@ -40,6 +40,9 @@
 - [Swift - Swift Package Manager](#swift---swift-package-manager)
 - [Swift - Mint](#swift---mint)
 - [* - Bazel](#---bazel)
+- [Common use cases](#common-use-cases)
+  - [Restore-only caches](#restore-only-caches)
+  - [Automatically detect cached paths](#automatically-detect-cached-paths)
 
 ## C# - NuGet
 
@@ -690,3 +693,32 @@ steps:
       ${{ runner.os }}-bazel-
 - run: bazelisk test //...
 ```
+##  Common use cases
+
+### Restore-only caches
+If there are several builds on the same repo it might make sense to create a cache in one build and use it in the
+others. The action [actions/cache/restore](https://github.com/actions/cache/blob/main/restore/README.md#only-restore-cache)
+should be used in this case.
+
+### Automatically detect cached paths
+[Defining outputs for jobs](https://docs.github.com/en/actions/using-jobs/defining-outputs-for-jobs) can be used to
+automatically detect paths to cache and use them to configure `actions/cache` action.
+
+```yaml
+- name: Get Go cached paths
+  id: find-cached-paths
+  run: |
+    echo "cache=$(go env GOCACHE)" >> $GITHUB_ENV
+    echo "modcache=$(go env GOMODCACHE)" >> $GITHUB_ENV
+
+- name: Set up cache
+  uses: actions/cache@v3
+  needs: find-cached-paths
+  with:
+    path: |
+      ${{ env.cache }}
+      ${{ env.modcache }}
+    key: setup-go-${{ runner.os }}-go-${{ hashFiles('go.sum go.mod') }}
+    restore-keys: |
+      setup-go-${{ runner.os }}-go-
+```
\ No newline at end of file