(
dir: string,
packages: {
name: string;
version: string;
source?: string;
dependencies?: string[];
}[]
)
| 25 | } |
| 26 | |
| 27 | function writeUvLock( |
| 28 | dir: string, |
| 29 | packages: { |
| 30 | name: string; |
| 31 | version: string; |
| 32 | source?: string; |
| 33 | dependencies?: string[]; |
| 34 | }[] |
| 35 | ): string { |
| 36 | const lockPath = path.join(dir, 'uv.lock'); |
| 37 | const entries = packages |
| 38 | .map(p => { |
| 39 | let block = `[[package]]\nname = "${p.name}"\nversion = "${p.version}"`; |
| 40 | if (p.source) { |
| 41 | block += `\n${p.source}`; |
| 42 | } |
| 43 | if (p.dependencies && p.dependencies.length > 0) { |
| 44 | const depEntries = p.dependencies |
| 45 | .map(d => ` { name = "${d}" }`) |
| 46 | .join(',\n'); |
| 47 | block += `\ndependencies = [\n${depEntries},\n]`; |
| 48 | } |
| 49 | return block; |
| 50 | }) |
| 51 | .join('\n\n'); |
| 52 | fs.writeFileSync( |
| 53 | lockPath, |
| 54 | `version = 1\nrequires-python = ">=3.10"\n\n${entries}\n` |
| 55 | ); |
| 56 | return lockPath; |
| 57 | } |
| 58 | |
| 59 | function makePackage(opts: { |
| 60 | name?: string; |
no test coverage detected