]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - shared/core-utils/common/path.ts
ec507538b21ca1900ea9f7485a51826f31916b37
[github/Chocobozzz/PeerTube.git] / shared / core-utils / common / path.ts
1 import { basename, extname, isAbsolute, join, resolve } from 'path'
2
3 let rootPath: string
4
5 function root () {
6 if (rootPath) return rootPath
7
8 rootPath = __dirname
9
10 if (basename(rootPath) === 'common') rootPath = resolve(rootPath, '..')
11 if (basename(rootPath) === 'core-utils') rootPath = resolve(rootPath, '..')
12 if (basename(rootPath) === 'shared') rootPath = resolve(rootPath, '..')
13 if (basename(rootPath) === 'server') rootPath = resolve(rootPath, '..')
14 if (basename(rootPath) === 'dist') rootPath = resolve(rootPath, '..')
15
16 return rootPath
17 }
18
19 function buildPath (path: string) {
20 if (isAbsolute(path)) return path
21
22 return join(root(), path)
23 }
24
25 function getLowercaseExtension (filename: string) {
26 const ext = extname(filename) || ''
27
28 return ext.toLowerCase()
29 }
30
31 function buildAbsoluteFixturePath (path: string, customCIPath = false) {
32 if (isAbsolute(path)) return path
33
34 if (customCIPath && process.env.GITHUB_WORKSPACE) {
35 return join(process.env.GITHUB_WORKSPACE, 'fixtures', path)
36 }
37
38 return join(root(), 'server', 'tests', 'fixtures', path)
39 }
40
41 export {
42 root,
43 buildPath,
44 buildAbsoluteFixturePath,
45 getLowercaseExtension
46 }