Skip to content

Commit

Permalink
refactor ~ use late/lazy evaluation to avoid ENV{} and path.join()
Browse files Browse the repository at this point in the history
…calls

## [why]

There are a high number of ENV{} variable accesses and path manipulation calls for items
which will only get very rare usage. These are replaced with functions with can be called
late and lazily if/when higher priority items return undefined results.
  • Loading branch information
rivy committed Jan 11, 2021
1 parent c6e5443 commit b03bd7d
Showing 1 changed file with 11 additions and 10 deletions.
21 changes: 11 additions & 10 deletions src/lib/OSPaths.ts
Expand Up @@ -63,17 +63,18 @@ export function OSPathsAdaption_(adapter_: Platform.Adapter): OSPaths {
const temp = () => {
const fallback = 'C:\\Temp';
const priorityList = [
typeof os.tmpdir === 'function' ? os.tmpdir() : void 0,
env.get('TEMP'),
env.get('TMP'),
joinPathToBase(env.get('LOCALAPPDATA'), ['Temp']),
joinPathToBase(home(), ['AppData', 'Local', 'Temp']),
joinPathToBase(env.get('ALLUSERSPROFILE'), ['Temp']),
joinPathToBase(env.get('SystemRoot'), ['Temp']),
joinPathToBase(env.get('windir'), ['Temp']),
joinPathToBase(env.get('SystemDrive'), ['\\', 'Temp']),
os.tmpdir,
() => env.get('TEMP'),
() => env.get('TMP'),
() => joinPathToBase(env.get('LOCALAPPDATA'), ['Temp']),
() => joinPathToBase(home(), ['AppData', 'Local', 'Temp']),
() => joinPathToBase(env.get('ALLUSERSPROFILE'), ['Temp']),
() => joinPathToBase(env.get('SystemRoot'), ['Temp']),
() => joinPathToBase(env.get('windir'), ['Temp']),
() => joinPathToBase(env.get('SystemDrive'), ['\\', 'Temp']),
];
return normalizePath(priorityList.find((v) => !isEmpty(v))) || fallback;
const v = priorityList.find((v) => v && !isEmpty(v()));
return (v && normalizePath(v())) || fallback;
};

return { home, temp };
Expand Down

0 comments on commit b03bd7d

Please sign in to comment.