MCPcopy Create free account
hub / github.com/TanStack/cli / scanAddOnDirectories

Function scanAddOnDirectories

packages/create/src/frameworks.ts:49–129  ·  view source on GitHub ↗
(addOnsDirectories: Array<string>)

Source from the content-addressed store, hash-verified

47}
48
49export function scanAddOnDirectories(addOnsDirectories: Array<string>) {
50 const addOns: Array<AddOn> = []
51
52 for (const addOnsBase of addOnsDirectories) {
53 for (const dir of readdirSync(addOnsBase).filter((file) =>
54 isDirectory(resolve(addOnsBase, file)),
55 )) {
56 const filePath = resolve(addOnsBase, dir, 'info.json')
57 const fileContent = readFileSync(filePath, 'utf-8')
58 const info = JSON.parse(fileContent)
59
60 let packageAdditions: Record<string, any> = {}
61 let packageTemplate: string | undefined = undefined
62
63 if (existsSync(resolve(addOnsBase, dir, 'package.json'))) {
64 packageAdditions = JSON.parse(
65 readFileSync(resolve(addOnsBase, dir, 'package.json'), 'utf-8'),
66 )
67 } else if (existsSync(resolve(addOnsBase, dir, 'package.json.ejs'))) {
68 packageTemplate = readFileSync(
69 resolve(addOnsBase, dir, 'package.json.ejs'),
70 'utf-8',
71 )
72 }
73
74 let readme: string | undefined
75 let readmeIsEjs = false
76 if (existsSync(resolve(addOnsBase, dir, 'README.md'))) {
77 readme = readFileSync(resolve(addOnsBase, dir, 'README.md'), 'utf-8')
78 } else if (existsSync(resolve(addOnsBase, dir, 'README.md.ejs'))) {
79 readme = readFileSync(
80 resolve(addOnsBase, dir, 'README.md.ejs'),
81 'utf-8',
82 )
83 readmeIsEjs = true
84 }
85
86 let smallLogo: string | undefined
87 if (existsSync(resolve(addOnsBase, dir, 'small-logo.svg'))) {
88 smallLogo = readFileSync(
89 resolve(addOnsBase, dir, 'small-logo.svg'),
90 'utf-8',
91 )
92 }
93
94 const absoluteFiles: Record<string, string> = {}
95 const assetsDir = resolve(addOnsBase, dir, 'assets')
96 if (existsSync(assetsDir)) {
97 findFilesRecursively(assetsDir, absoluteFiles)
98 }
99 const files: Record<string, string> = {}
100 for (const file of Object.keys(absoluteFiles)) {
101 files[toCleanPath(file, assetsDir)] = readFileHelper(file)
102 }
103
104 const getFiles = () => {
105 return Promise.resolve(Object.keys(files))
106 }

Callers 5

index.tsFile · 0.90
index.tsFile · 0.90

Calls 4

findFilesRecursivelyFunction · 0.90
toCleanPathFunction · 0.90
isDirectoryFunction · 0.85
readFileHelperFunction · 0.85

Tested by

no test coverage detected