From e3ada7e5c255bea2f0f9e30e89056d19326b7475 Mon Sep 17 00:00:00 2001 From: Daz DeBoer Date: Fri, 29 Oct 2021 07:29:57 -0600 Subject: [PATCH] Use multiline input parameters instead of JSON input The `gradle-home-cache-includes` and `gradle-home-cache-excludes` parameters were initially implemented as JSON string inputs. This makes these inputs non-idiomatic and easier to get wrong. This change converts them to multi-line input parameters. Fixes #106 --- .github/workflows/integTest-caching-config.yml | 12 ++++++++---- README.md | 6 ++++-- action.yml | 6 +++--- src/cache-gradle-user-home.ts | 8 ++++---- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/.github/workflows/integTest-caching-config.yml b/.github/workflows/integTest-caching-config.yml index cee52bc..49093db 100644 --- a/.github/workflows/integTest-caching-config.yml +++ b/.github/workflows/integTest-caching-config.yml @@ -28,9 +28,11 @@ jobs: # Add "wrapper" to main cache entry and remove 'wrapper-zips' bundle # Exclude build-cache from main cache entry gradle-home-cache-includes: | - ["caches", "notifications", "wrapper"] + caches + notifications + wrapper gradle-home-cache-excludes: | - ["caches/build-cache-1"] + caches/build-cache-1 gradle-home-cache-artifact-bundles: | [ ["generated-gradle-jars", "caches/*/generated-gradle-jars/*.jar"], @@ -57,9 +59,11 @@ jobs: cache-read-only: true # Need the same configuration when restoring state from cache gradle-home-cache-includes: | - ["caches", "notifications", "wrapper"] + caches + notifications + wrapper gradle-home-cache-excludes: | - ["caches/build-cache-1"] + caches/build-cache-1 gradle-home-cache-artifact-bundles: | [ ["generated-gradle-jars", "caches/*/generated-gradle-jars/*.jar"], diff --git a/README.md b/README.md index e3f8b9a..94a3f44 100644 --- a/README.md +++ b/README.md @@ -191,10 +191,12 @@ The contents to be cached can be fine tuned by including and excluding certain p ```yaml # Cache downloaded JDKs in addition to the default directories. gradle-home-cache-includes: | - ["caches", "notifications", "jdks"] + caches + notifications + jdks # Exclude the local build-cache from the directories cached. gradle-home-cache-excludes: | - ["caches/build-cache-1"] + caches/build-cache-1 ``` You can specify any number of fixed paths or patterns to include or exclude. diff --git a/action.yml b/action.yml index 1ff70a6..42fc79e 100644 --- a/action.yml +++ b/action.yml @@ -36,13 +36,13 @@ inputs: description: Paths within Gradle User Home to cache. required: false default: | - ["caches", "notifications"] + caches + notifications gradle-home-cache-excludes: description: Paths within Gradle User Home to exclude from cache. required: false - default: | - [] + # e.g. Use the following setting to prevent the local build cache from being saved/restored # gradle-home-cache-excludes: | # ["caches/build-cache-1"] diff --git a/src/cache-gradle-user-home.ts b/src/cache-gradle-user-home.ts index 3ac5376..0a2902c 100644 --- a/src/cache-gradle-user-home.ts +++ b/src/cache-gradle-user-home.ts @@ -84,8 +84,8 @@ export class GradleUserHomeCache extends AbstractCache { } private removeExcludedPaths(): void { - const rawPaths: string[] = JSON.parse( - core.getInput(EXCLUDE_PATHS_PARAMETER) + const rawPaths: string[] = core.getMultilineInput( + EXCLUDE_PATHS_PARAMETER ) const resolvedPaths = rawPaths.map(x => path.resolve(this.gradleUserHome, x) @@ -193,8 +193,8 @@ export class GradleUserHomeCache extends AbstractCache { } protected getCachePath(): string[] { - const rawPaths: string[] = JSON.parse( - core.getInput(INCLUDE_PATHS_PARAMETER) + const rawPaths: string[] = core.getMultilineInput( + INCLUDE_PATHS_PARAMETER ) rawPaths.push(META_FILE_DIR) const resolvedPaths = rawPaths.map(x => this.resolveCachePath(x))