diff options
author | Luke Karrys <luke@lukekarrys.com> | 2022-07-21 19:40:55 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-21 19:40:55 +0300 |
commit | 9905d0e24c162c3f6cc006fa86b4c9d0205a4c6f (patch) | |
tree | a3cfb0299f07f902465ecf3850496ebeea01900a /lib | |
parent | 4c945302fc2aa6854dc014fe31d6f5dfa96f7b52 (diff) |
fix: don't fail immediately if cache dir is not accessible (#5197)
This also changes all the log messages about not being able to create
initial directories and files to `log.verbose` since we know run those
commands on init. There are a lot of valid reasons why those might fail,
and we don't want to show a warning for them every time.
Fixes: #4769
Fixes: #4838
Fixes: #4996
Diffstat (limited to 'lib')
-rw-r--r-- | lib/npm.js | 10 | ||||
-rw-r--r-- | lib/utils/log-file.js | 6 |
2 files changed, 10 insertions, 6 deletions
diff --git a/lib/npm.js b/lib/npm.js index 2197f11a5..66111cab8 100644 --- a/lib/npm.js +++ b/lib/npm.js @@ -241,16 +241,18 @@ class Npm extends EventEmitter { await this.time('npm:load:configload', () => this.config.load()) // mkdir this separately since the logs dir can be set to - // a different location. an error here should be surfaced - // right away since it will error in cacache later + // a different location. if this fails, then we don't have + // a cache dir, but we don't want to fail immediately since + // the command might not need a cache dir (like `npm --version`) await this.time('npm:load:mkdirpcache', () => - fs.mkdir(this.cache, { recursive: true, owner: 'inherit' })) + fs.mkdir(this.cache, { recursive: true, owner: 'inherit' }) + .catch((e) => log.verbose('cache', `could not create cache: ${e}`))) // its ok if this fails. user might have specified an invalid dir // which we will tell them about at the end await this.time('npm:load:mkdirplogs', () => fs.mkdir(this.logsDir, { recursive: true, owner: 'inherit' }) - .catch((e) => log.warn('logfile', `could not create logs-dir: ${e}`))) + .catch((e) => log.verbose('logfile', `could not create logs-dir: ${e}`))) // note: this MUST be shorter than the actual argv length, because it // uses the same memory, so node will truncate it if it's too long. diff --git a/lib/utils/log-file.js b/lib/utils/log-file.js index 9cf6513be..d62329c85 100644 --- a/lib/utils/log-file.js +++ b/lib/utils/log-file.js @@ -204,7 +204,9 @@ class LogFiles { this.#files.push(logStream.path) return logStream } catch (e) { - log.warn('logfile', `could not be created: ${e}`) + // If the user has a readonly logdir then we don't want to + // warn this on every command so it should be verbose + log.verbose('logfile', `could not be created: ${e}`) } } @@ -226,7 +228,7 @@ class LogFiles { ) // Always ignore the currently written files - const files = await glob(globify(logGlob), { ignore: this.#files.map(globify) }) + const files = await glob(globify(logGlob), { ignore: this.#files.map(globify), silent: true }) const toDelete = files.length - this.#logsMax if (toDelete <= 0) { |