onreza-release 2.1.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +39 -5
- package/dist/cli.js.map +5 -5
- package/dist/index.js +34 -5
- package/dist/index.js.map +5 -5
- package/dist/types.d.ts +5 -0
- package/package.json +2 -6
package/dist/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/config.ts", "../src/providers/detector.ts", "../src/providers/github.ts", "../src/providers/limits.ts", "../src/providers/gitverse.ts", "../node_modules/@onreza/gitverse-sdk/dist/errors.js", "../node_modules/@onreza/gitverse-sdk/dist/client.js", "../node_modules/@onreza/gitverse-sdk/dist/api/issues.js", "../node_modules/@onreza/gitverse-sdk/dist/api/emails.js", "../node_modules/@onreza/gitverse-sdk/dist/api/repositories.js", "../node_modules/@onreza/gitverse-sdk/dist/api/teams.js", "../node_modules/@onreza/gitverse-sdk/dist/api/releases.js", "../node_modules/@onreza/gitverse-sdk/dist/api/pulls.js", "../node_modules/@onreza/gitverse-sdk/dist/api/organizations.js", "../node_modules/@onreza/gitverse-sdk/dist/api/actions.js", "../node_modules/@onreza/gitverse-sdk/dist/api/stars.js", "../node_modules/@onreza/gitverse-sdk/dist/api/users.js", "../node_modules/@onreza/gitverse-sdk/dist/api/pages.js", "../node_modules/@onreza/gitverse-sdk/dist/index.js", "../src/providers/tokens.ts", "../src/providers/index.ts", "../src/utils/changelog.ts", "../src/utils/parser.ts", "../src/utils/git.ts", "../src/utils/retry.ts", "../src/utils/version.ts", "../src/utils/binary-distribution-provider.ts", "../src/utils/binary-platforms.ts", "../src/utils/binary-postinstall-generator.ts"
|
|
3
|
+
"sources": ["../src/index.ts", "../src/config.ts", "../src/providers/detector.ts", "../src/providers/github.ts", "../src/providers/limits.ts", "../src/providers/gitverse.ts", "../node_modules/@onreza/gitverse-sdk/dist/errors.js", "../node_modules/@onreza/gitverse-sdk/dist/client.js", "../node_modules/@onreza/gitverse-sdk/dist/api/issues.js", "../node_modules/@onreza/gitverse-sdk/dist/api/emails.js", "../node_modules/@onreza/gitverse-sdk/dist/api/repositories.js", "../node_modules/@onreza/gitverse-sdk/dist/api/teams.js", "../node_modules/@onreza/gitverse-sdk/dist/api/releases.js", "../node_modules/@onreza/gitverse-sdk/dist/api/pulls.js", "../node_modules/@onreza/gitverse-sdk/dist/api/organizations.js", "../node_modules/@onreza/gitverse-sdk/dist/api/actions.js", "../node_modules/@onreza/gitverse-sdk/dist/api/stars.js", "../node_modules/@onreza/gitverse-sdk/dist/api/users.js", "../node_modules/@onreza/gitverse-sdk/dist/api/pages.js", "../node_modules/@onreza/gitverse-sdk/dist/index.js", "../src/providers/tokens.ts", "../src/providers/index.ts", "../src/utils/changelog.ts", "../src/utils/parser.ts", "../src/utils/git.ts", "../src/utils/retry.ts", "../src/utils/version.ts", "../src/binaries.ts", "../src/utils/binary-distribution-provider.ts", "../src/utils/binary-platforms.ts", "../src/utils/binary-postinstall-generator.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { resolve } from \"node:path\";\nimport { loadConfig, validateConfig } from \"./config\";\nimport { createReleaseProvider, type GitPlatform, getToken } from \"./providers\";\nimport type {\n CliOptions,\n ConventionalCommit,\n GitRepoInfo,\n PackageConfig,\n ReleaseConfig,\n ReleaseResult,\n VersionBump,\n} from \"./types\";\nimport { generateChangelog, generateReleaseNotes, updateChangelogFile } from \"./utils/changelog\";\nimport {\n createCommit,\n createTag,\n getCommitsSinceTag,\n getCurrentVersion,\n getPackageInfo,\n getRepoInfo,\n isWorkingTreeClean,\n pushChanges,\n runBeforeCommitHook,\n tagExists,\n updatePackageVersion,\n} from \"./utils/git\";\nimport { filterCommitsForPackage, parseCommits } from \"./utils/parser\";\nimport { createRetryFunction } from \"./utils/retry\";\nimport { calculateVersionBump } from \"./utils/version\";\n\n/**\n * Печатает информацию о dry run\n */\nfunction printDryRunInfo(\n pkg: PackageConfig,\n currentVersion: string,\n versionBump: VersionBump,\n tag: string,\n commits: ConventionalCommit[],\n changelogEntry: string,\n): void {\n console.log(\"\\n🔍 DRY RUN MODE - No changes will be made\\n\");\n console.log(`📦 Package: ${pkg.packageName}`);\n console.log(`📈 Version: ${currentVersion} → ${versionBump.newVersion}`);\n console.log(`🏷️ Tag: ${tag}`);\n console.log(`💬 Commits: ${commits.length}`);\n console.log(\"\\n📝 CHANGELOG:\\n\");\n console.log(changelogEntry);\n}\n\n/**\n * Печатает информацию об успешном релизе\n */\nfunction printSuccessInfo(\n pkg: PackageConfig,\n currentVersion: string,\n newVersion: string,\n tag: string,\n releaseUrl?: string,\n): void {\n console.log(\"\\n✅ Release created successfully!\\n\");\n console.log(`📦 Package: ${pkg.packageName}`);\n console.log(`📈 Version: ${currentVersion} → ${newVersion}`);\n console.log(`🏷️ Tag: ${tag}`);\n if (releaseUrl) {\n console.log(`🌐 Release: ${releaseUrl}`);\n }\n console.log(\"\");\n}\n\n/**\n * Обновляет файлы пакета и выполняет beforeCommit hook\n */\nasync function updatePackageFiles(pkg: PackageConfig, newVersion: string, changelogEntry: string): Promise<string> {\n await updatePackageVersion(pkg.path, newVersion);\n const changelogPath = resolve(pkg.path, pkg.changelog ?? \"CHANGELOG.md\");\n await updateChangelogFile(changelogPath, changelogEntry);\n\n return changelogPath;\n}\n\n/**\n * Собирает и валидирует коммиты\n */\nasync function collectCommits(\n pkg: PackageConfig,\n options: CliOptions,\n warnings: string[],\n isMonorepo: boolean,\n): Promise<ConventionalCommit[]> {\n const rawCommits = await getCommitsSinceTag(pkg.tagPrefix, pkg.path);\n\n if (rawCommits.length === 0 && !options.version) {\n throw new Error(`No commits found since last release for ${pkg.packageName}`);\n }\n\n const commits = parseCommits(rawCommits);\n const filteredCommits = filterCommitsForPackage(commits, pkg.name, isMonorepo);\n\n if (filteredCommits.length === 0 && !options.version) {\n warnings.push(\"No conventional commits found, but will proceed with patch bump\");\n }\n\n return filteredCommits;\n}\n\n/**\n * Вычисляет prerelease тег\n */\nfunction resolvePrereleaseTag(options: CliOptions, config: Required<ReleaseConfig>): string | undefined {\n if (typeof options.prerelease === \"string\") {\n return options.prerelease;\n }\n if (options.prerelease) {\n return config.versioning.prereleasePrefix;\n }\n return;\n}\n\n/**\n * Создает релиз на платформе с поддержкой idempotency и retry\n */\nasync function createPlatformRelease(\n options: CliOptions,\n repoInfo: GitRepoInfo,\n commits: ConventionalCommit[],\n config: Required<ReleaseConfig>,\n pkg: PackageConfig,\n versionBump: VersionBump,\n tag: string,\n retryFn: ReturnType<typeof createRetryFunction>,\n): Promise<string | undefined> {\n const releaseConfig = config.release;\n\n if (options.noRelease || !releaseConfig.enabled) {\n return;\n }\n\n // Определяем платформу\n const platform: GitPlatform | \"auto\" = releaseConfig.platform ?? \"auto\";\n\n // Создаём провайдер\n const { provider, platform: detectedPlatform } = createReleaseProvider({\n platform,\n repoInfo: {\n host: repoInfo.host ?? \"gitverse.ru\",\n owner: repoInfo.owner,\n repo: repoInfo.repo,\n },\n retryFn,\n });\n\n console.log(`🔗 Using ${detectedPlatform} release provider`);\n\n // Проверяем существование релиза (идемпотентность)\n if (releaseConfig.checkExisting) {\n const exists = await provider.releaseExists(tag);\n if (exists) {\n console.log(`\\n✅ Release ${tag} already exists, skipping creation\\n`);\n return `${repoInfo.url}/releases/tag/${tag}`;\n }\n }\n\n // Генерируем release notes\n const releaseNotes = generateReleaseNotes(commits, config.changelog, repoInfo.url, pkg.name);\n\n // Создаём релиз\n const result = await provider.createRelease(tag, `${pkg.packageName} v${versionBump.newVersion}`, releaseNotes, {\n prerelease: !!options.prerelease,\n });\n\n return result.url;\n}\n\n/**\n * Выполняет git операции\n */\nasync function performGitOperations(\n config: Required<ReleaseConfig>,\n options: CliOptions,\n pkg: PackageConfig,\n newVersion: string,\n tag: string,\n changelogPath: string,\n retryFn: ReturnType<typeof createRetryFunction>,\n repoInfo: GitRepoInfo,\n): Promise<void> {\n if (config.git.commitChanges && !options.noCommit) {\n // Запускаем beforeCommit хук перед коммитом для форматирования измененных файлов\n if (config.git.beforeCommit) {\n const hookSuccess = await runBeforeCommitHook(config.git.beforeCommit);\n if (!hookSuccess) {\n console.warn(\"⚠️ beforeCommit hook failed, proceeding with unformatted files\");\n }\n }\n\n const commitMessage = config.git.commitMessage.replace(\"{{package}}\", pkg.name).replace(\"{{version}}\", newVersion);\n\n await createCommit(commitMessage, [resolve(pkg.path, \"package.json\"), changelogPath]);\n }\n\n if (!options.noTag) {\n const tagMessage = config.git.tagMessage.replace(\"{{package}}\", pkg.name).replace(\"{{version}}\", newVersion);\n\n await createTag(tag, tagMessage);\n }\n\n if (config.git.push && !options.noPush) {\n const tagToPush = options.noTag ? undefined : tag;\n const platform = repoInfo.platform ?? \"gitverse\";\n const tokenResult = config.git.useTokenForPush ? getToken(platform) : null;\n\n await retryFn(\n () =>\n pushChanges({\n repoInfo,\n tag: tagToPush,\n token: tokenResult?.token,\n useToken: config.git.useTokenForPush && !!tokenResult,\n }),\n \"Git Push\",\n );\n }\n}\n\n/**\n * Основная функция для создания релиза\n */\n// biome-ignore lint: main logic\nexport async function release(packageName?: string, options: CliOptions = {}): Promise<ReleaseResult> {\n const result: ReleaseResult = {\n errors: [],\n newVersion: \"\",\n oldVersion: \"\",\n packageName: packageName || \"unknown\",\n success: false,\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(options.config);\n validateConfig(config);\n\n // Получаем информацию о репозитории\n const repoInfo = await getRepoInfo();\n\n // Проверяем токен до начала любых изменений\n if (!options.noRelease && config.release.enabled) {\n const platform = config.release.platform ?? \"auto\";\n const detectedPlatform = platform === \"auto\" ? (repoInfo.platform ?? \"gitverse\") : platform;\n\n console.log(`🔑 Validating ${detectedPlatform} API token...`);\n\n try {\n const { provider, platform: actualPlatform } = createReleaseProvider({\n platform: detectedPlatform,\n repoInfo: {\n host: repoInfo.host ?? \"gitverse.ru\",\n owner: repoInfo.owner,\n repo: repoInfo.repo,\n },\n });\n\n const tokenValidation = await provider.validateToken();\n\n if (!tokenValidation.valid) {\n throw new Error(`${actualPlatform} token validation failed: ${tokenValidation.error}`);\n }\n\n console.log(`✅ Token valid (user: ${tokenValidation.username})\\n`);\n } catch (error) {\n // Если это ошибка отсутствия токена и failOnError=false, просто предупреждаем\n if (config.release.failOnError) {\n throw error;\n }\n const message = error instanceof Error ? error.message : String(error);\n result.warnings.push(`Token validation failed: ${message}`);\n console.warn(`⚠️ Warning: ${message}\\n`);\n }\n }\n\n // Определяем какой пакет релизить\n const pkg = await resolvePackage(config, packageName);\n\n result.packageName = pkg.packageName;\n\n // Проверяем чистоту рабочей директории\n if (!(options.dryRun || (await isWorkingTreeClean()))) {\n throw new Error(\"Working tree is not clean. Please commit or stash your changes.\");\n }\n\n // Получаем текущую версию\n const currentVersion = await getCurrentVersion(pkg.path);\n result.oldVersion = currentVersion;\n\n // Собираем коммиты\n const commits = await collectCommits(pkg, options, result.warnings, config.monorepo.enabled);\n\n // Вычисляем новую версию\n const prereleaseTag = resolvePrereleaseTag(options, config);\n const versionBump = calculateVersionBump(\n currentVersion,\n commits,\n options.version,\n prereleaseTag,\n config.versioning.preMajorMode,\n );\n\n result.newVersion = versionBump.newVersion;\n\n // Проверяем что тег не существует\n const tag = `${pkg.tagPrefix}${versionBump.newVersion}`;\n result.tag = tag;\n\n if (await tagExists(tag)) {\n throw new Error(`Tag ${tag} already exists`);\n }\n\n // Генерируем CHANGELOG\n const changelogEntry = generateChangelog(\n {\n commits,\n date: new Date(),\n repoUrl: repoInfo.url,\n version: versionBump.newVersion,\n },\n config.changelog,\n pkg.name,\n );\n\n if (options.dryRun) {\n printDryRunInfo(pkg, currentVersion, versionBump, tag, commits, changelogEntry);\n result.success = true;\n return result;\n }\n\n // Создаём retry функцию\n const retryFn = createRetryFunction(config.retry);\n\n // Обновляем файлы пакета\n const changelogPath = await updatePackageFiles(pkg, versionBump.newVersion, changelogEntry);\n\n // Выполняем git операции\n await performGitOperations(config, options, pkg, versionBump.newVersion, tag, changelogPath, retryFn, repoInfo);\n\n // Создаем Release на платформе\n try {\n result.releaseUrl = await createPlatformRelease(\n options,\n repoInfo,\n commits,\n config,\n pkg,\n versionBump,\n tag,\n retryFn,\n );\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n\n if (config.release.failOnError) {\n // Fail the entire release\n throw new Error(`Release creation failed: ${errorMessage}`);\n }\n\n // Log as warning\n result.warnings.push(`Failed to create release: ${errorMessage}`);\n console.warn(`\\n⚠️ Warning: ${errorMessage}\\n`);\n }\n\n result.success = true;\n\n // Выводим итоги\n printSuccessInfo(pkg, currentVersion, versionBump.newVersion, tag, result.releaseUrl);\n\n return result;\n } catch (error) {\n result.success = false;\n result.errors.push(error instanceof Error ? error.message : String(error));\n\n console.error(\"\\n❌ Release failed:\\n\");\n console.error(error);\n console.error(\"\");\n\n return result;\n }\n}\n\n/**\n * Определяет какой пакет релизить\n */\nasync function resolvePackage(config: Required<ReleaseConfig>, packageName?: string): Promise<PackageConfig> {\n if (!config.monorepo.enabled) {\n // Single package mode - читаем информацию из package.json\n const pkgInfo = await getPackageInfo(\".\");\n\n return {\n changelog: \"CHANGELOG.md\",\n name: \"main\",\n packageName: pkgInfo.name,\n path: \".\",\n tagPrefix: config.versioning.tagPrefix,\n };\n }\n\n // Monorepo mode\n if (!packageName) {\n throw new Error(\"Package name is required in monorepo mode. Use --package <name>\");\n }\n\n const pkg = config.monorepo.packages.find((p) => p.name === packageName);\n\n if (!pkg) {\n throw new Error(\n `Package \"${packageName}\" not found in config. Available packages: ${config.monorepo.packages.map((p) => p.name).join(\", \")}`,\n );\n }\n\n return pkg;\n}\n\n/**\n * Создает только Release для существующего тега (без commit/push)\n * Полезно для recovery после failed release в CI/CD\n */\nexport async function createReleaseOnly(\n tag: string,\n packageName?: string,\n configPath?: string,\n): Promise<ReleaseResult> {\n const result: ReleaseResult = {\n errors: [],\n newVersion: \"\",\n oldVersion: \"\",\n packageName: packageName || \"unknown\",\n success: false,\n tag,\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(configPath);\n validateConfig(config);\n\n // Получаем информацию о репозитории\n const repoInfo = await getRepoInfo();\n\n // Определяем платформу\n const platform = config.release.platform ?? \"auto\";\n const detectedPlatform = platform === \"auto\" ? (repoInfo.platform ?? \"gitverse\") : platform;\n\n console.log(`🔑 Validating ${detectedPlatform} API token...`);\n\n // Создаём retry функцию\n const retryFn = createRetryFunction(config.retry);\n\n // Создаём провайдер\n const { provider, platform: actualPlatform } = createReleaseProvider({\n platform: detectedPlatform,\n repoInfo: {\n host: repoInfo.host ?? \"gitverse.ru\",\n owner: repoInfo.owner,\n repo: repoInfo.repo,\n },\n retryFn,\n });\n\n const tokenValidation = await provider.validateToken();\n\n if (!tokenValidation.valid) {\n throw new Error(`${actualPlatform} token validation failed: ${tokenValidation.error}`);\n }\n\n console.log(`✅ Token valid (user: ${tokenValidation.username})\\n`);\n\n // Определяем пакет\n const pkg = await resolvePackage(config, packageName);\n result.packageName = pkg.packageName;\n\n // Извлекаем версию из тега\n const version = tag.replace(pkg.tagPrefix, \"\");\n result.newVersion = version;\n\n // Получаем коммиты для release notes\n const rawCommits = await getCommitsSinceTag(pkg.tagPrefix, pkg.path);\n const commits = parseCommits(rawCommits);\n\n // Проверяем существование релиза\n if (config.release.checkExisting) {\n const exists = await provider.releaseExists(tag);\n if (exists) {\n console.log(`\\n✅ Release ${tag} already exists\\n`);\n result.releaseUrl = `${repoInfo.url}/releases/tag/${tag}`;\n result.success = true;\n return result;\n }\n }\n\n // Генерируем release notes\n const releaseNotes = generateReleaseNotes(commits, config.changelog, repoInfo.url, pkg.name);\n\n // Создаём релиз\n const releaseResult = await provider.createRelease(tag, `${pkg.packageName} v${version}`, releaseNotes);\n result.releaseUrl = releaseResult.url;\n\n result.success = true;\n\n console.log(\"\\n✅ Release created successfully!\");\n console.log(`📦 Package: ${pkg.packageName}`);\n console.log(`🏷️ Tag: ${tag}`);\n console.log(`🌐 Release: ${result.releaseUrl}\\n`);\n\n return result;\n } catch (error) {\n result.success = false;\n result.errors.push(error instanceof Error ? error.message : String(error));\n\n console.error(\"\\n❌ Release creation failed:\\n\");\n console.error(error);\n console.error(\"\");\n\n return result;\n }\n}\n\nexport { publishBinaries } from \"./binaries\";\nexport {\n configExists,\n DEFAULT_BINARIES_CONFIG,\n DEFAULT_BINARY_PLATFORMS,\n DEFAULT_CONFIG_FILE_NAME,\n DEFAULT_RELEASE_PROVIDER_CONFIG,\n generateConfigContent,\n initConfig,\n loadConfig,\n validateBinariesConfig,\n validateConfig,\n} from \"./config\";\nexport type {\n AssetLimits,\n CreateReleaseOptions,\n CreateReleaseProviderOptions,\n CreateReleaseProviderResult,\n CreateReleaseResult,\n GitPlatform,\n ProviderRepoInfo,\n ReleaseProvider,\n TokenValidationResult,\n UploadAssetResult,\n} from \"./providers\";\n// Провайдеры релизов\nexport {\n createReleaseProvider,\n detectCiEnvironment,\n detectPlatform,\n detectPlatformAuto,\n GitHubReleaseProvider,\n GitVerseReleaseProvider,\n getAssetLimits,\n getToken,\n getTokenNotFoundError,\n hasToken,\n isCI,\n PLATFORM_ASSET_LIMITS,\n validateToken,\n} from \"./providers\";\n\n// Экспорты\nexport * from \"./types\";\nexport {\n formatFileSize,\n GITVERSE_ASSET_LIMITS,\n GitVerseDistributionProvider,\n validateAssetBatch,\n validateAssetFile,\n} from \"./utils/binary-distribution-provider\";\nexport {\n ALL_PLATFORMS,\n getArchivePath,\n getBinaryPath,\n getBinarySourcePath,\n getPlatformDir,\n isValidPlatform,\n PLATFORM_MAPPINGS,\n parsePlatforms,\n platformToNodeValues,\n validateAllBinaries,\n validateAllBinarySources,\n validateBinaryExists,\n validateBinarySourceExists,\n} from \"./utils/binary-platforms\";\nexport {\n createBinaryManifest,\n generateBinWrapper,\n generateMasterPackageJson,\n generatePostinstallScript,\n} from \"./utils/binary-postinstall-generator\";\n",
|
|
6
6
|
"import { access, readFile, writeFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport { parse as parseJsonc } from \"jsonc-parser\";\nimport type { BinariesConfig, BinaryPlatform, ReleaseConfig, ReleaseProviderConfig } from \"./types\";\n\n/**\n * Дефолтное имя конфиг-файла\n */\nexport const DEFAULT_CONFIG_FILE_NAME = \".onrezarelease.jsonc\";\n\n/**\n * Имена конфиг-файлов в порядке приоритета\n */\nconst CONFIG_FILE_NAMES = [\".onrezarelease.jsonc\", \".onrezarelease.json\"] as const;\n\n/**\n * Проверяет существование файла\n */\nasync function fileExists(path: string): Promise<boolean> {\n try {\n await access(path);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Находит конфиг-файл в директории\n * Приоритет: .jsonc > .json\n */\nasync function findConfigFile(directory: string): Promise<string | null> {\n for (const fileName of CONFIG_FILE_NAMES) {\n const fullPath = resolve(directory, fileName);\n if (await fileExists(fullPath)) {\n return fullPath;\n }\n }\n return null;\n}\n\n/**\n * Дефолтные платформы для бинарной дистрибуции\n */\nexport const DEFAULT_BINARY_PLATFORMS: BinaryPlatform[] = [\n \"linux-x64\",\n \"linux-arm64\",\n \"darwin-x64\",\n \"darwin-arm64\",\n \"win32-x64\",\n];\n\n/**\n * Дефолтная конфигурация бинарной дистрибуции\n */\nexport const DEFAULT_BINARIES_CONFIG: BinariesConfig = {\n continueOnError: false,\n distDir: \"./dist\",\n enabled: false,\n inputFormat: \"tar.gz\",\n name: \"\",\n platforms: DEFAULT_BINARY_PLATFORMS,\n retryAttempts: 3,\n};\n\n/**\n * Дефолтная конфигурация release провайдера\n */\nexport const DEFAULT_RELEASE_PROVIDER_CONFIG: ReleaseProviderConfig = {\n checkExisting: true,\n enabled: true,\n failOnError: true,\n platform: \"auto\",\n};\n\n/**\n * Дефолтная конфигурация\n */\nexport const DEFAULT_CONFIG: Required<ReleaseConfig> = {\n binaries: DEFAULT_BINARIES_CONFIG,\n changelog: {\n showAuthor: true,\n showHash: true,\n types: {\n build: \"🏗️ Build System\",\n chore: \"🔧 Chores\",\n ci: \"👷 CI/CD\",\n docs: \"📝 Documentation\",\n feat: \"✨ Features\",\n fix: \"🐛 Bug Fixes\",\n perf: \"⚡ Performance\",\n refactor: \"♻️ Refactoring\",\n revert: \"⏪ Reverts\",\n style: \"💄 Styling\",\n test: \"✅ Tests\",\n },\n },\n commitlint: {\n bodyMaxLineLength: null,\n comments: true,\n footerMaxLineLength: null,\n format: \"ts\",\n headerMaxLength: 100,\n headerMinLength: null,\n output: \"commitlint.config.ts\",\n scopeRequired: false,\n scopes: [\"deps\", \"ci\", \"docs\"],\n strictMode: false,\n subjectCase: null,\n subjectFullStop: false,\n warningRules: [\"header-max-length\"],\n },\n git: {\n beforeCommit: \"\",\n commitChanges: true,\n commitMessage: \"chore(release): {{package}} v{{version}} [skip ci]\",\n push: true,\n tagMessage: \"Release {{package}} v{{version}}\",\n useTokenForPush: false,\n },\n monorepo: {\n enabled: false,\n packages: [],\n },\n release: DEFAULT_RELEASE_PROVIDER_CONFIG,\n retry: {\n enabled: true,\n initialDelay: 2000,\n maxAttempts: 5,\n maxDelay: 30000,\n operations: [\"push\", \"createRelease\"],\n },\n versioning: {\n allowPrerelease: false,\n preMajorMode: \"auto\",\n prereleasePrefix: \"beta\",\n tagPrefix: \"v\",\n },\n};\n\n/**\n * Загружает конфигурацию из файла\n *\n * Порядок поиска:\n * 1. Если указан configPath - используем его\n * 2. Ищем .onrezarelease.jsonc\n * 3. Ищем .onrezarelease.json\n * 4. Если ничего не найдено - используем дефолтную конфигурацию\n */\nexport async function loadConfig(configPath?: string): Promise<Required<ReleaseConfig>> {\n let fullPath: string | null;\n\n if (configPath) {\n // Явно указанный путь\n fullPath = resolve(process.cwd(), configPath);\n } else {\n // Автопоиск конфига\n fullPath = await findConfigFile(process.cwd());\n }\n\n // Если конфиг не найден - используем дефолт\n if (!fullPath) {\n return DEFAULT_CONFIG;\n }\n\n try {\n const content = await readFile(fullPath, \"utf-8\");\n\n // Используем jsonc-parser для поддержки комментариев и trailing commas\n const userConfig = parseJsonc(content) as Partial<ReleaseConfig>;\n\n // Мерджим с дефолтной конфигурацией\n return mergeConfig(DEFAULT_CONFIG, userConfig);\n } catch (error) {\n // Если файл не найден, используем дефолтную конфигурацию\n if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") {\n return DEFAULT_CONFIG;\n }\n\n throw new Error(\n `Failed to load config from ${fullPath}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\n/**\n * Мерджит пользовательскую конфигурацию с дефолтной\n */\nfunction mergeConfig(defaults: Required<ReleaseConfig>, user: Partial<ReleaseConfig>): Required<ReleaseConfig> {\n return {\n binaries: {\n ...defaults.binaries,\n ...user.binaries,\n },\n changelog: {\n ...defaults.changelog,\n ...user.changelog,\n types: {\n ...defaults.changelog.types,\n ...user.changelog?.types,\n },\n },\n commitlint: {\n ...defaults.commitlint,\n ...user.commitlint,\n },\n git: {\n ...defaults.git,\n ...user.git,\n },\n monorepo: {\n ...defaults.monorepo,\n ...user.monorepo,\n },\n release: {\n ...defaults.release,\n ...user.release,\n },\n retry: {\n ...defaults.retry,\n ...user.retry,\n },\n versioning: {\n ...defaults.versioning,\n ...user.versioning,\n },\n };\n}\n\n/**\n * Валидирует конфигурацию\n */\nexport function validateConfig(config: Required<ReleaseConfig>): void {\n if (config.monorepo.enabled && config.monorepo.packages.length === 0) {\n throw new Error(\"Monorepo mode is enabled but no packages are configured\");\n }\n\n for (const pkg of config.monorepo.packages) {\n if (!(pkg.name && pkg.path && pkg.packageName && pkg.tagPrefix)) {\n throw new Error(`Invalid package configuration for ${pkg.name || \"unknown\"}`);\n }\n }\n}\n\n/**\n * Regex для валидации безопасных имён.\n * Разрешает буквы, цифры, дефис, подчёркивание и точку.\n * Блокирует shell-метасимволы: $, `, ', \", \\, |, ;, &, <, >, (, ), {, }, [, ], !, ?, *, ~, ^, #\n */\nconst SAFE_NAME_REGEX = /^[a-zA-Z0-9_.-]+$/;\n\n/**\n * Валидные платформы для бинарной дистрибуции\n */\nconst VALID_PLATFORMS: BinaryPlatform[] = [\n \"darwin-arm64\",\n \"darwin-x64\",\n \"linux-arm64\",\n \"linux-x64\",\n \"win32-arm64\",\n \"win32-x64\",\n];\n\n/**\n * Валидирует базовые поля конфигурации бинарной дистрибуции\n */\nfunction validateBinariesBaseFields(config: BinariesConfig): void {\n if (!config.name) {\n throw new Error(\"Binaries config: name is required when enabled\");\n }\n\n if (!SAFE_NAME_REGEX.test(config.name)) {\n throw new Error(\n `Binaries config: name \"${config.name}\" contains invalid characters. ` +\n \"Only letters, numbers, underscore, hyphen, dot are allowed.\",\n );\n }\n\n if (config.binName && !SAFE_NAME_REGEX.test(config.binName)) {\n throw new Error(\n `Binaries config: binName \"${config.binName}\" contains invalid characters. ` +\n \"Only letters, numbers, underscore, hyphen, dot are allowed.\",\n );\n }\n}\n\n/**\n * Валидирует platforms и retryAttempts\n */\nfunction validateBinariesPlatformsAndRetry(config: BinariesConfig): void {\n if (!config.platforms || config.platforms.length === 0) {\n throw new Error(\"Binaries config: at least one platform is required\");\n }\n\n for (const platform of config.platforms) {\n if (!VALID_PLATFORMS.includes(platform)) {\n throw new Error(`Binaries config: invalid platform \"${platform}\". Valid: ${VALID_PLATFORMS.join(\", \")}`);\n }\n }\n\n if (config.retryAttempts < 1 || config.retryAttempts > 10) {\n throw new Error(\"Binaries config: retryAttempts must be between 1 and 10\");\n }\n}\n\n/**\n * Валидирует расширенные поля: inputFormat, sourceBinName, platformMap\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: validation has many conditional checks\nfunction validateBinariesExtendedFields(config: BinariesConfig): void {\n if (config.inputFormat && ![\"directory\", \"tar.gz\"].includes(config.inputFormat)) {\n throw new Error(`Binaries config: inputFormat must be \"directory\" or \"tar.gz\", got \"${config.inputFormat}\"`);\n }\n\n if (config.sourceBinName && !SAFE_NAME_REGEX.test(config.sourceBinName)) {\n throw new Error(\n `Binaries config: sourceBinName \"${config.sourceBinName}\" contains invalid characters. ` +\n \"Only letters, numbers, underscore, hyphen, dot are allowed.\",\n );\n }\n\n if (config.platformMap) {\n for (const [sourceKey, targetPlatform] of Object.entries(config.platformMap)) {\n if (!SAFE_NAME_REGEX.test(sourceKey)) {\n throw new Error(\n `Binaries config: platformMap key \"${sourceKey}\" contains invalid characters. ` +\n \"Only letters, numbers, underscore, hyphen, dot are allowed.\",\n );\n }\n if (!VALID_PLATFORMS.includes(targetPlatform)) {\n throw new Error(\n `Binaries config: platformMap value \"${targetPlatform}\" is not a valid platform. ` +\n `Valid: ${VALID_PLATFORMS.join(\", \")}`,\n );\n }\n }\n }\n\n if (config.archiveNameTemplate) {\n if (!config.archiveNameTemplate.includes(\"{{platform}}\")) {\n throw new Error(\"Binaries config: archiveNameTemplate must contain {{platform}} placeholder\");\n }\n }\n}\n\n/**\n * Валидирует конфигурацию бинарной дистрибуции\n */\nexport function validateBinariesConfig(config: BinariesConfig): void {\n if (!config.enabled) {\n return;\n }\n\n validateBinariesBaseFields(config);\n validateBinariesPlatformsAndRetry(config);\n validateBinariesExtendedFields(config);\n}\n\n/**\n * Проверяет, существует ли конфиг-файл\n */\nexport function configExists(): Promise<string | null> {\n return findConfigFile(process.cwd());\n}\n\n/**\n * Опции для инициализации конфига\n */\nexport interface InitConfigOptions {\n /** Режим монорепо */\n monorepo?: boolean;\n /** Дополнительные scopes для commitlint */\n scopes?: string[];\n /** Dry-run режим */\n dryRun?: boolean;\n}\n\n/**\n * Генерирует содержимое конфиг-файла в формате JSONC\n */\nexport function generateConfigContent(options: InitConfigOptions = {}): string {\n const lines: string[] = [];\n\n lines.push(\"{\");\n lines.push(\" // JSON Schema для автодополнения и валидации в IDE\");\n lines.push(' \"$schema\": \"node_modules/onreza-release/schema.json\",');\n lines.push(\"\");\n\n // Changelog\n lines.push(\" // Настройки генерации CHANGELOG\");\n lines.push(' \"changelog\": {');\n lines.push(' \"showAuthor\": true,');\n lines.push(' \"showHash\": true,');\n lines.push(' \"types\": {');\n lines.push(' \"feat\": \"✨ Features\",');\n lines.push(' \"fix\": \"🐛 Bug Fixes\",');\n lines.push(' \"docs\": \"📝 Documentation\",');\n lines.push(' \"style\": \"💄 Styles\",');\n lines.push(' \"refactor\": \"♻️ Refactoring\",');\n lines.push(' \"perf\": \"⚡ Performance\",');\n lines.push(' \"test\": \"✅ Tests\",');\n lines.push(' \"build\": \"🏗️ Build System\",');\n lines.push(' \"ci\": \"👷 CI/CD\",');\n lines.push(' \"chore\": \"🔧 Chores\",');\n lines.push(' \"revert\": \"⏪ Reverts\"');\n lines.push(\" }\");\n lines.push(\" },\");\n lines.push(\"\");\n\n // Commitlint\n const scopes = options.scopes ?? [\"deps\", \"ci\", \"docs\"];\n lines.push(\" // Настройки генерации commitlint конфига\");\n lines.push(' \"commitlint\": {');\n lines.push(` \"scopes\": ${JSON.stringify(scopes)},`);\n lines.push(' \"scopeRequired\": false,');\n lines.push(' \"headerMaxLength\": 100');\n lines.push(\" },\");\n lines.push(\"\");\n\n // Git\n lines.push(\" // Настройки Git операций\");\n lines.push(' \"git\": {');\n lines.push(' \"commitChanges\": true,');\n lines.push(' \"commitMessage\": \"chore(release): v{{version}} [skip ci]\",');\n lines.push(' \"push\": true,');\n lines.push(' \"tagMessage\": \"v{{version}}\"');\n lines.push(' // beforeCommit: \"bun run format\" // Раскомментируйте для форматирования перед коммитом');\n lines.push(\" },\");\n lines.push(\"\");\n\n // Release\n lines.push(\" // Настройки создания Release (GitVerse, GitHub, GitLab)\");\n lines.push(\" // Токен: GVR_TOKEN (GitVerse), GITHUB_TOKEN (GitHub), GITLAB_TOKEN (GitLab)\");\n lines.push(' \"release\": {');\n lines.push(' \"enabled\": true,');\n lines.push(' \"platform\": \"auto\", // auto | gitverse | github | gitlab');\n lines.push(' \"checkExisting\": true,');\n lines.push(' \"failOnError\": true');\n lines.push(\" },\");\n lines.push(\"\");\n\n // Monorepo\n lines.push(\" // Настройки монорепо\");\n lines.push(' \"monorepo\": {');\n lines.push(` \"enabled\": ${options.monorepo ?? false}`);\n if (options.monorepo) {\n lines.pop(); // Удаляем последнюю строку\n lines.push(` \"enabled\": true,`);\n lines.push(' \"packages\": [');\n lines.push(\" // Пример конфигурации пакета:\");\n lines.push(\" // {\");\n lines.push(' // \"name\": \"sdk\",');\n lines.push(' // \"path\": \"packages/sdk\",');\n lines.push(' // \"packageName\": \"my-sdk\",');\n lines.push(' // \"tagPrefix\": \"v\"');\n lines.push(\" // }\");\n lines.push(\" ]\");\n }\n lines.push(\" },\");\n lines.push(\"\");\n\n // Versioning\n lines.push(\" // Настройки версионирования\");\n lines.push(' \"versioning\": {');\n lines.push(' \"tagPrefix\": \"v\",');\n lines.push(' \"prereleasePrefix\": \"beta\"');\n lines.push(\" }\");\n\n lines.push(\"}\");\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Инициализирует конфиг-файл\n */\nexport async function initConfig(options: InitConfigOptions = {}): Promise<string> {\n const existingConfig = await configExists();\n\n if (existingConfig) {\n throw new Error(`Config file already exists: ${existingConfig}`);\n }\n\n const content = generateConfigContent(options);\n const filePath = resolve(process.cwd(), DEFAULT_CONFIG_FILE_NAME);\n\n if (options.dryRun) {\n console.log(`\\n🔍 Dry-run mode - Would create: ${filePath}\\n`);\n console.log(content);\n return filePath;\n }\n\n await writeFile(filePath, content, \"utf-8\");\n\n return filePath;\n}\n",
|
|
@@ -29,12 +29,12 @@
|
|
|
29
29
|
"import { exec } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport type { GitRepoInfo } from \"../types\";\n\nconst execAsync = promisify(exec);\n\n/**\n * Выполняет команду shell\n */\nexport async function executeCommand(command: string): Promise<string> {\n const { stdout, stderr } = await execAsync(command);\n\n if (stderr && !stderr.includes(\"warning\")) {\n console.warn(`Command stderr: ${stderr}`);\n }\n\n return stdout.trim();\n}\n\n/**\n * Выполняет beforeCommit hook\n * Возвращает true если хук выполнился успешно\n * Возвращает false если хук упал с ошибкой\n */\nexport async function runBeforeCommitHook(command: string): Promise<boolean> {\n console.log(`\\n🔧 Running before-commit hook: ${command}`);\n\n try {\n await executeCommand(command);\n console.log(\"✅ Before-commit hook completed successfully\\n\");\n return true;\n } catch (error) {\n console.warn(`⚠️ Before-commit hook failed: ${error instanceof Error ? error.message : String(error)}\\n`);\n return false;\n }\n}\n\n/**\n * Универсальные regex для парсинга Git URL\n * Поддерживаемые форматы:\n * - https://host/owner/repo.git\n * - https://host/owner/repo\n * - git@host:owner/repo.git\n * - ssh://git@host:port/owner/repo.git\n */\nconst URL_PATTERNS = [\n // HTTPS: https://host/owner/repo.git или https://host/owner/repo\n /^https?:\\/\\/([^/]+)\\/([^/]+)\\/([^/.]+)(\\.git)?$/,\n // SCP-like: git@host:owner/repo.git\n /^git@([^:]+):([^/]+)\\/([^/.]+)(\\.git)?$/,\n // SSH with port: ssh://git@host:port/owner/repo.git\n /^ssh:\\/\\/git@([^:/]+)(?::\\d+)?\\/([^/]+)\\/([^/.]+)(\\.git)?$/,\n];\n\n/**\n * Платформы и их хосты\n */\ntype PlatformHost = \"gitverse\" | \"github\" | \"gitlab\";\n\nconst PLATFORM_HOSTS: Record<string, PlatformHost> = {\n \"github.com\": \"github\",\n \"gitlab.com\": \"gitlab\",\n \"gitverse.ru\": \"gitverse\",\n};\n\n/**\n * Определяет платформу по хосту\n */\nfunction detectPlatformFromHost(host: string): PlatformHost | undefined {\n // Прямое совпадение\n if (PLATFORM_HOSTS[host]) {\n return PLATFORM_HOSTS[host];\n }\n\n // Проверяем паттерны для self-hosted\n if (host.includes(\"gitverse\")) return \"gitverse\";\n if (host.includes(\"github\")) return \"github\";\n if (host.includes(\"gitlab\")) return \"gitlab\";\n\n return;\n}\n\n/**\n * Парсит URL репозитория\n */\nfunction parseRepoUrl(url: string): { host: string; owner: string; repo: string } | null {\n for (const pattern of URL_PATTERNS) {\n const match = url.match(pattern);\n if (match?.[1] && match[2] && match[3]) {\n return {\n host: match[1],\n owner: match[2],\n repo: match[3],\n };\n }\n }\n return null;\n}\n\n/**\n * Выполняет git команду\n * Экспортируется для тестирования (позволяет мокать через spyOn)\n */\nexport async function gitCommand(command: string): Promise<string> {\n const { stdout } = await execAsync(`git ${command}`);\n return stdout.trim();\n}\n\n/**\n * Получает информацию о Git репозитории\n *\n * Приоритет источников данных:\n * 1. Переменные окружения CI (GitVerse Actions, GitHub Actions, GitLab CI)\n * 2. Git remote URL (для локального использования)\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: CI detection requires checking multiple environments\nexport async function getRepoInfo(): Promise<GitRepoInfo> {\n // GitVerse Actions\n if (process.env.GITVERSE_ACTIONS === \"true\" && process.env.GITHUB_REPOSITORY) {\n const fullName = process.env.GITHUB_REPOSITORY;\n const parts = fullName.split(\"/\");\n\n if (parts.length === 2 && parts[0] && parts[1]) {\n const owner = parts[0];\n const repo = parts[1];\n const branch = process.env.GITHUB_REF_NAME || \"main\";\n\n return {\n branch,\n fullName,\n host: \"gitverse.ru\",\n owner,\n platform: \"gitverse\",\n repo,\n url: `https://gitverse.ru/${owner}/${repo}`,\n };\n }\n }\n\n // GitHub Actions\n if (process.env.GITHUB_ACTIONS === \"true\" && process.env.GITHUB_REPOSITORY) {\n const fullName = process.env.GITHUB_REPOSITORY;\n const parts = fullName.split(\"/\");\n\n if (parts.length === 2 && parts[0] && parts[1]) {\n const owner = parts[0];\n const repo = parts[1];\n const branch = process.env.GITHUB_REF_NAME || \"main\";\n // GitHub Enterprise URL если задан\n const serverUrl = process.env.GITHUB_SERVER_URL || \"https://github.com\";\n const host = new URL(serverUrl).host;\n\n return {\n branch,\n fullName,\n host,\n owner,\n platform: \"github\",\n repo,\n url: `${serverUrl}/${owner}/${repo}`,\n };\n }\n }\n\n // GitLab CI\n if (process.env.GITLAB_CI === \"true\" && process.env.CI_PROJECT_PATH) {\n const fullName = process.env.CI_PROJECT_PATH;\n const parts = fullName.split(\"/\");\n\n if (parts.length >= 2) {\n // GitLab может иметь вложенные группы, берём последние два сегмента\n const owner = parts.slice(0, -1).join(\"/\");\n const repo = parts.at(-1) ?? \"\";\n const branch = process.env.CI_COMMIT_REF_NAME || \"main\";\n const serverUrl = process.env.CI_SERVER_URL || \"https://gitlab.com\";\n const host = new URL(serverUrl).host;\n\n return {\n branch,\n fullName,\n host,\n owner,\n platform: \"gitlab\",\n repo,\n url: `${serverUrl}/${fullName}`,\n };\n }\n }\n\n // Fallback на парсинг git remote (для локального использования)\n const url = await gitCommand(\"remote get-url origin\");\n const parsed = parseRepoUrl(url);\n\n if (!parsed) {\n throw new Error(`Unable to parse repository from URL: ${url}`);\n }\n\n const { host, owner, repo } = parsed;\n const platform = detectPlatformFromHost(host);\n\n // Получаем текущую ветку\n const branch = await gitCommand(\"branch --show-current\");\n\n // Формируем URL в зависимости от платформы\n const repoUrl = `https://${host}/${owner}/${repo}`;\n\n return {\n branch,\n fullName: `${owner}/${repo}`,\n host,\n owner,\n platform,\n repo,\n url: repoUrl,\n };\n}\n\n/**\n * Получает последний тег с указанным префиксом\n */\nexport async function getLatestTag(prefix: string): Promise<string | null> {\n try {\n const tags = await gitCommand(`tag --sort=-v:refname --list \"${prefix}*\"`);\n const tagList = tags.split(\"\\n\").filter((tag) => tag.length > 0);\n\n return tagList.length > 0 ? (tagList[0] ?? null) : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Получает список коммитов с момента последнего тега\n */\nexport async function getCommitsSinceTag(tagPrefix: string, path?: string): Promise<string[]> {\n const latestTag = await getLatestTag(tagPrefix);\n\n let range: string;\n if (latestTag) {\n range = `${latestTag}..HEAD`;\n } else {\n // Если тега нет, берем все коммиты\n range = \"HEAD\";\n }\n\n const format = \"%H%n%h%n%an%n%ae%n%ai%n%B%n==END==\";\n const pathFilter = path ? `-- ${path}` : \"\";\n\n const log = await gitCommand(`log ${range} --format=\"${format}\" ${pathFilter}`);\n\n // Парсим вывод git log\n // Используем split по \\n==END== чтобы корректно обработать последний коммит после trim()\n const commits = log\n .split(\"\\n==END==\")\n .map((commit) => commit.trim())\n .filter((commit) => commit.length > 0 && commit !== \"==END==\");\n\n return commits;\n}\n\n/**\n * Получает текущую версию из package.json\n */\nexport async function getCurrentVersion(packagePath: string): Promise<string> {\n const { readFile } = await import(\"node:fs/promises\");\n const { resolve } = await import(\"node:path\");\n\n const pkgJsonPath = resolve(packagePath, \"package.json\");\n const content = await readFile(pkgJsonPath, \"utf-8\");\n const pkgJson = JSON.parse(content);\n\n if (!pkgJson.version) {\n throw new Error(`No version found in ${pkgJsonPath}`);\n }\n\n return pkgJson.version;\n}\n\n/**\n * Получает информацию из package.json (name и version)\n */\nexport async function getPackageInfo(packagePath: string): Promise<{ name: string; version: string }> {\n const { readFile } = await import(\"node:fs/promises\");\n const { resolve } = await import(\"node:path\");\n\n const pkgJsonPath = resolve(packagePath, \"package.json\");\n const content = await readFile(pkgJsonPath, \"utf-8\");\n const pkgJson = JSON.parse(content);\n\n if (!pkgJson.name) {\n throw new Error(`No name found in ${pkgJsonPath}`);\n }\n\n if (!pkgJson.version) {\n throw new Error(`No version found in ${pkgJsonPath}`);\n }\n\n return {\n name: pkgJson.name,\n version: pkgJson.version,\n };\n}\n\n/**\n * Обновляет версию в package.json\n */\nexport async function updatePackageVersion(packagePath: string, newVersion: string): Promise<void> {\n const { readFile, writeFile } = await import(\"node:fs/promises\");\n const { resolve } = await import(\"node:path\");\n\n const pkgJsonPath = resolve(packagePath, \"package.json\");\n const content = await readFile(pkgJsonPath, \"utf-8\");\n const pkgJson = JSON.parse(content);\n\n pkgJson.version = newVersion;\n\n await writeFile(pkgJsonPath, `${JSON.stringify(pkgJson, null, 2)}\\n`);\n}\n\n/**\n * Создает git коммит\n */\nexport async function createCommit(message: string, files: string[]): Promise<void> {\n // Добавляем файлы\n for (const file of files) {\n await gitCommand(`add \"${file}\"`);\n }\n\n // Создаем коммит\n await gitCommand(`commit -m \"${message}\"`);\n}\n\n/**\n * Создает git тег\n */\nexport async function createTag(tag: string, message: string): Promise<void> {\n await gitCommand(`tag -a \"${tag}\" -m \"${message}\"`);\n}\n\n/**\n * Опции для push операции\n */\nexport interface PushOptions {\n /** Тег для пуша (опционально) */\n tag?: string;\n /** Использовать токен для push через HTTPS */\n useToken?: boolean;\n /** Токен для авторизации */\n token?: string;\n /** Информация о репозитории */\n repoInfo?: GitRepoInfo;\n}\n\n/**\n * Выполняет git команду с очисткой токенов из ошибок\n * Используется для команд с токенами в URL\n * Экспортируется для тестирования\n */\nexport async function gitCommandSilent(command: string): Promise<void> {\n try {\n await execAsync(`git ${command}`);\n } catch (error) {\n // Очищаем сообщение об ошибке от токенов\n if (error instanceof Error) {\n const cleanMessage = error.message.replace(/oauth2:[^@]+@/g, \"oauth2:***@\");\n throw new Error(cleanMessage);\n }\n throw error;\n }\n}\n\n/**\n * Пушит изменения и теги в remote\n */\nexport async function pushChanges(options: PushOptions = {}): Promise<void> {\n const { tag, useToken, token, repoInfo } = options;\n\n // Если используем токен, формируем URL с авторизацией\n if (useToken && token && repoInfo) {\n const pushUrl = `https://oauth2:${token}@gitverse.ru/${repoInfo.owner}/${repoInfo.repo}.git`;\n\n // Пушим коммиты (с подавлением вывода для безопасности)\n await gitCommandSilent(`push ${pushUrl}`);\n\n // Пушим тег, если указан\n if (tag) {\n await gitCommandSilent(`push ${pushUrl} \"${tag}\"`);\n }\n } else {\n // Стандартный push через настроенный remote\n await gitCommand(\"push\");\n\n // Пушим тег, если указан\n if (tag) {\n await gitCommand(`push origin \"${tag}\"`);\n }\n }\n}\n\n/**\n * Проверяет, что рабочая директория чистая\n *\n * Формат git status --porcelain: \"XY PATH\"\n * X = status in staging area (index)\n * Y = status in working tree\n *\n * Staged изменения (X != ' ') допустимы - они войдут в коммит релиза\n * Unstaged изменения (Y != ' ') запрещены - нужно закоммитить или stash\n */\nexport async function isWorkingTreeClean(): Promise<boolean> {\n try {\n const status = await gitCommand(\"status --porcelain\");\n\n if (status.length === 0) {\n return true; // Полностью чистое дерево\n }\n\n // Проверяем есть ли unstaged изменения (второй символ не пробел)\n const lines = status.split(\"\\n\").filter((line) => line.length > 0);\n const unstagedChanges = lines.filter((line) => {\n // Второй символ (Y) показывает статус в working tree\n const workingTreeStatus = line[1];\n return workingTreeStatus !== \" \";\n });\n\n if (unstagedChanges.length > 0) {\n console.log(\"\\n⚠️ Unstaged changes detected:\");\n for (const line of unstagedChanges) {\n console.log(` ${line}`);\n }\n console.log(\"\");\n return false;\n }\n\n // Есть только staged изменения - это нормально\n console.log(\"✓ Working tree clean (staged changes will be included in release commit)\");\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Добавляет все измененные файлы в staging area\n * Используется после успешного выполнения beforeCommit хука\n */\nexport async function addChangedFiles(): Promise<void> {\n console.log(\"📥 Adding changed files to staging area...\");\n await gitCommand(\"add -A\");\n console.log(\"✅ Files added to staging area\\n\");\n}\n\n/**\n * Проверяет, что тег существует.\n *\n * @returns true если тег существует, false если тег не найден\n * @throws Error при критических ошибках git (повреждённый репозиторий, git не найден)\n */\nexport async function tagExists(tag: string): Promise<boolean> {\n // Используем git tag -l для проверки существования тега\n // Это надёжнее чем rev-parse, т.к. не путается с путями файлов\n const result = await gitCommand(`tag -l \"${tag}\"`);\n return result === tag;\n}\n",
|
|
30
30
|
"import type { RetryConfig } from \"../types\";\n\n/**\n * Опции для retry функции\n */\nexport interface RetryOptions {\n /**\n * Максимальное количество попыток\n */\n maxAttempts: number;\n\n /**\n * Начальная задержка (мс)\n */\n initialDelay: number;\n\n /**\n * Максимальная задержка (мс)\n */\n maxDelay: number;\n\n /**\n * Название операции для логирования\n */\n operationName?: string;\n}\n\n/**\n * Ожидание указанное количество миллисекунд\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Вычисляет задержку для следующей попытки с экспоненциальным backoff\n */\nfunction calculateDelay(attempt: number, initialDelay: number, maxDelay: number): number {\n // Экспоненциальный backoff: delay = initialDelay * 2^attempt\n const delay = initialDelay * 2 ** attempt;\n // Ограничиваем максимальной задержкой\n return Math.min(delay, maxDelay);\n}\n\n/**\n * Проверяет, является ли ошибка временной (можно retry)\n */\nexport function isRetriableError(error: unknown): boolean {\n if (!(error instanceof Error)) {\n return false;\n }\n\n const message = error.message.toLowerCase();\n\n // Network errors\n if (message.includes(\"network\") || message.includes(\"timeout\") || message.includes(\"econnreset\")) {\n return true;\n }\n\n // HTTP 5xx errors (server errors)\n if (message.includes(\"500\") || message.includes(\"502\") || message.includes(\"503\") || message.includes(\"504\")) {\n return true;\n }\n\n // Server error messages (git remote, API responses)\n if (message.includes(\"internal server error\")) {\n return true;\n }\n\n // Rate limit errors\n if (message.includes(\"rate limit\") || message.includes(\"429\")) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Выполняет функцию с retry механизмом и экспоненциальным backoff\n *\n * @param fn - Асинхронная функция для выполнения\n * @param options - Опции retry\n * @returns Результат выполнения функции\n * @throws Последняя ошибка после всех попыток\n */\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <Retry Logic OK>\nexport async function retry<T>(fn: () => Promise<T>, options: RetryOptions): Promise<T> {\n const { maxAttempts, initialDelay, maxDelay, operationName = \"Operation\" } = options;\n\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n // Пытаемся выполнить функцию\n return await fn();\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n // Проверяем, можно ли retry\n const canRetry = isRetriableError(error);\n\n // Это последняя попытка или ошибка не retriable\n if (attempt === maxAttempts - 1 || !canRetry) {\n if (!canRetry && attempt < maxAttempts - 1) {\n console.error(`\\n❌ ${operationName} failed with non-retriable error:`);\n console.error(lastError.message);\n }\n throw lastError;\n }\n\n // Вычисляем задержку для следующей попытки\n const delay = calculateDelay(attempt, initialDelay, maxDelay);\n\n console.warn(`\\n⚠️ ${operationName} failed (attempt ${attempt + 1}/${maxAttempts}):`);\n console.warn(` ${lastError.message}`);\n console.warn(` Retrying in ${delay}ms...`);\n\n // Ждём перед следующей попыткой\n await sleep(delay);\n }\n }\n\n // Этот код никогда не должен выполниться, но TypeScript требует return\n throw lastError || new Error(`${operationName} failed after ${maxAttempts} attempts`);\n}\n\n/**\n * Создаёт функцию retry с предустановленными настройками из конфига\n */\nexport function createRetryFunction(config: RetryConfig) {\n return async <T>(fn: () => Promise<T>, operationName?: string): Promise<T> => {\n if (!config.enabled) {\n // Если retry отключен, просто выполняем функцию\n return await fn();\n }\n\n return await retry(fn, {\n initialDelay: config.initialDelay,\n maxAttempts: config.maxAttempts,\n maxDelay: config.maxDelay,\n operationName,\n });\n };\n}\n",
|
|
31
31
|
"import type { BumpType, ConventionalCommit, VersionBump } from \"../types\";\nimport { hasBreakingChanges, hasFeatures, hasFixes } from \"./parser\";\n\n/**\n * Парсит версию в компоненты\n */\ninterface SemanticVersion {\n major: number;\n minor: number;\n patch: number;\n prerelease?: string;\n}\n\n// Regex для парсинга версий\nconst VERSION_REGEX = /^(\\d+)\\.(\\d+)\\.(\\d+)(?:-(.+))?$/;\nconst PRERELEASE_INCREMENT_REGEX = /^(.+)\\.(\\d+)$/;\n\n/**\n * Парсит строку версии\n */\nfunction parseVersion(version: string): SemanticVersion {\n // Удаляем префикс 'v' если есть\n const v = version.startsWith(\"v\") ? version.slice(1) : version;\n\n const match = v.match(VERSION_REGEX);\n if (!(match?.[1] && match[2] && match[3])) {\n throw new Error(`Invalid version format: ${version}`);\n }\n\n return {\n major: Number.parseInt(match[1], 10),\n minor: Number.parseInt(match[2], 10),\n patch: Number.parseInt(match[3], 10),\n prerelease: match[4],\n };\n}\n\n/**\n * Форматирует версию в строку\n */\nfunction formatVersion(ver: SemanticVersion): string {\n let result = `${ver.major}.${ver.minor}.${ver.patch}`;\n if (ver.prerelease) {\n result += `-${ver.prerelease}`;\n }\n return result;\n}\n\n/**\n * Определяет, нужно ли делать major bump для breaking changes\n * на основе текущей версии и режима preMajorMode\n */\nfunction shouldBumpMajor(currentVersion: string | undefined, mode = \"auto\"): boolean {\n // Режим \"disabled\" - всегда делаем major bump (стандартный semver)\n if (mode === \"disabled\") {\n return true;\n }\n\n // Режим \"enabled\" - всегда делаем minor bump\n if (mode === \"enabled\") {\n return false;\n }\n\n // Если версия не передана, используем стандартное поведение\n if (!currentVersion) {\n return true;\n }\n\n const current = parseVersion(currentVersion);\n\n // Режим \"auto\" - для версий < 1.0.0 делаем minor bump\n if (mode === \"auto\") {\n return current.major >= 1;\n }\n\n // Режим с порогом версии (например \"2.0.0\")\n // Если текущая версия >= порога, делаем major bump\n // Если текущая версия < порога, делаем minor bump\n try {\n const _threshold = parseVersion(mode);\n return compareVersions(currentVersion, mode) >= 0;\n } catch {\n // Невалидная версия в режиме - используем стандартное поведение\n return true;\n }\n}\n\n/**\n * Определяет тип изменения версии на основе коммитов\n */\nexport function determineBumpType(\n commits: ConventionalCommit[],\n currentVersion?: string,\n preMajorMode = \"auto\",\n): BumpType | null {\n if (commits.length === 0) {\n return null;\n }\n\n if (hasBreakingChanges(commits)) {\n // Определяем major или minor bump в зависимости от preMajorMode\n const useMajor = shouldBumpMajor(currentVersion, preMajorMode);\n return useMajor ? \"major\" : \"minor\";\n }\n\n if (hasFeatures(commits)) {\n return \"minor\";\n }\n\n if (hasFixes(commits)) {\n return \"patch\";\n }\n\n // Если есть другие типы коммитов (chore, docs, etc), делаем patch\n return \"patch\";\n}\n\n/**\n * Увеличивает версию согласно типу изменения\n */\nexport function bumpVersion(currentVersion: string, bumpType: BumpType, prereleasePrefix?: string): string {\n const ver = parseVersion(currentVersion);\n\n switch (bumpType) {\n case \"major\":\n ver.major += 1;\n ver.minor = 0;\n ver.patch = 0;\n ver.prerelease = undefined;\n break;\n case \"minor\":\n ver.minor += 1;\n ver.patch = 0;\n ver.prerelease = undefined;\n break;\n case \"patch\":\n ver.patch += 1;\n ver.prerelease = undefined;\n break;\n case \"prerelease\":\n if (ver.prerelease) {\n // Инкрементируем номер prerelease\n const match = ver.prerelease.match(PRERELEASE_INCREMENT_REGEX);\n if (match?.[1] && match[2]) {\n const prefix = match[1];\n const num = Number.parseInt(match[2], 10);\n ver.prerelease = `${prefix}.${num + 1}`;\n } else {\n ver.prerelease = `${ver.prerelease}.1`;\n }\n } else {\n // Создаем первый prerelease\n ver.patch += 1;\n ver.prerelease = `${prereleasePrefix || \"beta\"}.0`;\n }\n break;\n }\n\n return formatVersion(ver);\n}\n\n/**\n * Вычисляет bump версии на основе коммитов\n */\nexport function calculateVersionBump(\n currentVersion: string,\n commits: ConventionalCommit[],\n forceVersion?: string,\n prerelease?: string,\n preMajorMode?: string,\n): VersionBump {\n let bumpType: BumpType;\n let newVersion: string;\n\n // Если forceVersion это тип bump (major/minor/patch), используем его\n if (forceVersion === \"major\" || forceVersion === \"minor\" || forceVersion === \"patch\") {\n bumpType = forceVersion;\n newVersion = bumpVersion(currentVersion, bumpType, prerelease);\n } else if (forceVersion) {\n // Если forceVersion это конкретная версия (например \"1.0.0\"), используем её напрямую\n bumpType = determineBumpType(commits, currentVersion, preMajorMode) || \"patch\";\n newVersion = forceVersion;\n } else {\n // Автоматическое определение версии\n bumpType = prerelease ? \"prerelease\" : determineBumpType(commits, currentVersion, preMajorMode) || \"patch\";\n newVersion = bumpVersion(currentVersion, bumpType, prerelease);\n }\n\n return {\n bumpType,\n commits,\n currentVersion,\n hasBreaking: hasBreakingChanges(commits),\n hasFeatures: hasFeatures(commits),\n hasFixes: hasFixes(commits),\n newVersion,\n };\n}\n\n/**\n * Сравнивает две версии\n * Возвращает: -1 если a < b, 0 если a === b, 1 если a > b\n */\nexport function compareVersions(a: string, b: string): number {\n const verA = parseVersion(a);\n const verB = parseVersion(b);\n\n if (verA.major !== verB.major) {\n return verA.major > verB.major ? 1 : -1;\n }\n if (verA.minor !== verB.minor) {\n return verA.minor > verB.minor ? 1 : -1;\n }\n if (verA.patch !== verB.patch) {\n return verA.patch > verB.patch ? 1 : -1;\n }\n\n // Сравнение prerelease\n if (verA.prerelease && !verB.prerelease) {\n return -1; // prerelease всегда меньше релиза\n }\n if (!verA.prerelease && verB.prerelease) {\n return 1;\n }\n if (verA.prerelease && verB.prerelease) {\n return verA.prerelease.localeCompare(verB.prerelease);\n }\n\n return 0;\n}\n",
|
|
32
|
+
"import { spawn } from \"node:child_process\";\nimport { loadConfig, validateBinariesConfig } from \"./config\";\nimport { createReleaseProvider, type GitPlatform } from \"./providers\";\nimport type { AssetLimits } from \"./providers/types\";\nimport type {\n BinariesConfig,\n BinaryCliOptions,\n BinaryDistributionResult,\n BinaryPlatform,\n BinaryUploadResult,\n} from \"./types\";\nimport { formatFileSize, GITVERSE_ASSET_LIMITS, validateAssetBatch } from \"./utils/binary-distribution-provider\";\nimport { getArchivePath, validateAllBinarySources } from \"./utils/binary-platforms\";\nimport { createBinaryManifest, generatePostinstallScript, writeNpmFiles } from \"./utils/binary-postinstall-generator\";\nimport { getCurrentVersion, getRepoInfo } from \"./utils/git\";\nimport { createRetryFunction } from \"./utils/retry\";\n\n/**\n * Интерфейс для загрузки assets\n */\ninterface AssetUploader {\n /** Лимиты платформы */\n limits: AssetLimits;\n /** Загружает asset */\n uploadAsset(filePath: string, assetName: string): Promise<{ downloadUrl: string }>;\n}\n\n/**\n * Задержка между попытками\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Выполняет shell команду и возвращает результат\n */\nfunction runCommand(command: string): Promise<{ success: boolean; output: string; error?: string }> {\n return new Promise((resolve) => {\n const child = spawn(command, { shell: true, stdio: \"inherit\" });\n\n child.on(\"close\", (code: number | null) => {\n if (code === 0) {\n resolve({ output: \"\", success: true });\n } else {\n resolve({ error: `Exit code: ${code}`, output: \"\", success: false });\n }\n });\n\n child.on(\"error\", (err: Error) => {\n resolve({ error: err.message, output: \"\", success: false });\n });\n });\n}\n\n/**\n * Вычисляет задержку с экспоненциальным backoff\n */\nfunction calculateDelay(attempt: number, initialDelay = 2000, maxDelay = 30000): number {\n const delay = initialDelay * 2 ** attempt;\n return Math.min(delay, maxDelay);\n}\n\n/**\n * Публикует бинарники в GitVerse Release\n *\n * Процесс:\n * 1. Загружает конфигурацию и валидирует её\n * 2. Проверяет наличие архивов для всех платформ\n * 3. Валидирует файлы на соответствие лимитам GitVerse\n * 4. Создаёт или находит существующий релиз\n * 5. Загружает архивы как assets в релиз\n * 6. Генерирует postinstall скрипт и manifest\n *\n * @param options - Опции публикации\n * @returns Результат публикации\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Main entry point with many edge cases\nexport async function publishBinaries(options: BinaryCliOptions = {}): Promise<BinaryDistributionResult> {\n const result: BinaryDistributionResult = {\n errors: [],\n success: false,\n uploads: [],\n version: \"\",\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(options.config);\n\n if (!config.binaries?.enabled) {\n result.errors.push(\"Binary distribution is not enabled in config\");\n return result;\n }\n\n validateBinariesConfig(config.binaries);\n\n const binariesConfig = config.binaries;\n\n // Получаем версию\n const version = options.version ?? (await getCurrentVersion(\".\"));\n result.version = version;\n\n // Определяем платформы\n const platforms = options.platforms ?? binariesConfig.platforms;\n\n // Валидируем наличие архивов\n const missingBinaries = await validateAllBinarySources({ ...binariesConfig, platforms });\n\n if (missingBinaries.length > 0) {\n for (const platform of missingBinaries) {\n console.warn(`⚠️ Archive not found for platform: ${platform}`);\n result.warnings.push(`Archive not found for platform: ${platform}`);\n }\n\n if (missingBinaries.length === platforms.length) {\n result.errors.push(\"No archives found for any platform\");\n return result;\n }\n }\n\n // Фильтруем платформы с существующими архивами\n const availablePlatforms = platforms.filter((p) => !missingBinaries.includes(p));\n\n // Получаем пути к архивам\n const archivePaths = availablePlatforms.map((platform) => getArchivePath(binariesConfig, platform));\n\n // Валидируем файлы перед загрузкой\n const batchValidation = await validateAssetBatch(archivePaths);\n\n if (!batchValidation.valid) {\n for (const error of batchValidation.errors) {\n console.error(`❌ ${error}`);\n result.errors.push(error);\n }\n return result;\n }\n\n console.log(\n `\\n📦 Preparing to upload ${availablePlatforms.length} archives (${formatFileSize(batchValidation.totalSize)})\\n`,\n );\n\n if (options.dryRun) {\n console.log(\"🔍 DRY RUN MODE\\n\");\n printDryRun(binariesConfig, version, availablePlatforms);\n result.success = true;\n return result;\n }\n\n // Получаем информацию о репозитории\n const repoInfo = await getRepoInfo();\n\n // Определяем платформу\n const platform: GitPlatform | \"auto\" = config.release?.platform ?? \"auto\";\n const detectedPlatform = platform === \"auto\" ? (repoInfo.platform ?? \"gitverse\") : platform;\n\n console.log(`🔗 Using ${detectedPlatform} release provider`);\n\n // Создаём retry функцию\n const retryFn = config.retry.enabled ? createRetryFunction(config.retry) : undefined;\n\n // Создаём провайдер\n const { provider, platform: _actualPlatform } = createReleaseProvider({\n platform: detectedPlatform,\n repoInfo: {\n host: repoInfo.host ?? \"gitverse.ru\",\n owner: repoInfo.owner,\n repo: repoInfo.repo,\n },\n retryFn,\n });\n\n // Валидируем токен\n const tokenValidation = await provider.validateToken();\n if (!tokenValidation.valid) {\n result.errors.push(tokenValidation.error ?? \"Token validation failed\");\n return result;\n }\n\n console.log(`✅ Authenticated as ${tokenValidation.username}\\n`);\n\n // Определяем тег\n const tagPrefix = config.versioning?.tagPrefix ?? \"v\";\n const tag = options.tag ?? `${tagPrefix}${version}`;\n\n // Ищем или создаём релиз\n let releaseId: number | string;\n\n const existingRelease = await provider.getRelease(tag);\n\n if (existingRelease?.id) {\n releaseId = existingRelease.id;\n console.log(`📋 Using existing release: ${tag} (ID: ${releaseId})`);\n } else {\n // Создаём новый релиз\n console.log(`📋 Creating new release: ${tag}`);\n\n const binName = binariesConfig.binName ?? binariesConfig.name;\n const newRelease = await provider.createRelease(\n tag,\n `${binName} ${version}`,\n `Binary release for ${binName} v${version}`,\n );\n\n releaseId = newRelease.id;\n result.releaseUrl = newRelease.url;\n console.log(`✅ Release created: ${newRelease.url}\\n`);\n }\n\n result.releaseId = typeof releaseId === \"number\" ? releaseId : undefined;\n\n // Загружаем архивы\n console.log(\"🚀 Uploading assets...\\n\");\n\n // Создаём обёртку для загрузки\n const assetUploader: AssetUploader = {\n limits: provider.assetLimits,\n uploadAsset: async (filePath, assetName) => {\n const result = await provider.uploadAsset(releaseId, filePath, assetName);\n return { downloadUrl: result.downloadUrl };\n },\n };\n\n const uploadResults = await uploadAllAssets(\n binariesConfig,\n version,\n availablePlatforms,\n assetUploader,\n options.verbose,\n );\n result.uploads = uploadResults;\n\n const successfulUploads = uploadResults.filter((r) => r.success);\n const failedUploads = uploadResults.filter((r) => !r.success);\n\n // Выводим итоги\n console.log(\"\\n📊 Upload Summary:\");\n console.log(` Total: ${uploadResults.length}`);\n console.log(` Successful: ${successfulUploads.length}`);\n console.log(` Failed: ${failedUploads.length}`);\n\n if (failedUploads.length > 0) {\n console.log(\"\\n❌ Failed uploads:\");\n for (const upload of failedUploads) {\n console.log(` ${upload.platform}: ${upload.error}`);\n result.warnings.push(`Failed to upload ${upload.platform}: ${upload.error}`);\n }\n\n if (!binariesConfig.continueOnError) {\n result.errors.push(\"Some assets failed to upload\");\n return result;\n }\n }\n\n // Генерируем manifest и postinstall скрипт\n if (successfulUploads.length > 0) {\n const assets: Partial<Record<BinaryPlatform, string>> = {};\n for (const upload of successfulUploads) {\n if (upload.success) {\n assets[upload.platform] = upload.downloadUrl;\n }\n }\n\n const binName = binariesConfig.binName ?? binariesConfig.name;\n const manifest = createBinaryManifest(version, binName, assets);\n\n // Если включена генерация npm скриптов - записываем файлы\n if (binariesConfig.npm?.generateScripts !== false) {\n const npmConfig = {\n binDir: binariesConfig.npm?.binDir ?? \"bin\",\n generateScripts: binariesConfig.npm?.generateScripts ?? true,\n scriptsDir: binariesConfig.npm?.scriptsDir ?? \"scripts\",\n updatePackageJson: binariesConfig.npm?.updatePackageJson ?? true,\n };\n\n console.log(\"\\n📦 Generating npm distribution files...\");\n\n await writeNpmFiles({\n binName,\n manifest,\n npmConfig,\n });\n\n // Если указана команда публикации npm — выполняем её\n if (options.npmPublish) {\n console.log(`\\n📤 Publishing to npm: ${options.npmPublish}`);\n\n const publishResult = await runCommand(options.npmPublish);\n\n if (!publishResult.success) {\n result.errors.push(`npm publish failed: ${publishResult.error}`);\n return result;\n }\n\n console.log(\"✅ npm package published successfully!\");\n } else {\n console.log(\"\\n💡 Next steps:\");\n console.log(\" 1. Review generated files in scripts/ and bin/\");\n console.log(\" 2. Run: npm publish (or bun publish)\");\n console.log(` 3. Users install with: npm install ${binariesConfig.name}`);\n }\n } else {\n // Старое поведение - выводим в консоль\n console.log(\"\\n📝 Generated manifest:\");\n console.log(JSON.stringify(manifest, null, 2));\n\n console.log(\"\\n📜 Postinstall script:\");\n console.log(\"---\");\n console.log(generatePostinstallScript(manifest));\n console.log(\"---\");\n }\n }\n\n result.success = successfulUploads.length > 0;\n\n if (result.success) {\n console.log(\"\\n✅ Binary distribution completed successfully!\");\n }\n } catch (error) {\n result.errors.push(error instanceof Error ? error.message : String(error));\n console.error(\"\\n❌ Binary distribution failed:\");\n console.error(error);\n }\n\n return result;\n}\n\n/**\n * Загружает все assets в релиз\n */\nasync function uploadAllAssets(\n config: BinariesConfig,\n _version: string,\n platforms: BinaryPlatform[],\n uploader: AssetUploader,\n verbose = false,\n): Promise<BinaryUploadResult[]> {\n const results: BinaryUploadResult[] = [];\n\n // Загружаем последовательно с учётом лимитов платформы\n const batchSize = Math.min(uploader.limits.maxFilesPerUpload, 3);\n\n for (let i = 0; i < platforms.length; i += batchSize) {\n const batch = platforms.slice(i, i + batchSize);\n\n const batchResults = await Promise.all(\n batch.map((platform) => uploadAssetWithRetry(config, platform, uploader, verbose)),\n );\n\n results.push(...batchResults);\n\n // Небольшая задержка между батчами\n if (i + batchSize < platforms.length) {\n await sleep(500);\n }\n }\n\n return results;\n}\n\n/**\n * Загружает один asset с retry\n */\nasync function uploadAssetWithRetry(\n config: BinariesConfig,\n platform: BinaryPlatform,\n uploader: AssetUploader,\n verbose = false,\n): Promise<BinaryUploadResult> {\n const archivePath = getArchivePath(config, platform);\n const assetName = `${config.name}-${platform}.tar.gz`;\n\n let lastError: Error | undefined;\n let attempts = 0;\n\n for (let attempt = 0; attempt < config.retryAttempts; attempt++) {\n attempts = attempt + 1;\n\n try {\n if (verbose) {\n console.log(`📤 Uploading ${assetName} (attempt ${attempts}/${config.retryAttempts})...`);\n }\n\n const result = await uploader.uploadAsset(archivePath, assetName);\n\n if (verbose) {\n console.log(`✅ Uploaded ${assetName}: ${result.downloadUrl}`);\n } else {\n console.log(` ✅ ${platform}`);\n }\n\n return {\n assetName,\n attempts,\n downloadUrl: result.downloadUrl,\n platform,\n success: true as const,\n };\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n if (attempt < config.retryAttempts - 1) {\n const delay = calculateDelay(attempt);\n console.warn(`⚠️ Upload failed for ${assetName} (attempt ${attempts}/${config.retryAttempts})`);\n console.warn(` ${lastError.message}`);\n console.warn(` Retrying in ${delay}ms...`);\n await sleep(delay);\n }\n }\n }\n\n console.error(`❌ Failed to upload ${assetName}: ${lastError?.message}`);\n\n return {\n assetName,\n attempts,\n error: lastError?.message ?? \"Unknown error\",\n platform,\n success: false as const,\n };\n}\n\n/**\n * Печатает информацию в dry-run режиме\n */\nfunction printDryRun(config: BinariesConfig, version: string, platforms: BinaryPlatform[]): void {\n const binName = config.binName ?? config.name;\n\n console.log(\"📦 Binary Distribution:\");\n console.log(` Name: ${config.name}`);\n console.log(` Binary name: ${binName}`);\n console.log(` Version: ${version}`);\n console.log(` Platforms: ${platforms.join(\", \")}`);\n console.log(` Input format: ${config.inputFormat ?? \"tar.gz\"}`);\n\n console.log(\"\\n📁 Archives to upload:\");\n for (const platform of platforms) {\n const archivePath = getArchivePath(config, platform);\n const assetName = `${config.name}-${platform}.tar.gz`;\n console.log(` ${platform}:`);\n console.log(` Source: ${archivePath}`);\n console.log(` Asset name: ${assetName}`);\n }\n\n // Показываем лимиты GitVerse по умолчанию в dry-run\n // В реальном режиме будут использоваться лимиты из провайдера\n console.log(\"\\n🔒 Default Asset Limits (GitVerse):\");\n console.log(` Max file size: ${formatFileSize(GITVERSE_ASSET_LIMITS.maxFileSizeBytes)}`);\n console.log(` Max files per upload: ${GITVERSE_ASSET_LIMITS.maxFilesPerUpload}`);\n console.log(` Max total size: ${formatFileSize(GITVERSE_ASSET_LIMITS.maxTotalSizeBytes)}`);\n console.log(\" Note: Actual limits depend on detected platform\");\n\n // Показываем что будет сгенерировано для npm\n if (config.npm?.generateScripts !== false) {\n const scriptsDir = config.npm?.scriptsDir ?? \"scripts\";\n const binDir = config.npm?.binDir ?? \"bin\";\n\n console.log(\"\\n📝 NPM distribution files to generate:\");\n console.log(` Postinstall script: ${scriptsDir}/postinstall.js`);\n console.log(` Bin wrapper: ${binDir}/${binName}.js`);\n if (config.npm?.updatePackageJson !== false) {\n console.log(\" package.json: will be updated with bin and scripts.postinstall\");\n }\n }\n}\n",
|
|
32
33
|
"import { stat } from \"node:fs/promises\";\nimport { basename, extname } from \"node:path\";\nimport type { GitVerseReleaseProvider } from \"../providers\";\nimport type { AssetValidationResult, BinaryDistributionProvider, GitVerseAssetLimits } from \"../types\";\n\n/**\n * Получает расширение файла с поддержкой составных расширений (.tar.gz)\n */\nfunction getFileExtension(filePath: string): string {\n const name = basename(filePath).toLowerCase();\n\n // Проверяем составные расширения\n if (name.endsWith(\".tar.gz\")) return \".tar.gz\";\n if (name.endsWith(\".tgz.xz\")) return \".tgz.xz\";\n\n return extname(filePath).toLowerCase();\n}\n\n/**\n * Лимиты GitVerse для артефактов релиза\n */\nexport const GITVERSE_ASSET_LIMITS: GitVerseAssetLimits = {\n /** Допустимые расширения файлов */\n allowedExtensions: [\n \".7z\",\n \".appimage\",\n \".apk\",\n \".cab\",\n \".csv\",\n \".doc\",\n \".docx\",\n \".fodg\",\n \".fodp\",\n \".fods\",\n \".fodt\",\n \".gif\",\n \".gz\",\n \".jar\",\n \".jpeg\",\n \".jpg\",\n \".js\",\n \".log\",\n \".md\",\n \".odf\",\n \".odg\",\n \".odp\",\n \".ods\",\n \".odt\",\n \".patch\",\n \".pdf\",\n \".png\",\n \".pptx\",\n \".rar\",\n \".svg\",\n \".tar.gz\",\n \".tgz\",\n \".txt\",\n \".webm\",\n \".whl\",\n \".xls\",\n \".xlsx\",\n \".zip\",\n ],\n /** Максимальный размер одного файла: 100 МБ */\n maxFileSizeBytes: 100 * 1024 * 1024,\n /** Максимальное количество файлов за раз */\n maxFilesPerUpload: 5,\n /** Максимальный совокупный размер за раз: 500 МБ */\n maxTotalSizeBytes: 500 * 1024 * 1024,\n};\n\n/**\n * Форматирует размер файла в человекочитаемый формат\n */\nexport function formatFileSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\n/**\n * Валидирует файл для загрузки в GitVerse Release\n *\n * @param filePath - Путь к файлу\n * @returns Результат валидации\n */\nexport async function validateAssetFile(filePath: string): Promise<AssetValidationResult> {\n try {\n const stats = await stat(filePath);\n const sizeBytes = stats.size;\n\n // Проверяем размер файла\n if (sizeBytes > GITVERSE_ASSET_LIMITS.maxFileSizeBytes) {\n return {\n error: `File size ${formatFileSize(sizeBytes)} exceeds maximum ${formatFileSize(GITVERSE_ASSET_LIMITS.maxFileSizeBytes)}`,\n sizeBytes,\n valid: false,\n };\n }\n\n // Проверяем расширение\n const ext = getFileExtension(filePath);\n if (!GITVERSE_ASSET_LIMITS.allowedExtensions.includes(ext)) {\n return {\n error: `File extension \"${ext}\" is not allowed. Allowed: ${GITVERSE_ASSET_LIMITS.allowedExtensions.join(\", \")}`,\n sizeBytes,\n valid: false,\n };\n }\n\n return {\n sizeBytes,\n valid: true,\n };\n } catch (error) {\n return {\n error: `Failed to access file: ${error instanceof Error ? error.message : String(error)}`,\n valid: false,\n };\n }\n}\n\n/**\n * Валидирует набор файлов для загрузки\n *\n * @param filePaths - Массив путей к файлам\n * @returns Результат валидации с совокупным размером\n */\nexport async function validateAssetBatch(\n filePaths: string[],\n): Promise<{ valid: boolean; errors: string[]; totalSize: number }> {\n const errors: string[] = [];\n let totalSize = 0;\n\n // Проверяем количество файлов\n if (filePaths.length > GITVERSE_ASSET_LIMITS.maxFilesPerUpload) {\n errors.push(\n `Too many files: ${filePaths.length}. Maximum ${GITVERSE_ASSET_LIMITS.maxFilesPerUpload} files per upload.`,\n );\n }\n\n // Валидируем каждый файл\n for (const filePath of filePaths) {\n const result = await validateAssetFile(filePath);\n if (!result.valid) {\n errors.push(`${filePath}: ${result.error}`);\n } else if (result.sizeBytes) {\n totalSize += result.sizeBytes;\n }\n }\n\n // Проверяем совокупный размер\n if (totalSize > GITVERSE_ASSET_LIMITS.maxTotalSizeBytes) {\n errors.push(\n `Total size ${formatFileSize(totalSize)} exceeds maximum ${formatFileSize(GITVERSE_ASSET_LIMITS.maxTotalSizeBytes)}`,\n );\n }\n\n return {\n errors,\n totalSize,\n valid: errors.length === 0,\n };\n}\n\n/**\n * GitVerse провайдер дистрибуции бинарников\n */\nexport class GitVerseDistributionProvider implements BinaryDistributionProvider {\n private client: GitVerseReleaseProvider;\n private releaseId: number;\n\n constructor(client: GitVerseReleaseProvider, releaseId: number) {\n this.client = client;\n this.releaseId = releaseId;\n }\n\n /**\n * Загружает файл как asset в релиз\n *\n * @param filePath - Путь к файлу\n * @param assetName - Имя asset в релизе\n * @returns URL для скачивания\n */\n async uploadAsset(filePath: string, assetName: string): Promise<{ downloadUrl: string }> {\n // Валидируем файл перед загрузкой\n const validation = await validateAssetFile(filePath);\n if (!validation.valid) {\n throw new Error(validation.error);\n }\n\n const attachment = await this.client.uploadAsset(this.releaseId, filePath, assetName);\n\n if (!attachment.downloadUrl) {\n throw new Error(`No download URL returned for asset ${assetName}`);\n }\n\n return { downloadUrl: attachment.downloadUrl };\n }\n\n /**\n * Возвращает ID релиза\n */\n get id(): number {\n return this.releaseId;\n }\n}\n",
|
|
33
34
|
"import { access } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport type { BinariesConfig, BinaryPlatform, PlatformMapping } from \"../types\";\n\n/**\n * Маппинг платформ на os/arch значения\n */\nexport const PLATFORM_MAPPINGS: Record<BinaryPlatform, PlatformMapping> = {\n \"darwin-arm64\": { arch: \"arm64\", extension: \"\", os: \"darwin\" },\n \"darwin-x64\": { arch: \"x64\", extension: \"\", os: \"darwin\" },\n \"linux-arm64\": { arch: \"arm64\", extension: \"\", os: \"linux\" },\n \"linux-x64\": { arch: \"x64\", extension: \"\", os: \"linux\" },\n \"win32-arm64\": { arch: \"arm64\", extension: \".exe\", os: \"win32\" },\n \"win32-x64\": { arch: \"x64\", extension: \".exe\", os: \"win32\" },\n};\n\n/**\n * Все поддерживаемые платформы\n */\nexport const ALL_PLATFORMS: BinaryPlatform[] = Object.keys(PLATFORM_MAPPINGS) as BinaryPlatform[];\n\n/**\n * Проверяет, что строка является валидной платформой\n */\nexport function isValidPlatform(value: string): value is BinaryPlatform {\n return value in PLATFORM_MAPPINGS;\n}\n\n/**\n * Парсит список платформ из строки (comma-separated)\n */\nexport function parsePlatforms(value: string): BinaryPlatform[] {\n const platforms = value.split(\",\").map((p) => p.trim());\n const result: BinaryPlatform[] = [];\n\n for (const platform of platforms) {\n if (!isValidPlatform(platform)) {\n throw new Error(`Invalid platform: ${platform}. Valid platforms: ${ALL_PLATFORMS.join(\", \")}`);\n }\n result.push(platform);\n }\n\n return result;\n}\n\n/**\n * Возвращает путь к бинарнику для указанной платформы\n */\nexport function getBinaryPath(distDir: string, name: string, platform: BinaryPlatform): string {\n const mapping = PLATFORM_MAPPINGS[platform];\n const binaryName = `${name}${mapping.extension}`;\n const platformDir = `${name}-${platform}`;\n return resolve(distDir, platformDir, binaryName);\n}\n\n/**\n * Возвращает путь к директории платформы\n */\nexport function getPlatformDir(distDir: string, name: string, platform: BinaryPlatform): string {\n const platformDir = `${name}-${platform}`;\n return resolve(distDir, platformDir);\n}\n\n/**\n * Проверяет существование бинарника для платформы.\n *\n * @returns true если файл существует, false если файл не найден (ENOENT)\n * @throws Error при других ошибках доступа (EACCES, ELOOP, EIO и т.д.)\n */\nexport async function validateBinaryExists(distDir: string, name: string, platform: BinaryPlatform): Promise<boolean> {\n const binaryPath = getBinaryPath(distDir, name, platform);\n try {\n await access(binaryPath);\n return true;\n } catch (error) {\n // ENOENT означает, что файл не существует - это ожидаемое поведение\n if (error instanceof Error && \"code\" in error && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return false;\n }\n // Все остальные ошибки (EACCES, ELOOP, EIO и т.д.) должны быть проброшены\n throw new Error(\n `Failed to check binary at ${binaryPath}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\n/**\n * Валидирует наличие бинарников для всех указанных платформ\n * @returns Массив отсутствующих платформ\n */\nexport async function validateAllBinaries(\n distDir: string,\n name: string,\n platforms: BinaryPlatform[],\n): Promise<BinaryPlatform[]> {\n const missing: BinaryPlatform[] = [];\n\n for (const platform of platforms) {\n const exists = await validateBinaryExists(distDir, name, platform);\n if (!exists) {\n missing.push(platform);\n }\n }\n\n return missing;\n}\n\n/**\n * Конвертирует платформу в Node.js process.platform и process.arch\n */\nexport function platformToNodeValues(platform: BinaryPlatform): { platform: string; arch: string } {\n const parts = platform.split(\"-\");\n return { arch: parts[1] ?? \"\", platform: parts[0] ?? \"\" };\n}\n\n/**\n * Возвращает ключ источника для платформы с учётом platformMap.\n * Если platformMap не задан или платформа не найдена, возвращает платформу как есть.\n */\nexport function getSourceKey(config: BinariesConfig, platform: BinaryPlatform): string {\n if (!config.platformMap) {\n return platform;\n }\n\n for (const [sourceKey, targetPlatform] of Object.entries(config.platformMap)) {\n if (targetPlatform === platform) {\n return sourceKey;\n }\n }\n\n return platform;\n}\n\n/**\n * Дефолтный шаблон имени архива\n */\nexport const DEFAULT_ARCHIVE_NAME_TEMPLATE = \"{{name}}-{{platform}}.tar.gz\";\n\n/**\n * Возвращает имя архива для платформы с учётом шаблона.\n */\nexport function getArchiveName(config: BinariesConfig, platform: BinaryPlatform): string {\n const template = config.archiveNameTemplate ?? DEFAULT_ARCHIVE_NAME_TEMPLATE;\n const sourceKey = getSourceKey(config, platform);\n\n return template.replace(/\\{\\{name\\}\\}/g, config.name).replace(/\\{\\{platform\\}\\}/g, sourceKey);\n}\n\n/**\n * Возвращает путь к tar.gz архиву для указанной платформы.\n */\nexport function getArchivePath(config: BinariesConfig, platform: BinaryPlatform): string {\n const archiveName = getArchiveName(config, platform);\n return resolve(config.distDir, archiveName);\n}\n\n/**\n * Проверяет существование tar.gz архива для платформы.\n *\n * @returns true если архив существует, false если не найден (ENOENT)\n * @throws Error при других ошибках доступа\n */\nexport async function validateArchiveExists(config: BinariesConfig, platform: BinaryPlatform): Promise<boolean> {\n const archivePath = getArchivePath(config, platform);\n try {\n await access(archivePath);\n return true;\n } catch (error) {\n if (error instanceof Error && \"code\" in error && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return false;\n }\n throw new Error(\n `Failed to check archive at ${archivePath}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\n/**\n * Универсальная проверка существования источника бинарника.\n * Поддерживает как директории, так и tar.gz архивы.\n *\n * @returns true если источник существует, false если не найден\n * @throws Error при других ошибках доступа\n */\nexport async function validateBinarySourceExists(config: BinariesConfig, platform: BinaryPlatform): Promise<boolean> {\n const inputFormat = config.inputFormat ?? \"directory\";\n\n if (inputFormat === \"tar.gz\") {\n return await validateArchiveExists(config, platform);\n }\n\n return await validateBinaryExists(config.distDir, config.name, platform);\n}\n\n/**\n * Универсальная валидация наличия источников бинарников для всех платформ.\n * Поддерживает как директории, так и tar.gz архивы.\n *\n * @returns Массив отсутствующих платформ\n */\nexport async function validateAllBinarySources(config: BinariesConfig): Promise<BinaryPlatform[]> {\n const platforms = config.platforms;\n const missing: BinaryPlatform[] = [];\n\n for (const platform of platforms) {\n const exists = await validateBinarySourceExists(config, platform);\n if (!exists) {\n missing.push(platform);\n }\n }\n\n return missing;\n}\n\n/**\n * Возвращает путь к источнику бинарника с учётом формата входных данных.\n * Для directory возвращает путь к директории платформы.\n * Для tar.gz возвращает путь к архиву.\n */\nexport function getBinarySourcePath(config: BinariesConfig, platform: BinaryPlatform): string {\n const inputFormat = config.inputFormat ?? \"directory\";\n\n if (inputFormat === \"tar.gz\") {\n return getArchivePath(config, platform);\n }\n\n return getPlatformDir(config.distDir, config.name, platform);\n}\n",
|
|
34
|
-
"import { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport type { BinariesNpmConfig, BinaryManifest, BinaryPlatform } from \"../types\";\n\n/**\n * Генерирует postinstall скрипт для скачивания бинарника\n *\n * @param manifest - Манифест с URL-ами для скачивания\n * @returns JavaScript код postinstall скрипта\n */\nexport function generatePostinstallScript(manifest: BinaryManifest): string {\n return `#!/usr/bin/env node\n\"use strict\";\n\nconst { platform, arch } = process;\nconst https = require(\"https\");\nconst http = require(\"http\");\nconst { createWriteStream, chmodSync, mkdirSync } = require(\"fs\");\nconst { join } = require(\"path\");\nconst { createGunzip } = require(\"zlib\");\nconst tar = require(\"tar\");\n\nconst MANIFEST = ${JSON.stringify(manifest, null, 2)};\n\nconst platformKey = \\`\\${platform}-\\${arch}\\`;\nconst downloadUrl = MANIFEST.assets[platformKey];\n\nif (!downloadUrl) {\n console.warn(\\`⚠️ No binary available for \\${platformKey}, skipping installation\\`);\n console.warn(\\` Supported platforms: \\${Object.keys(MANIFEST.assets).join(\", \")}\\`);\n process.exit(0);\n}\n\nconst binDir = join(__dirname, \"..\", \"bin\");\nmkdirSync(binDir, { recursive: true });\n\n/**\n * Downloads and extracts a tar.gz archive\n */\nfunction download(url, redirectCount = 0) {\n if (redirectCount > 5) {\n return Promise.reject(new Error(\"Too many redirects\"));\n }\n\n return new Promise((resolve, reject) => {\n const protocol = url.startsWith(\"https\") ? https : http;\n\n const request = protocol.get(url, (res) => {\n // Handle redirects\n if (res.statusCode === 301 || res.statusCode === 302 || res.statusCode === 307 || res.statusCode === 308) {\n const location = res.headers.location;\n if (!location) {\n reject(new Error(\"Redirect without location header\"));\n return;\n }\n download(location, redirectCount + 1).then(resolve).catch(reject);\n return;\n }\n\n if (res.statusCode !== 200) {\n reject(new Error(\\`Download failed: HTTP \\${res.statusCode}\\`));\n return;\n }\n\n res\n .pipe(createGunzip())\n .pipe(tar.extract({ cwd: binDir }))\n .on(\"finish\", resolve)\n .on(\"error\", reject);\n });\n\n request.on(\"error\", reject);\n request.setTimeout(30000, () => {\n request.destroy();\n reject(new Error(\"Download timeout\"));\n });\n });\n}\n\nconsole.log(\\`📦 Installing \\${MANIFEST.binName} for \\${platformKey}...\\`);\n\ndownload(downloadUrl)\n .then(() => {\n const binPath = join(binDir, MANIFEST.binName);\n if (platform !== \"win32\") {\n try {\n chmodSync(binPath, 0o755);\n } catch (e) {\n // Ignore chmod errors on some platforms\n }\n }\n console.log(\\`✅ Installed \\${MANIFEST.binName} v\\${MANIFEST.version}\\`);\n })\n .catch((err) => {\n console.error(\\`❌ Failed to install binary: \\${err.message}\\`);\n console.error(\\` URL: \\${downloadUrl}\\`);\n process.exit(1);\n });\n`;\n}\n\n/**\n * Генерирует простой wrapper скрипт для bin/\n *\n * @param binName - Имя бинарника\n * @returns JavaScript код wrapper скрипта\n */\nexport function generateBinWrapper(binName: string): string {\n return `#!/usr/bin/env node\n\"use strict\";\n\nconst { execFileSync } = require(\"child_process\");\nconst { join } = require(\"path\");\n\nconst ext = process.platform === \"win32\" ? \".exe\" : \"\";\nconst binPath = join(__dirname, \"${binName}\" + ext);\n\ntry {\n execFileSync(binPath, process.argv.slice(2), { stdio: \"inherit\" });\n} catch (err) {\n if (err.status !== undefined) {\n process.exit(err.status);\n }\n throw err;\n}\n`;\n}\n\n/**\n * Создаёт манифест для бинарной дистрибуции\n *\n * @param version - Версия\n * @param binName - Имя бинарника\n * @param assets - Маппинг платформ на URL-ы\n * @returns Манифест\n */\nexport function createBinaryManifest(\n version: string,\n binName: string,\n assets: Partial<Record<BinaryPlatform, string>>,\n): BinaryManifest {\n return {\n assets: assets as Record<BinaryPlatform, string>,\n binName,\n version,\n };\n}\n\n/**\n * Генерирует package.json для мастер-пакета с postinstall\n *\n * @param name - Имя пакета\n * @param version - Версия\n * @param binName - Имя бинарника\n * @param description - Описание пакета\n * @returns Содержимое package.json\n */\nexport function generateMasterPackageJson(\n name: string,\n version: string,\n binName: string,\n description?: string,\n): string {\n const pkg = {\n bin: {\n [binName]: `bin/${binName}.js`,\n },\n description: description ?? `${name} CLI`,\n files: [\"bin\", \"scripts\"],\n license: \"MIT\",\n name,\n scripts: {\n postinstall: \"node scripts/postinstall.js\",\n },\n version,\n };\n\n return JSON.stringify(pkg, null, 2);\n}\n\n/**\n * Опции для записи npm файлов\n */\nexport interface WriteNpmFilesOptions {\n /** Манифест с URL-ами */\n manifest: BinaryManifest;\n /** Имя бинарника для wrapper */\n binName: string;\n /** Настройки npm */\n npmConfig: BinariesNpmConfig;\n /** Базовая директория проекта */\n baseDir?: string;\n /** Dry-run режим */\n dryRun?: boolean;\n}\n\n/**\n * Результат записи npm файлов\n */\nexport interface WriteNpmFilesResult {\n /** Путь к postinstall скрипту */\n postinstallPath: string;\n /** Путь к bin wrapper */\n binWrapperPath: string;\n /** Был ли обновлён package.json */\n packageJsonUpdated: boolean;\n}\n\n/**\n * Записывает postinstall скрипт и bin wrapper в проект\n *\n * @param options - Опции записи\n * @returns Результат записи\n */\nexport async function writeNpmFiles(options: WriteNpmFilesOptions): Promise<WriteNpmFilesResult> {\n const { manifest, binName, npmConfig, baseDir = \".\", dryRun = false } = options;\n\n const scriptsDir = join(baseDir, npmConfig.scriptsDir);\n const binDir = join(baseDir, npmConfig.binDir);\n\n const postinstallPath = join(scriptsDir, \"postinstall.js\");\n const binWrapperPath = join(binDir, `${binName}.js`);\n\n // Генерируем содержимое файлов\n const postinstallContent = generatePostinstallScript(manifest);\n const binWrapperContent = generateBinWrapper(binName);\n\n if (dryRun) {\n console.log(`\\n📝 Would write postinstall script to: ${postinstallPath}`);\n console.log(`📝 Would write bin wrapper to: ${binWrapperPath}`);\n } else {\n // Создаём директории\n await mkdir(scriptsDir, { recursive: true });\n await mkdir(binDir, { recursive: true });\n\n // Записываем файлы\n await writeFile(postinstallPath, postinstallContent, \"utf-8\");\n await writeFile(binWrapperPath, binWrapperContent, { encoding: \"utf-8\", mode: 0o755 });\n\n console.log(`✅ Created postinstall script: ${postinstallPath}`);\n console.log(`✅ Created bin wrapper: ${binWrapperPath}`);\n }\n\n // Обновляем package.json если нужно\n let packageJsonUpdated = false;\n\n if (npmConfig.updatePackageJson) {\n packageJsonUpdated = await updatePackageJsonForBinaries({\n baseDir,\n binDir: npmConfig.binDir,\n binName,\n dryRun,\n scriptsDir: npmConfig.scriptsDir,\n });\n }\n\n return {\n binWrapperPath,\n packageJsonUpdated,\n postinstallPath,\n };\n}\n\n/**\n * Опции для обновления package.json\n */\ninterface UpdatePackageJsonOptions {\n /** Базовая директория проекта */\n baseDir: string;\n /** Имя бинарника */\n binName: string;\n /** Директория скриптов */\n scriptsDir: string;\n /** Директория bin */\n binDir: string;\n /** Dry-run режим */\n dryRun?: boolean;\n}\n\n/**\n * Обновляет package.json с правильными bin и scripts.postinstall\n *\n * @param options - Опции обновления\n * @returns true если файл был обновлён\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Multiple checks for package.json fields\nasync function updatePackageJsonForBinaries(options: UpdatePackageJsonOptions): Promise<boolean> {\n const { baseDir, binName, scriptsDir, binDir, dryRun = false } = options;\n\n const packageJsonPath = join(baseDir, \"package.json\");\n\n try {\n const content = await readFile(packageJsonPath, \"utf-8\");\n const pkg = JSON.parse(content);\n\n let modified = false;\n\n // Обновляем bin\n const expectedBin = `${binDir}/${binName}.js`;\n if (!pkg.bin || pkg.bin[binName] !== expectedBin) {\n pkg.bin = pkg.bin || {};\n pkg.bin[binName] = expectedBin;\n modified = true;\n }\n\n // Обновляем scripts.postinstall\n const expectedPostinstall = `node ${scriptsDir}/postinstall.js`;\n if (!pkg.scripts?.postinstall || pkg.scripts.postinstall !== expectedPostinstall) {\n pkg.scripts = pkg.scripts || {};\n pkg.scripts.postinstall = expectedPostinstall;\n modified = true;\n }\n\n // Добавляем scripts и bin в files если их нет\n if (pkg.files && Array.isArray(pkg.files)) {\n if (!pkg.files.includes(scriptsDir)) {\n pkg.files.push(scriptsDir);\n modified = true;\n }\n if (!pkg.files.includes(binDir)) {\n pkg.files.push(binDir);\n modified = true;\n }\n }\n\n if (modified) {\n if (dryRun) {\n console.log(\"📝 Would update package.json with bin and scripts.postinstall\");\n } else {\n await writeFile(packageJsonPath, `${JSON.stringify(pkg, null, 2)}\\n`, \"utf-8\");\n console.log(\"✅ Updated package.json with bin and scripts.postinstall\");\n }\n return true;\n }\n\n console.log(\"ℹ️ package.json already has correct bin and scripts.postinstall\");\n return false;\n } catch (error) {\n console.warn(`⚠️ Could not update package.json: ${error instanceof Error ? error.message : String(error)}`);\n return false;\n }\n}\n"
|
|
35
|
-
"import { loadConfig, validateBinariesConfig } from \"./config\";\nimport { createReleaseProvider, type GitPlatform } from \"./providers\";\nimport type { AssetLimits } from \"./providers/types\";\nimport type {\n BinariesConfig,\n BinaryCliOptions,\n BinaryDistributionResult,\n BinaryPlatform,\n BinaryUploadResult,\n} from \"./types\";\nimport { formatFileSize, GITVERSE_ASSET_LIMITS, validateAssetBatch } from \"./utils/binary-distribution-provider\";\nimport { getArchivePath, validateAllBinarySources } from \"./utils/binary-platforms\";\nimport { createBinaryManifest, generatePostinstallScript, writeNpmFiles } from \"./utils/binary-postinstall-generator\";\nimport { getCurrentVersion, getRepoInfo } from \"./utils/git\";\nimport { createRetryFunction } from \"./utils/retry\";\n\n/**\n * Интерфейс для загрузки assets\n */\ninterface AssetUploader {\n /** Лимиты платформы */\n limits: AssetLimits;\n /** Загружает asset */\n uploadAsset(filePath: string, assetName: string): Promise<{ downloadUrl: string }>;\n}\n\n/**\n * Задержка между попытками\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Вычисляет задержку с экспоненциальным backoff\n */\nfunction calculateDelay(attempt: number, initialDelay = 2000, maxDelay = 30000): number {\n const delay = initialDelay * 2 ** attempt;\n return Math.min(delay, maxDelay);\n}\n\n/**\n * Публикует бинарники в GitVerse Release\n *\n * Процесс:\n * 1. Загружает конфигурацию и валидирует её\n * 2. Проверяет наличие архивов для всех платформ\n * 3. Валидирует файлы на соответствие лимитам GitVerse\n * 4. Создаёт или находит существующий релиз\n * 5. Загружает архивы как assets в релиз\n * 6. Генерирует postinstall скрипт и manifest\n *\n * @param options - Опции публикации\n * @returns Результат публикации\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Main entry point with many edge cases\nexport async function publishBinaries(options: BinaryCliOptions = {}): Promise<BinaryDistributionResult> {\n const result: BinaryDistributionResult = {\n errors: [],\n success: false,\n uploads: [],\n version: \"\",\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(options.config);\n\n if (!config.binaries?.enabled) {\n result.errors.push(\"Binary distribution is not enabled in config\");\n return result;\n }\n\n validateBinariesConfig(config.binaries);\n\n const binariesConfig = config.binaries;\n\n // Получаем версию\n const version = options.version ?? (await getCurrentVersion(\".\"));\n result.version = version;\n\n // Определяем платформы\n const platforms = options.platforms ?? binariesConfig.platforms;\n\n // Валидируем наличие архивов\n const missingBinaries = await validateAllBinarySources({ ...binariesConfig, platforms });\n\n if (missingBinaries.length > 0) {\n for (const platform of missingBinaries) {\n console.warn(`⚠️ Archive not found for platform: ${platform}`);\n result.warnings.push(`Archive not found for platform: ${platform}`);\n }\n\n if (missingBinaries.length === platforms.length) {\n result.errors.push(\"No archives found for any platform\");\n return result;\n }\n }\n\n // Фильтруем платформы с существующими архивами\n const availablePlatforms = platforms.filter((p) => !missingBinaries.includes(p));\n\n // Получаем пути к архивам\n const archivePaths = availablePlatforms.map((platform) => getArchivePath(binariesConfig, platform));\n\n // Валидируем файлы перед загрузкой\n const batchValidation = await validateAssetBatch(archivePaths);\n\n if (!batchValidation.valid) {\n for (const error of batchValidation.errors) {\n console.error(`❌ ${error}`);\n result.errors.push(error);\n }\n return result;\n }\n\n console.log(\n `\\n📦 Preparing to upload ${availablePlatforms.length} archives (${formatFileSize(batchValidation.totalSize)})\\n`,\n );\n\n if (options.dryRun) {\n console.log(\"🔍 DRY RUN MODE\\n\");\n printDryRun(binariesConfig, version, availablePlatforms);\n result.success = true;\n return result;\n }\n\n // Получаем информацию о репозитории\n const repoInfo = await getRepoInfo();\n\n // Определяем платформу\n const platform: GitPlatform | \"auto\" = config.release?.platform ?? \"auto\";\n const detectedPlatform = platform === \"auto\" ? (repoInfo.platform ?? \"gitverse\") : platform;\n\n console.log(`🔗 Using ${detectedPlatform} release provider`);\n\n // Создаём retry функцию\n const retryFn = config.retry.enabled ? createRetryFunction(config.retry) : undefined;\n\n // Создаём провайдер\n const { provider, platform: _actualPlatform } = createReleaseProvider({\n platform: detectedPlatform,\n repoInfo: {\n host: repoInfo.host ?? \"gitverse.ru\",\n owner: repoInfo.owner,\n repo: repoInfo.repo,\n },\n retryFn,\n });\n\n // Валидируем токен\n const tokenValidation = await provider.validateToken();\n if (!tokenValidation.valid) {\n result.errors.push(tokenValidation.error ?? \"Token validation failed\");\n return result;\n }\n\n console.log(`✅ Authenticated as ${tokenValidation.username}\\n`);\n\n // Определяем тег\n const tagPrefix = config.versioning?.tagPrefix ?? \"v\";\n const tag = options.tag ?? `${tagPrefix}${version}`;\n\n // Ищем или создаём релиз\n let releaseId: number | string;\n\n const existingRelease = await provider.getRelease(tag);\n\n if (existingRelease?.id) {\n releaseId = existingRelease.id;\n console.log(`📋 Using existing release: ${tag} (ID: ${releaseId})`);\n } else {\n // Создаём новый релиз\n console.log(`📋 Creating new release: ${tag}`);\n\n const binName = binariesConfig.binName ?? binariesConfig.name;\n const newRelease = await provider.createRelease(\n tag,\n `${binName} ${version}`,\n `Binary release for ${binName} v${version}`,\n );\n\n releaseId = newRelease.id;\n result.releaseUrl = newRelease.url;\n console.log(`✅ Release created: ${newRelease.url}\\n`);\n }\n\n result.releaseId = typeof releaseId === \"number\" ? releaseId : undefined;\n\n // Загружаем архивы\n console.log(\"🚀 Uploading assets...\\n\");\n\n // Создаём обёртку для загрузки\n const assetUploader: AssetUploader = {\n limits: provider.assetLimits,\n uploadAsset: async (filePath, assetName) => {\n const result = await provider.uploadAsset(releaseId, filePath, assetName);\n return { downloadUrl: result.downloadUrl };\n },\n };\n\n const uploadResults = await uploadAllAssets(\n binariesConfig,\n version,\n availablePlatforms,\n assetUploader,\n options.verbose,\n );\n result.uploads = uploadResults;\n\n const successfulUploads = uploadResults.filter((r) => r.success);\n const failedUploads = uploadResults.filter((r) => !r.success);\n\n // Выводим итоги\n console.log(\"\\n📊 Upload Summary:\");\n console.log(` Total: ${uploadResults.length}`);\n console.log(` Successful: ${successfulUploads.length}`);\n console.log(` Failed: ${failedUploads.length}`);\n\n if (failedUploads.length > 0) {\n console.log(\"\\n❌ Failed uploads:\");\n for (const upload of failedUploads) {\n console.log(` ${upload.platform}: ${upload.error}`);\n result.warnings.push(`Failed to upload ${upload.platform}: ${upload.error}`);\n }\n\n if (!binariesConfig.continueOnError) {\n result.errors.push(\"Some assets failed to upload\");\n return result;\n }\n }\n\n // Генерируем manifest и postinstall скрипт\n if (successfulUploads.length > 0) {\n const assets: Partial<Record<BinaryPlatform, string>> = {};\n for (const upload of successfulUploads) {\n if (upload.success) {\n assets[upload.platform] = upload.downloadUrl;\n }\n }\n\n const binName = binariesConfig.binName ?? binariesConfig.name;\n const manifest = createBinaryManifest(version, binName, assets);\n\n // Если включена генерация npm скриптов - записываем файлы\n if (binariesConfig.npm?.generateScripts !== false) {\n const npmConfig = {\n binDir: binariesConfig.npm?.binDir ?? \"bin\",\n generateScripts: binariesConfig.npm?.generateScripts ?? true,\n scriptsDir: binariesConfig.npm?.scriptsDir ?? \"scripts\",\n updatePackageJson: binariesConfig.npm?.updatePackageJson ?? true,\n };\n\n console.log(\"\\n📦 Generating npm distribution files...\");\n\n await writeNpmFiles({\n binName,\n manifest,\n npmConfig,\n });\n\n console.log(\"\\n💡 Next steps:\");\n console.log(\" 1. Review generated files in scripts/ and bin/\");\n console.log(\" 2. Run: npm publish (or bun publish)\");\n console.log(` 3. Users install with: npm install ${binariesConfig.name}`);\n } else {\n // Старое поведение - выводим в консоль\n console.log(\"\\n📝 Generated manifest:\");\n console.log(JSON.stringify(manifest, null, 2));\n\n console.log(\"\\n📜 Postinstall script:\");\n console.log(\"---\");\n console.log(generatePostinstallScript(manifest));\n console.log(\"---\");\n }\n }\n\n result.success = successfulUploads.length > 0;\n\n if (result.success) {\n console.log(\"\\n✅ Binary distribution completed successfully!\");\n }\n } catch (error) {\n result.errors.push(error instanceof Error ? error.message : String(error));\n console.error(\"\\n❌ Binary distribution failed:\");\n console.error(error);\n }\n\n return result;\n}\n\n/**\n * Загружает все assets в релиз\n */\nasync function uploadAllAssets(\n config: BinariesConfig,\n _version: string,\n platforms: BinaryPlatform[],\n uploader: AssetUploader,\n verbose = false,\n): Promise<BinaryUploadResult[]> {\n const results: BinaryUploadResult[] = [];\n\n // Загружаем последовательно с учётом лимитов платформы\n const batchSize = Math.min(uploader.limits.maxFilesPerUpload, 3);\n\n for (let i = 0; i < platforms.length; i += batchSize) {\n const batch = platforms.slice(i, i + batchSize);\n\n const batchResults = await Promise.all(\n batch.map((platform) => uploadAssetWithRetry(config, platform, uploader, verbose)),\n );\n\n results.push(...batchResults);\n\n // Небольшая задержка между батчами\n if (i + batchSize < platforms.length) {\n await sleep(500);\n }\n }\n\n return results;\n}\n\n/**\n * Загружает один asset с retry\n */\nasync function uploadAssetWithRetry(\n config: BinariesConfig,\n platform: BinaryPlatform,\n uploader: AssetUploader,\n verbose = false,\n): Promise<BinaryUploadResult> {\n const archivePath = getArchivePath(config, platform);\n const assetName = `${config.name}-${platform}.tar.gz`;\n\n let lastError: Error | undefined;\n let attempts = 0;\n\n for (let attempt = 0; attempt < config.retryAttempts; attempt++) {\n attempts = attempt + 1;\n\n try {\n if (verbose) {\n console.log(`📤 Uploading ${assetName} (attempt ${attempts}/${config.retryAttempts})...`);\n }\n\n const result = await uploader.uploadAsset(archivePath, assetName);\n\n if (verbose) {\n console.log(`✅ Uploaded ${assetName}: ${result.downloadUrl}`);\n } else {\n console.log(` ✅ ${platform}`);\n }\n\n return {\n assetName,\n attempts,\n downloadUrl: result.downloadUrl,\n platform,\n success: true as const,\n };\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n if (attempt < config.retryAttempts - 1) {\n const delay = calculateDelay(attempt);\n console.warn(`⚠️ Upload failed for ${assetName} (attempt ${attempts}/${config.retryAttempts})`);\n console.warn(` ${lastError.message}`);\n console.warn(` Retrying in ${delay}ms...`);\n await sleep(delay);\n }\n }\n }\n\n console.error(`❌ Failed to upload ${assetName}: ${lastError?.message}`);\n\n return {\n assetName,\n attempts,\n error: lastError?.message ?? \"Unknown error\",\n platform,\n success: false as const,\n };\n}\n\n/**\n * Печатает информацию в dry-run режиме\n */\nfunction printDryRun(config: BinariesConfig, version: string, platforms: BinaryPlatform[]): void {\n const binName = config.binName ?? config.name;\n\n console.log(\"📦 Binary Distribution:\");\n console.log(` Name: ${config.name}`);\n console.log(` Binary name: ${binName}`);\n console.log(` Version: ${version}`);\n console.log(` Platforms: ${platforms.join(\", \")}`);\n console.log(` Input format: ${config.inputFormat ?? \"tar.gz\"}`);\n\n console.log(\"\\n📁 Archives to upload:\");\n for (const platform of platforms) {\n const archivePath = getArchivePath(config, platform);\n const assetName = `${config.name}-${platform}.tar.gz`;\n console.log(` ${platform}:`);\n console.log(` Source: ${archivePath}`);\n console.log(` Asset name: ${assetName}`);\n }\n\n // Показываем лимиты GitVerse по умолчанию в dry-run\n // В реальном режиме будут использоваться лимиты из провайдера\n console.log(\"\\n🔒 Default Asset Limits (GitVerse):\");\n console.log(` Max file size: ${formatFileSize(GITVERSE_ASSET_LIMITS.maxFileSizeBytes)}`);\n console.log(` Max files per upload: ${GITVERSE_ASSET_LIMITS.maxFilesPerUpload}`);\n console.log(` Max total size: ${formatFileSize(GITVERSE_ASSET_LIMITS.maxTotalSizeBytes)}`);\n console.log(\" Note: Actual limits depend on detected platform\");\n\n // Показываем что будет сгенерировано для npm\n if (config.npm?.generateScripts !== false) {\n const scriptsDir = config.npm?.scriptsDir ?? \"scripts\";\n const binDir = config.npm?.binDir ?? \"bin\";\n\n console.log(\"\\n📝 NPM distribution files to generate:\");\n console.log(` Postinstall script: ${scriptsDir}/postinstall.js`);\n console.log(` Bin wrapper: ${binDir}/${binName}.js`);\n if (config.npm?.updatePackageJson !== false) {\n console.log(\" package.json: will be updated with bin and scripts.postinstall\");\n }\n }\n}\n"
|
|
35
|
+
"import { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport type { BinariesNpmConfig, BinaryManifest, BinaryPlatform } from \"../types\";\n\n/**\n * Генерирует postinstall скрипт для скачивания бинарника\n *\n * @param manifest - Манифест с URL-ами для скачивания\n * @returns JavaScript код postinstall скрипта\n */\nexport function generatePostinstallScript(manifest: BinaryManifest): string {\n return `#!/usr/bin/env node\n\"use strict\";\n\nconst { platform, arch } = process;\nconst https = require(\"https\");\nconst http = require(\"http\");\nconst { createWriteStream, chmodSync, mkdirSync } = require(\"fs\");\nconst { join } = require(\"path\");\nconst { createGunzip } = require(\"zlib\");\nconst tar = require(\"tar\");\n\nconst MANIFEST = ${JSON.stringify(manifest, null, 2)};\n\nconst platformKey = \\`\\${platform}-\\${arch}\\`;\nconst downloadUrl = MANIFEST.assets[platformKey];\n\nif (!downloadUrl) {\n console.warn(\\`⚠️ No binary available for \\${platformKey}, skipping installation\\`);\n console.warn(\\` Supported platforms: \\${Object.keys(MANIFEST.assets).join(\", \")}\\`);\n process.exit(0);\n}\n\nconst binDir = join(__dirname, \"..\", \"bin\");\nmkdirSync(binDir, { recursive: true });\n\n/**\n * Downloads and extracts a tar.gz archive\n */\nfunction download(url, redirectCount = 0) {\n if (redirectCount > 5) {\n return Promise.reject(new Error(\"Too many redirects\"));\n }\n\n return new Promise((resolve, reject) => {\n const protocol = url.startsWith(\"https\") ? https : http;\n\n const request = protocol.get(url, (res) => {\n // Handle redirects\n if (res.statusCode === 301 || res.statusCode === 302 || res.statusCode === 307 || res.statusCode === 308) {\n const location = res.headers.location;\n if (!location) {\n reject(new Error(\"Redirect without location header\"));\n return;\n }\n download(location, redirectCount + 1).then(resolve).catch(reject);\n return;\n }\n\n if (res.statusCode !== 200) {\n reject(new Error(\\`Download failed: HTTP \\${res.statusCode}\\`));\n return;\n }\n\n res\n .pipe(createGunzip())\n .pipe(tar.extract({ cwd: binDir }))\n .on(\"finish\", resolve)\n .on(\"error\", reject);\n });\n\n request.on(\"error\", reject);\n request.setTimeout(30000, () => {\n request.destroy();\n reject(new Error(\"Download timeout\"));\n });\n });\n}\n\nconsole.log(\\`📦 Installing \\${MANIFEST.binName} for \\${platformKey}...\\`);\n\ndownload(downloadUrl)\n .then(() => {\n const binPath = join(binDir, MANIFEST.binName);\n if (platform !== \"win32\") {\n try {\n chmodSync(binPath, 0o755);\n } catch (e) {\n // Ignore chmod errors on some platforms\n }\n }\n console.log(\\`✅ Installed \\${MANIFEST.binName} v\\${MANIFEST.version}\\`);\n })\n .catch((err) => {\n console.error(\\`❌ Failed to install binary: \\${err.message}\\`);\n console.error(\\` URL: \\${downloadUrl}\\`);\n process.exit(1);\n });\n`;\n}\n\n/**\n * Генерирует простой wrapper скрипт для bin/\n *\n * @param binName - Имя бинарника\n * @returns JavaScript код wrapper скрипта\n */\nexport function generateBinWrapper(binName: string): string {\n return `#!/usr/bin/env node\n\"use strict\";\n\nconst { execFileSync } = require(\"child_process\");\nconst { join } = require(\"path\");\n\nconst ext = process.platform === \"win32\" ? \".exe\" : \"\";\nconst binPath = join(__dirname, \"${binName}\" + ext);\n\ntry {\n execFileSync(binPath, process.argv.slice(2), { stdio: \"inherit\" });\n} catch (err) {\n if (err.status !== undefined) {\n process.exit(err.status);\n }\n throw err;\n}\n`;\n}\n\n/**\n * Создаёт манифест для бинарной дистрибуции\n *\n * @param version - Версия\n * @param binName - Имя бинарника\n * @param assets - Маппинг платформ на URL-ы\n * @returns Манифест\n */\nexport function createBinaryManifest(\n version: string,\n binName: string,\n assets: Partial<Record<BinaryPlatform, string>>,\n): BinaryManifest {\n return {\n assets: assets as Record<BinaryPlatform, string>,\n binName,\n version,\n };\n}\n\n/**\n * Генерирует package.json для мастер-пакета с postinstall\n *\n * @param name - Имя пакета\n * @param version - Версия\n * @param binName - Имя бинарника\n * @param description - Описание пакета\n * @returns Содержимое package.json\n */\nexport function generateMasterPackageJson(\n name: string,\n version: string,\n binName: string,\n description?: string,\n): string {\n const pkg = {\n bin: {\n [binName]: `bin/${binName}.js`,\n },\n description: description ?? `${name} CLI`,\n files: [\"bin\", \"scripts\"],\n license: \"MIT\",\n name,\n scripts: {\n postinstall: \"node scripts/postinstall.js\",\n },\n version,\n };\n\n return JSON.stringify(pkg, null, 2);\n}\n\n/**\n * Опции для записи npm файлов\n */\nexport interface WriteNpmFilesOptions {\n /** Манифест с URL-ами */\n manifest: BinaryManifest;\n /** Имя бинарника для wrapper */\n binName: string;\n /** Настройки npm */\n npmConfig: BinariesNpmConfig;\n /** Базовая директория проекта */\n baseDir?: string;\n /** Dry-run режим */\n dryRun?: boolean;\n}\n\n/**\n * Результат записи npm файлов\n */\nexport interface WriteNpmFilesResult {\n /** Путь к postinstall скрипту */\n postinstallPath: string;\n /** Путь к bin wrapper */\n binWrapperPath: string;\n /** Был ли обновлён package.json */\n packageJsonUpdated: boolean;\n}\n\n/**\n * Записывает postinstall скрипт и bin wrapper в проект\n *\n * @param options - Опции записи\n * @returns Результат записи\n */\nexport async function writeNpmFiles(options: WriteNpmFilesOptions): Promise<WriteNpmFilesResult> {\n const { manifest, binName, npmConfig, baseDir = \".\", dryRun = false } = options;\n\n const scriptsDir = join(baseDir, npmConfig.scriptsDir);\n const binDir = join(baseDir, npmConfig.binDir);\n\n const postinstallPath = join(scriptsDir, \"postinstall.js\");\n const binWrapperPath = join(binDir, `${binName}.js`);\n\n // Генерируем содержимое файлов\n const postinstallContent = generatePostinstallScript(manifest);\n const binWrapperContent = generateBinWrapper(binName);\n\n if (dryRun) {\n console.log(`\\n📝 Would write postinstall script to: ${postinstallPath}`);\n console.log(`📝 Would write bin wrapper to: ${binWrapperPath}`);\n } else {\n // Создаём директории\n await mkdir(scriptsDir, { recursive: true });\n await mkdir(binDir, { recursive: true });\n\n // Записываем файлы\n await writeFile(postinstallPath, postinstallContent, \"utf-8\");\n await writeFile(binWrapperPath, binWrapperContent, { encoding: \"utf-8\", mode: 0o755 });\n\n console.log(`✅ Created postinstall script: ${postinstallPath}`);\n console.log(`✅ Created bin wrapper: ${binWrapperPath}`);\n }\n\n // Обновляем package.json если нужно\n let packageJsonUpdated = false;\n\n if (npmConfig.updatePackageJson) {\n packageJsonUpdated = await updatePackageJsonForBinaries({\n baseDir,\n binDir: npmConfig.binDir,\n binName,\n dryRun,\n scriptsDir: npmConfig.scriptsDir,\n });\n }\n\n return {\n binWrapperPath,\n packageJsonUpdated,\n postinstallPath,\n };\n}\n\n/**\n * Опции для обновления package.json\n */\ninterface UpdatePackageJsonOptions {\n /** Базовая директория проекта */\n baseDir: string;\n /** Имя бинарника */\n binName: string;\n /** Директория скриптов */\n scriptsDir: string;\n /** Директория bin */\n binDir: string;\n /** Dry-run режим */\n dryRun?: boolean;\n}\n\n/**\n * Обновляет package.json с правильными bin и scripts.postinstall\n *\n * @param options - Опции обновления\n * @returns true если файл был обновлён\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Multiple checks for package.json fields\nasync function updatePackageJsonForBinaries(options: UpdatePackageJsonOptions): Promise<boolean> {\n const { baseDir, binName, scriptsDir, binDir, dryRun = false } = options;\n\n const packageJsonPath = join(baseDir, \"package.json\");\n\n try {\n const content = await readFile(packageJsonPath, \"utf-8\");\n const pkg = JSON.parse(content);\n\n let modified = false;\n\n // Обновляем bin\n const expectedBin = `${binDir}/${binName}.js`;\n if (!pkg.bin || pkg.bin[binName] !== expectedBin) {\n pkg.bin = pkg.bin || {};\n pkg.bin[binName] = expectedBin;\n modified = true;\n }\n\n // Обновляем scripts.postinstall\n const expectedPostinstall = `node ${scriptsDir}/postinstall.js`;\n if (!pkg.scripts?.postinstall || pkg.scripts.postinstall !== expectedPostinstall) {\n pkg.scripts = pkg.scripts || {};\n pkg.scripts.postinstall = expectedPostinstall;\n modified = true;\n }\n\n // Добавляем scripts и bin в files если их нет\n if (pkg.files && Array.isArray(pkg.files)) {\n if (!pkg.files.includes(scriptsDir)) {\n pkg.files.push(scriptsDir);\n modified = true;\n }\n if (!pkg.files.includes(binDir)) {\n pkg.files.push(binDir);\n modified = true;\n }\n }\n\n if (modified) {\n if (dryRun) {\n console.log(\"📝 Would update package.json with bin and scripts.postinstall\");\n } else {\n await writeFile(packageJsonPath, `${JSON.stringify(pkg, null, 2)}\\n`, \"utf-8\");\n console.log(\"✅ Updated package.json with bin and scripts.postinstall\");\n }\n return true;\n }\n\n console.log(\"ℹ️ package.json already has correct bin and scripts.postinstall\");\n return false;\n } catch (error) {\n console.warn(`⚠️ Could not update package.json: ${error instanceof Error ? error.message : String(error)}`);\n return false;\n }\n}\n"
|
|
36
36
|
],
|
|
37
|
-
"mappings": "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",
|
|
38
|
-
"debugId": "
|
|
37
|
+
"mappings": "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",
|
|
38
|
+
"debugId": "038F785E00B790EF64756E2164756E21",
|
|
39
39
|
"names": []
|
|
40
40
|
}
|