()
| 30 | } |
| 31 | |
| 32 | async function main(): Promise<void> { |
| 33 | const repoRoot = process.cwd(); |
| 34 | const packagePath = path.join(repoRoot, 'package.json'); |
| 35 | const versionPath = path.join(repoRoot, 'src', 'version.ts'); |
| 36 | |
| 37 | const raw = await readFile(packagePath, 'utf8'); |
| 38 | const pkg = JSON.parse(raw) as PackageJson; |
| 39 | |
| 40 | const repoUrl = pkg.repository?.url; |
| 41 | if (!repoUrl) { |
| 42 | throw new Error('package.json must have a repository.url field'); |
| 43 | } |
| 44 | |
| 45 | const repo = parseGitHubOwnerAndName(repoUrl); |
| 46 | |
| 47 | validateVersion('version', pkg.version); |
| 48 | validateVersion('iOSTemplateVersion', pkg.iOSTemplateVersion); |
| 49 | validateVersion('macOSTemplateVersion', pkg.macOSTemplateVersion); |
| 50 | |
| 51 | const content = |
| 52 | `export const version = ${JSON.stringify(pkg.version)};\n` + |
| 53 | `export const iOSTemplateVersion = ${JSON.stringify(pkg.iOSTemplateVersion)};\n` + |
| 54 | `export const macOSTemplateVersion = ${JSON.stringify(pkg.macOSTemplateVersion)};\n` + |
| 55 | `export const packageName = ${JSON.stringify(pkg.name)};\n` + |
| 56 | `export const repositoryOwner = ${JSON.stringify(repo.owner)};\n` + |
| 57 | `export const repositoryName = ${JSON.stringify(repo.name)};\n`; |
| 58 | |
| 59 | await writeFile(versionPath, content, 'utf8'); |
| 60 | } |
| 61 | |
| 62 | main().catch((error) => { |
| 63 | console.error('Failed to generate src/version.ts:', error); |
no test coverage detected