mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
cache: Set default cache path based on $USER
Change the default cache directory to `$TMPDIR/hugo_cache_$USER`, so that multi-user systems do not have caches that interfere with each other. The other cache-choosing logic (e.g. Netlify exceptions, configuration options) are not affected. Fixes #7391
This commit is contained in:
parent
254c2b323c
commit
258884f44f
16 changed files with 21 additions and 16 deletions
|
@ -521,7 +521,7 @@ Complete documentation is available at https://gohugo.io/.`
|
||||||
func applyLocalFlagsBuildConfig(cmd *cobra.Command, r *rootCommand) {
|
func applyLocalFlagsBuildConfig(cmd *cobra.Command, r *rootCommand) {
|
||||||
cmd.Flags().StringSliceP("theme", "t", []string{}, "themes to use (located in /themes/THEMENAME/)")
|
cmd.Flags().StringSliceP("theme", "t", []string{}, "themes to use (located in /themes/THEMENAME/)")
|
||||||
cmd.Flags().StringVarP(&r.baseURL, "baseURL", "b", "", "hostname (and path) to the root, e.g. https://spf13.com/")
|
cmd.Flags().StringVarP(&r.baseURL, "baseURL", "b", "", "hostname (and path) to the root, e.g. https://spf13.com/")
|
||||||
cmd.Flags().StringP("cacheDir", "", "", "filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/")
|
cmd.Flags().StringP("cacheDir", "", "", "filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache_$USER/")
|
||||||
_ = cmd.Flags().SetAnnotation("cacheDir", cobra.BashCompSubdirsInDir, []string{})
|
_ = cmd.Flags().SetAnnotation("cacheDir", cobra.BashCompSubdirsInDir, []string{})
|
||||||
cmd.Flags().StringP("contentDir", "c", "", "filesystem path to content directory")
|
cmd.Flags().StringP("contentDir", "c", "", "filesystem path to content directory")
|
||||||
_ = cmd.Flags().SetAnnotation("theme", cobra.BashCompSubdirsInDir, []string{"themes"})
|
_ = cmd.Flags().SetAnnotation("theme", cobra.BashCompSubdirsInDir, []string{"themes"})
|
||||||
|
|
|
@ -27,7 +27,7 @@ hugo [flags]
|
||||||
-D, --buildDrafts include content marked as draft
|
-D, --buildDrafts include content marked as draft
|
||||||
-E, --buildExpired include expired content
|
-E, --buildExpired include expired content
|
||||||
-F, --buildFuture include content with publishdate in the future
|
-F, --buildFuture include content with publishdate in the future
|
||||||
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
|
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache_$USER/
|
||||||
--cleanDestinationDir remove files from destination not found in static directories
|
--cleanDestinationDir remove files from destination not found in static directories
|
||||||
--clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00
|
--clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00
|
||||||
--config string config file (default is hugo.yaml|json|toml)
|
--config string config file (default is hugo.yaml|json|toml)
|
||||||
|
|
|
@ -19,7 +19,7 @@ hugo config [command] [flags]
|
||||||
|
|
||||||
```
|
```
|
||||||
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
||||||
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
|
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache_$USER/
|
||||||
-c, --contentDir string filesystem path to content directory
|
-c, --contentDir string filesystem path to content directory
|
||||||
--format string preferred file format (toml, yaml or json) (default "toml")
|
--format string preferred file format (toml, yaml or json) (default "toml")
|
||||||
-h, --help help for config
|
-h, --help help for config
|
||||||
|
|
|
@ -15,7 +15,7 @@ hugo config mounts [flags] [args]
|
||||||
|
|
||||||
```
|
```
|
||||||
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
||||||
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
|
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache_$USER/
|
||||||
-c, --contentDir string filesystem path to content directory
|
-c, --contentDir string filesystem path to content directory
|
||||||
-h, --help help for mounts
|
-h, --help help for mounts
|
||||||
-t, --theme strings themes to use (located in /themes/THEMENAME/)
|
-t, --theme strings themes to use (located in /themes/THEMENAME/)
|
||||||
|
|
|
@ -20,7 +20,7 @@ hugo mod clean [flags] [args]
|
||||||
```
|
```
|
||||||
--all clean entire module cache
|
--all clean entire module cache
|
||||||
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
||||||
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
|
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache_$USER/
|
||||||
-c, --contentDir string filesystem path to content directory
|
-c, --contentDir string filesystem path to content directory
|
||||||
-h, --help help for clean
|
-h, --help help for clean
|
||||||
--pattern string pattern matching module paths to clean (all if not set), e.g. "**hugo*"
|
--pattern string pattern matching module paths to clean (all if not set), e.g. "**hugo*"
|
||||||
|
|
|
@ -21,7 +21,7 @@ hugo mod graph [flags] [args]
|
||||||
|
|
||||||
```
|
```
|
||||||
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
||||||
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
|
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache_$USER/
|
||||||
--clean delete module cache for dependencies that fail verification
|
--clean delete module cache for dependencies that fail verification
|
||||||
-c, --contentDir string filesystem path to content directory
|
-c, --contentDir string filesystem path to content directory
|
||||||
-h, --help help for graph
|
-h, --help help for graph
|
||||||
|
|
|
@ -26,7 +26,7 @@ hugo mod init [flags] [args]
|
||||||
|
|
||||||
```
|
```
|
||||||
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
||||||
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
|
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache_$USER/
|
||||||
-c, --contentDir string filesystem path to content directory
|
-c, --contentDir string filesystem path to content directory
|
||||||
-h, --help help for init
|
-h, --help help for init
|
||||||
-t, --theme strings themes to use (located in /themes/THEMENAME/)
|
-t, --theme strings themes to use (located in /themes/THEMENAME/)
|
||||||
|
|
|
@ -29,7 +29,7 @@ hugo mod npm pack [flags] [args]
|
||||||
|
|
||||||
```
|
```
|
||||||
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
||||||
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
|
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache_$USER/
|
||||||
-c, --contentDir string filesystem path to content directory
|
-c, --contentDir string filesystem path to content directory
|
||||||
-h, --help help for pack
|
-h, --help help for pack
|
||||||
-t, --theme strings themes to use (located in /themes/THEMENAME/)
|
-t, --theme strings themes to use (located in /themes/THEMENAME/)
|
||||||
|
|
|
@ -15,7 +15,7 @@ hugo mod tidy [flags] [args]
|
||||||
|
|
||||||
```
|
```
|
||||||
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
||||||
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
|
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache_$USER/
|
||||||
-c, --contentDir string filesystem path to content directory
|
-c, --contentDir string filesystem path to content directory
|
||||||
-h, --help help for tidy
|
-h, --help help for tidy
|
||||||
-t, --theme strings themes to use (located in /themes/THEMENAME/)
|
-t, --theme strings themes to use (located in /themes/THEMENAME/)
|
||||||
|
|
|
@ -21,7 +21,7 @@ hugo mod vendor [flags] [args]
|
||||||
|
|
||||||
```
|
```
|
||||||
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
||||||
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
|
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache_$USER/
|
||||||
-c, --contentDir string filesystem path to content directory
|
-c, --contentDir string filesystem path to content directory
|
||||||
-h, --help help for vendor
|
-h, --help help for vendor
|
||||||
-t, --theme strings themes to use (located in /themes/THEMENAME/)
|
-t, --theme strings themes to use (located in /themes/THEMENAME/)
|
||||||
|
|
|
@ -19,7 +19,7 @@ hugo mod verify [flags] [args]
|
||||||
|
|
||||||
```
|
```
|
||||||
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
||||||
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
|
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache_$USER/
|
||||||
--clean delete module cache for dependencies that fail verification
|
--clean delete module cache for dependencies that fail verification
|
||||||
-c, --contentDir string filesystem path to content directory
|
-c, --contentDir string filesystem path to content directory
|
||||||
-h, --help help for verify
|
-h, --help help for verify
|
||||||
|
|
|
@ -26,7 +26,7 @@ hugo new content [path] [flags]
|
||||||
|
|
||||||
```
|
```
|
||||||
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
-b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
|
||||||
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
|
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache_$USER/
|
||||||
-c, --contentDir string filesystem path to content directory
|
-c, --contentDir string filesystem path to content directory
|
||||||
--editor string edit new content with this editor, if provided
|
--editor string edit new content with this editor, if provided
|
||||||
-f, --force overwrite file if it already exists
|
-f, --force overwrite file if it already exists
|
||||||
|
|
|
@ -33,7 +33,7 @@ hugo server [command] [flags]
|
||||||
-D, --buildDrafts include content marked as draft
|
-D, --buildDrafts include content marked as draft
|
||||||
-E, --buildExpired include expired content
|
-E, --buildExpired include expired content
|
||||||
-F, --buildFuture include content with publishdate in the future
|
-F, --buildFuture include content with publishdate in the future
|
||||||
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
|
--cacheDir string filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache_$USER/
|
||||||
--cleanDestinationDir remove files from destination not found in static directories
|
--cleanDestinationDir remove files from destination not found in static directories
|
||||||
-c, --contentDir string filesystem path to content directory
|
-c, --contentDir string filesystem path to content directory
|
||||||
--disableBrowserError do not show build errors in the browser
|
--disableBrowserError do not show build errors in the browser
|
||||||
|
|
|
@ -807,7 +807,7 @@ You can override any of these cache settings in your own `hugo.toml`.
|
||||||
### The keywords explained
|
### The keywords explained
|
||||||
|
|
||||||
`:cacheDir`
|
`:cacheDir`
|
||||||
: This is the value of the `cacheDir` config option if set (can also be set via OS env variable `HUGO_CACHEDIR`). It will fall back to `/opt/build/cache/hugo_cache/` on Netlify, or a `hugo_cache` directory below the OS temp dir for the others. This means that if you run your builds on Netlify, all caches configured with `:cacheDir` will be saved and restored on the next build. For other CI vendors, please read their documentation. For an CircleCI example, see [this configuration](https://github.com/bep/hugo-sass-test/blob/6c3960a8f4b90e8938228688bc49bdcdd6b2d99e/.circleci/config.yml).
|
: This is the value of the `cacheDir` config option if set (can also be set via OS env variable `HUGO_CACHEDIR`). It will fall back to `/opt/build/cache/hugo_cache/` on Netlify, or a `hugo_cache_$USER` directory below the OS temp dir for the others. This means that if you run your builds on Netlify, all caches configured with `:cacheDir` will be saved and restored on the next build. For other CI vendors, please read their documentation. For an CircleCI example, see [this configuration](https://github.com/bep/hugo-sass-test/blob/6c3960a8f4b90e8938228688bc49bdcdd6b2d99e/.circleci/config.yml).
|
||||||
|
|
||||||
`:project`
|
`:project`
|
||||||
: The base directory name of the current Hugo project. This means that, in its default setting, every project will have separated file caches, which means that when you do `hugo --gc` you will not touch files related to other Hugo projects running on the same PC.
|
: The base directory name of the current Hugo project. This means that, in its default setting, every project will have separated file caches, which means that when you do `hugo --gc` you will not touch files related to other Hugo projects running on the same PC.
|
||||||
|
|
|
@ -209,7 +209,7 @@ The expression `{{ index $r number }}` must be used to output the nth-column fro
|
||||||
|
|
||||||
### Cache URLs
|
### Cache URLs
|
||||||
|
|
||||||
Each downloaded URL will be cached in the default folder `$TMPDIR/hugo_cache/`. The variable `$TMPDIR` will be resolved to your system-dependent temporary directory.
|
Each downloaded URL will be cached in the default folder `$TMPDIR/hugo_cache_$USER/`. The variable `$TMPDIR` will be resolved to your system-dependent temporary directory.
|
||||||
|
|
||||||
With the command-line flag `--cacheDir`, you can specify any folder on your system as a caching directory.
|
With the command-line flag `--cacheDir`, you can specify any folder on your system as a caching directory.
|
||||||
|
|
||||||
|
|
|
@ -409,7 +409,12 @@ func GetCacheDir(fs afero.Fs, cacheDir string) (string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fall back to a cache in /tmp.
|
// Fall back to a cache in /tmp.
|
||||||
return GetTempDir("hugo_cache", fs), nil
|
userName := os.Getenv("USER")
|
||||||
|
if userName != "" {
|
||||||
|
return GetTempDir("hugo_cache_"+userName, fs), nil
|
||||||
|
} else {
|
||||||
|
return GetTempDir("hugo_cache", fs), nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func cacheDirDefault(cacheDir string) string {
|
func cacheDirDefault(cacheDir string) string {
|
||||||
|
|
Loading…
Reference in a new issue