chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
import fs from 'node:fs'
|
||||
import path from 'node:path'
|
||||
|
||||
import { PROFILE_TOOLS_PATH, TOOLS_PATH } from '@/constants'
|
||||
|
||||
import { createSetupStatus } from './setup-status'
|
||||
import {
|
||||
syncNodejsSourceDependencies,
|
||||
syncPythonSourceDependencies
|
||||
} from './sync-source-dependencies'
|
||||
|
||||
const NODEJS_SOURCE_PATH = path.join('src', 'nodejs')
|
||||
const PYTHON_SOURCE_PATH = path.join('src', 'python')
|
||||
|
||||
const getToolSourcePaths = async (toolsPath) => {
|
||||
if (!fs.existsSync(toolsPath)) {
|
||||
return []
|
||||
}
|
||||
|
||||
const toolkitEntries = await fs.promises.readdir(toolsPath, {
|
||||
withFileTypes: true
|
||||
})
|
||||
const sourcePaths = []
|
||||
|
||||
for (const toolkitEntry of toolkitEntries) {
|
||||
if (!toolkitEntry.isDirectory()) {
|
||||
continue
|
||||
}
|
||||
|
||||
const toolkitPath = path.join(toolsPath, toolkitEntry.name)
|
||||
const toolEntries = await fs.promises.readdir(toolkitPath, {
|
||||
withFileTypes: true
|
||||
})
|
||||
|
||||
for (const toolEntry of toolEntries) {
|
||||
if (!toolEntry.isDirectory()) {
|
||||
continue
|
||||
}
|
||||
|
||||
const toolPath = path.join(toolkitPath, toolEntry.name)
|
||||
sourcePaths.push({
|
||||
bridge: 'nodejs',
|
||||
path: path.join(toolPath, NODEJS_SOURCE_PATH)
|
||||
})
|
||||
sourcePaths.push({
|
||||
bridge: 'python',
|
||||
path: path.join(toolPath, PYTHON_SOURCE_PATH)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return sourcePaths
|
||||
}
|
||||
|
||||
/**
|
||||
* Sync tool dependencies next to each tool source folder.
|
||||
*/
|
||||
export default async function setupToolsDependencies() {
|
||||
const status = createSetupStatus('Setting up tool dependencies...').start()
|
||||
|
||||
try {
|
||||
const sourcePaths = [
|
||||
...(await getToolSourcePaths(TOOLS_PATH)),
|
||||
...(await getToolSourcePaths(PROFILE_TOOLS_PATH))
|
||||
]
|
||||
|
||||
for (const sourcePath of sourcePaths) {
|
||||
if (sourcePath.bridge === 'nodejs') {
|
||||
await syncNodejsSourceDependencies(sourcePath.path)
|
||||
} else {
|
||||
await syncPythonSourceDependencies(sourcePath.path)
|
||||
}
|
||||
}
|
||||
|
||||
status.succeed('Tool dependencies: ready')
|
||||
} catch (e) {
|
||||
status.fail('Failed to set up tool dependencies')
|
||||
throw e
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user