import { execFileSync } from 'child_process'; import fs from 'fs'; import path from 'path'; type PublishOptions = { projectRoot?: string; version: string; packageName?: string; }; export const publishTestPackage = async ( options: PublishOptions, ): Promise => { const projectRoot = options.projectRoot ?? process.cwd(); const packageName = options.packageName ?? 'test-uniswap-position-quoter'; const packageJsonPath = path.join(projectRoot, 'package.json'); const originalPackageJson = fs.readFileSync(packageJsonPath, 'utf-8'); const parsedPackageJson = JSON.parse(originalPackageJson) as { name?: string; version?: string; }; const updatedPackageJson = { ...parsedPackageJson, name: packageName, version: options.version, }; fs.writeFileSync( packageJsonPath, JSON.stringify(updatedPackageJson, null, 2), ); try { execFileSync('npm', ['publish', '--access', 'public'], { cwd: projectRoot, stdio: 'inherit', }); } finally { fs.writeFileSync(packageJsonPath, originalPackageJson); } }; const run = async (): Promise => { const version = process.argv[2]; if (!version) { throw new Error('Usage: npm run publish:test -- '); } await publishTestPackage({ projectRoot: process.cwd(), version }); }; if (require.main === module) { run().catch((error: Error) => { process.stderr.write(`${error.message}\n`); process.exitCode = 1; }); }