@eldrforge/kodrdriv 0.0.29 → 0.0.32
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/arguments.js +7 -4
- package/dist/arguments.js.map +1 -1
- package/dist/commands/publish-tree.js +60 -12
- package/dist/commands/publish-tree.js.map +1 -1
- package/dist/commands/publish.js +53 -5
- package/dist/commands/publish.js.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/util/github.js +157 -8
- package/dist/util/github.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sources":["../../src/commands/publish.ts"],"sourcesContent":["import path from 'path';\nimport * as Commit from './commit';\nimport * as Diff from '../content/diff';\nimport * as Release from './release';\nimport * as Link from './link';\nimport * as Unlink from './unlink';\nimport { getLogger } from '../logging';\nimport { Config, PullRequest } from '../types';\nimport { run, runWithDryRunSupport } from '../util/child';\nimport * as GitHub from '../util/github';\nimport { create as createStorage } from '../util/storage';\nimport { incrementPatchVersion, getOutputPath } from '../util/general';\nimport { DEFAULT_OUTPUT_DIRECTORY } from '../constants';\n\nconst scanNpmrcForEnvVars = async (storage: any): Promise<string[]> => {\n const npmrcPath = path.join(process.cwd(), '.npmrc');\n const envVars: string[] = [];\n\n if (await storage.exists(npmrcPath)) {\n try {\n const npmrcContent = await storage.readFile(npmrcPath, 'utf-8');\n // Match environment variable patterns like ${VAR_NAME} or $VAR_NAME\n const envVarMatches = npmrcContent.match(/\\$\\{([^}]+)\\}|\\$([A-Z_][A-Z0-9_]*)/g);\n\n if (envVarMatches) {\n for (const match of envVarMatches) {\n // Extract variable name from ${VAR_NAME} or $VAR_NAME format\n const varName = match.replace(/\\$\\{|\\}|\\$/g, '');\n if (varName && !envVars.includes(varName)) {\n envVars.push(varName);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n // If we can't read .npmrc, that's okay - just continue\n }\n }\n\n return envVars;\n};\n\nconst validateEnvironmentVariables = (requiredEnvVars: string[], isDryRun: boolean): void => {\n const logger = getLogger();\n const missingEnvVars: string[] = [];\n\n for (const envVar of requiredEnvVars) {\n if (!process.env[envVar]) {\n missingEnvVars.push(envVar);\n }\n }\n\n if (missingEnvVars.length > 0) {\n if (isDryRun) {\n logger.warn(`DRY RUN: Missing required environment variables: ${missingEnvVars.join(', ')}`);\n } else {\n logger.error(`Missing required environment variables: ${missingEnvVars.join(', ')}`);\n throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}. Please set these environment variables before running publish.`);\n }\n }\n};\n\nconst runPrechecks = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n const isDryRun = runConfig.dryRun || false;\n\n logger.info(isDryRun ? 'DRY RUN: Running prechecks...' : 'Running prechecks...');\n\n // Check if we're in a git repository\n try {\n if (isDryRun) {\n logger.info('DRY RUN: Would check git repository with: git rev-parse --git-dir');\n } else {\n await run('git rev-parse --git-dir');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Not in a git repository. Please run this command from within a git repository.');\n }\n }\n\n // Check for uncommitted changes\n logger.info(isDryRun ? 'DRY RUN: Would check for uncommitted changes...' : 'Checking for uncommitted changes...');\n try {\n if (isDryRun) {\n logger.info('DRY RUN: Would check git status with: git status --porcelain');\n } else {\n const { stdout } = await run('git status --porcelain');\n if (stdout.trim()) {\n throw new Error('Working directory has uncommitted changes. Please commit or stash your changes before running publish.');\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Failed to check git status. Please ensure you are in a valid git repository.');\n }\n }\n\n // Check if we're on a release branch\n logger.info(isDryRun ? 'DRY RUN: Would check current branch...' : 'Checking current branch...');\n if (isDryRun) {\n logger.info('DRY RUN: Would verify current branch is a release branch (starts with \"release/\")');\n } else {\n const currentBranch = await GitHub.getCurrentBranchName();\n if (!currentBranch.startsWith('release/')) {\n throw new Error(`Current branch '${currentBranch}' is not a release branch. Please switch to a release branch (e.g., release/1.0.0) before running publish.`);\n }\n }\n\n // Check if prepublishOnly script exists in package.json\n logger.info(isDryRun ? 'DRY RUN: Would check for prepublishOnly script...' : 'Checking for prepublishOnly script...');\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n\n if (!await storage.exists(packageJsonPath)) {\n if (!isDryRun) {\n throw new Error('package.json not found in current directory.');\n } else {\n logger.warn('DRY RUN: package.json not found in current directory.');\n }\n } else {\n let packageJson;\n try {\n const packageJsonContents = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContents);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Failed to parse package.json. Please ensure it contains valid JSON.');\n } else {\n logger.warn('DRY RUN: Failed to parse package.json. Please ensure it contains valid JSON.');\n }\n }\n\n if (packageJson && !packageJson.scripts?.prepublishOnly) {\n if (!isDryRun) {\n throw new Error('prepublishOnly script is required in package.json but was not found. Please add a prepublishOnly script that runs your pre-flight checks (e.g., clean, lint, build, test).');\n } else {\n logger.warn('DRY RUN: prepublishOnly script is required in package.json but was not found.');\n }\n }\n }\n\n // Check required environment variables\n logger.verbose(isDryRun ? 'DRY RUN: Would check required environment variables...' : 'Checking required environment variables...');\n const coreRequiredEnvVars = runConfig.publish?.requiredEnvVars || [];\n const npmrcEnvVars = isDryRun ? [] : await scanNpmrcForEnvVars(storage); // Skip .npmrc scan in dry run\n const allRequiredEnvVars = [...new Set([...coreRequiredEnvVars, ...npmrcEnvVars])];\n\n if (allRequiredEnvVars.length > 0) {\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Required environment variables: ${allRequiredEnvVars.join(', ')}`);\n validateEnvironmentVariables(allRequiredEnvVars, isDryRun);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: No required environment variables specified.' : 'No required environment variables specified.');\n }\n\n logger.info(isDryRun ? 'DRY RUN: All prechecks would pass.' : 'All prechecks passed.');\n};\n\nexport const execute = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n const isDryRun = runConfig.dryRun || false;\n\n // Run prechecks before starting any work\n await runPrechecks(runConfig);\n\n logger.info(isDryRun ? 'DRY RUN: Would start release process...' : 'Starting release process...');\n\n try {\n // Unlink all workspace packages before starting (if enabled)\n const shouldUnlink = runConfig.publish?.unlinkWorkspacePackages !== false; // default to true\n if (shouldUnlink) {\n logger.verbose(isDryRun ? 'DRY RUN: Would unlink workspace packages...' : 'Unlinking workspace packages...');\n await Unlink.execute(runConfig);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: Would skip unlink workspace packages (disabled in config).' : 'Skipping unlink workspace packages (disabled in config).');\n }\n\n let pr: PullRequest | null = null;\n\n if (isDryRun) {\n logger.info('DRY RUN: Would check for existing pull request');\n logger.info('DRY RUN: Assuming no existing PR found for demo purposes');\n } else {\n const branchName = await GitHub.getCurrentBranchName();\n pr = await GitHub.findOpenPullRequestByHeadRef(branchName);\n }\n\n if (pr) {\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Found existing pull request for branch: ${pr.html_url}`);\n } else {\n logger.info(isDryRun ? 'DRY RUN: No open pull request found, would start new release publishing process...' : 'No open pull request found, starting new release publishing process...');\n // 1. Prepare for release\n logger.verbose(isDryRun ? 'DRY RUN: Would prepare for release: switching from workspace to remote dependencies.' : 'Preparing for release: switching from workspace to remote dependencies.');\n\n logger.verbose(isDryRun ? 'DRY RUN: Would update dependencies to latest versions from registry' : 'Updating dependencies to latest versions from registry');\n const updatePatterns = runConfig.publish?.dependencyUpdatePatterns;\n if (updatePatterns && updatePatterns.length > 0) {\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Updating dependencies matching patterns: ${updatePatterns.join(', ')}`);\n const patternsArg = updatePatterns.join(' ');\n await runWithDryRunSupport(`pnpm update --latest ${patternsArg}`, isDryRun);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: No dependency update patterns specified, would update all dependencies' : 'No dependency update patterns specified, updating all dependencies');\n await runWithDryRunSupport('pnpm update --latest', isDryRun);\n }\n\n logger.verbose(isDryRun ? 'DRY RUN: Would stage changes for release commit' : 'Staging changes for release commit');\n await runWithDryRunSupport('git add package.json pnpm-lock.yaml', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would run prepublishOnly script...' : 'Running prepublishOnly script...');\n await runWithDryRunSupport('pnpm run prepublishOnly', isDryRun);\n\n logger.verbose(isDryRun ? 'DRY RUN: Would check for staged changes...' : 'Checking for staged changes...');\n if (isDryRun) {\n logger.verbose('DRY RUN: Assuming staged changes exist for demo purposes');\n logger.verbose('DRY RUN: Would create commit...');\n await Commit.execute(runConfig);\n } else {\n if (await Diff.hasStagedChanges()) {\n logger.verbose('Staged changes found, creating commit...');\n await Commit.execute(runConfig);\n } else {\n logger.verbose('No changes to commit, skipping commit.');\n }\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would bump version...' : 'Bumping version...');\n // Manually increment version without creating a tag\n if (isDryRun) {\n logger.info('DRY RUN: Would manually increment patch version in package.json and commit');\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const packageJson = JSON.parse(packageJsonContents);\n const currentVersion = packageJson.version;\n const newVersion = incrementPatchVersion(currentVersion);\n packageJson.version = newVersion;\n await storage.writeFile('package.json', JSON.stringify(packageJson, null, 2) + '\\n', 'utf-8');\n logger.info(`Version bumped from ${currentVersion} to ${newVersion}`);\n\n // Stage and commit the version change\n await run('git add package.json');\n await run(`git commit -m \"chore: bump version to ${newVersion}\"`);\n logger.info(`Version change committed: ${newVersion}`);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would generate release notes...' : 'Generating release notes...');\n const releaseSummary = await Release.execute(runConfig);\n\n if (isDryRun) {\n logger.info('DRY RUN: Would write release notes to RELEASE_NOTES.md and RELEASE_TITLE.md in output directory');\n } else {\n const outputDirectory = runConfig.outputDirectory || DEFAULT_OUTPUT_DIRECTORY;\n await storage.ensureDirectory(outputDirectory);\n\n const releaseNotesPath = getOutputPath(outputDirectory, 'RELEASE_NOTES.md');\n const releaseTitlePath = getOutputPath(outputDirectory, 'RELEASE_TITLE.md');\n\n await storage.writeFile(releaseNotesPath, releaseSummary.body, 'utf-8');\n await storage.writeFile(releaseTitlePath, releaseSummary.title, 'utf-8');\n logger.info(`Release notes and title generated and saved to ${releaseNotesPath} and ${releaseTitlePath}.`);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would push to origin...' : 'Pushing to origin...');\n await runWithDryRunSupport('git push', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would create pull request...' : 'Creating pull request...');\n if (isDryRun) {\n logger.info('DRY RUN: Would get commit title and create PR with GitHub API');\n pr = { number: 123, html_url: 'https://github.com/mock/repo/pull/123', labels: [] } as PullRequest;\n } else {\n const { stdout: commitTitle } = await run('git log -1 --pretty=%B');\n pr = await GitHub.createPullRequest(commitTitle, 'Automated release PR.', await GitHub.getCurrentBranchName());\n if (!pr) {\n throw new Error('Failed to create pull request.');\n }\n logger.info(`Pull request created: ${pr.html_url}`);\n }\n }\n\n logger.info(`${isDryRun ? 'DRY RUN: Would wait for' : 'Waiting for'} PR #${pr!.number} checks to complete...`);\n if (!isDryRun) {\n // Configure timeout and user confirmation behavior\n const timeout = runConfig.publish?.checksTimeout || 300000; // 5 minutes default\n const senditMode = runConfig.publish?.sendit || false;\n // sendit flag overrides skipUserConfirmation - if sendit is true, skip confirmation\n const skipUserConfirmation = senditMode || runConfig.publish?.skipUserConfirmation || false;\n\n await GitHub.waitForPullRequestChecks(pr!.number, {\n timeout,\n skipUserConfirmation\n });\n }\n\n const mergeMethod = runConfig.publish?.mergeMethod || 'squash';\n if (isDryRun) {\n logger.info(`DRY RUN: Would merge PR #${pr!.number} using ${mergeMethod} method`);\n } else {\n await GitHub.mergePullRequest(pr!.number, mergeMethod);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would checkout main branch...' : 'Checking out main branch...');\n await runWithDryRunSupport('git checkout main', isDryRun);\n await runWithDryRunSupport('git pull origin main', isDryRun);\n\n // Now create and push the tag on the main branch\n logger.info(isDryRun ? 'DRY RUN: Would create release tag...' : 'Creating release tag...');\n if (isDryRun) {\n logger.info('DRY RUN: Would read package.json version and create git tag');\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const tagName = `v${version}`;\n await run(`git tag ${tagName}`);\n await run(`git push origin ${tagName}`);\n logger.info(`Created and pushed tag: ${tagName}`);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would create GitHub release...' : 'Creating GitHub release...');\n let tagName: string;\n if (isDryRun) {\n logger.info('DRY RUN: Would read package.json version and create GitHub release');\n tagName = 'v1.0.0'; // Mock version for dry run\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n tagName = `v${version}`;\n\n const outputDirectory = runConfig.outputDirectory || DEFAULT_OUTPUT_DIRECTORY;\n const releaseNotesPath = getOutputPath(outputDirectory, 'RELEASE_NOTES.md');\n const releaseTitlePath = getOutputPath(outputDirectory, 'RELEASE_TITLE.md');\n\n const releaseNotesContent = await storage.readFile(releaseNotesPath, 'utf-8');\n const releaseTitle = await storage.readFile(releaseTitlePath, 'utf-8');\n await GitHub.createRelease(tagName, releaseTitle, releaseNotesContent);\n }\n\n // Wait for release workflows to complete (if enabled)\n const waitForWorkflows = runConfig.publish?.waitForReleaseWorkflows !== false; // default to true\n if (waitForWorkflows) {\n logger.info(isDryRun ? 'DRY RUN: Would wait for release workflows...' : 'Waiting for release workflows...');\n if (isDryRun) {\n logger.info('DRY RUN: Would monitor GitHub Actions workflows triggered by release');\n } else {\n const workflowTimeout = runConfig.publish?.releaseWorkflowsTimeout || 600000; // 10 minutes default\n const senditMode = runConfig.publish?.sendit || false;\n const skipUserConfirmation = senditMode || runConfig.publish?.skipUserConfirmation || false;\n const workflowNames = runConfig.publish?.releaseWorkflowNames;\n\n await GitHub.waitForReleaseWorkflows(tagName, {\n timeout: workflowTimeout,\n workflowNames,\n skipUserConfirmation\n });\n }\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: Would skip waiting for release workflows (disabled in config).' : 'Skipping waiting for release workflows (disabled in config).');\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would create new release branch...' : 'Creating new release branch...');\n if (isDryRun) {\n logger.info('DRY RUN: Would create next release branch (e.g., release/1.0.1) and push to origin');\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const nextVersion = incrementPatchVersion(version);\n const newBranchName = `release/${nextVersion}`;\n await run(`git checkout -b ${newBranchName}`);\n await run(`git push -u origin ${newBranchName}`);\n logger.info(`Branch ${newBranchName} created and pushed to origin.`);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Preparation would be complete.' : 'Preparation complete.');\n } finally {\n // Restore linked packages (if enabled)\n const shouldLink = runConfig.publish?.linkWorkspacePackages !== false; // default to true\n if (shouldLink) {\n logger.verbose(isDryRun ? 'DRY RUN: Would restore linked packages...' : 'Restoring linked packages...');\n await Link.execute(runConfig);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: Would skip restore linked packages (disabled in config).' : 'Skipping restore linked packages (disabled in config).');\n }\n }\n};\n"],"names":["scanNpmrcForEnvVars","storage","npmrcPath","path","join","process","cwd","envVars","exists","npmrcContent","readFile","envVarMatches","match","varName","replace","includes","push","error","validateEnvironmentVariables","requiredEnvVars","isDryRun","logger","getLogger","missingEnvVars","envVar","env","length","warn","Error","runPrechecks","runConfig","createStorage","log","info","dryRun","run","stdout","trim","currentBranch","GitHub","startsWith","packageJsonPath","packageJson","packageJsonContents","JSON","parse","scripts","prepublishOnly","verbose","coreRequiredEnvVars","publish","npmrcEnvVars","allRequiredEnvVars","Set","execute","shouldUnlink","unlinkWorkspacePackages","Unlink","pr","branchName","html_url","updatePatterns","dependencyUpdatePatterns","patternsArg","runWithDryRunSupport","Commit","Diff","currentVersion","version","newVersion","incrementPatchVersion","writeFile","stringify","releaseSummary","Release","outputDirectory","DEFAULT_OUTPUT_DIRECTORY","ensureDirectory","releaseNotesPath","getOutputPath","releaseTitlePath","body","title","number","labels","commitTitle","timeout","checksTimeout","senditMode","sendit","skipUserConfirmation","mergeMethod","tagName","releaseNotesContent","releaseTitle","waitForWorkflows","waitForReleaseWorkflows","workflowTimeout","releaseWorkflowsTimeout","workflowNames","releaseWorkflowNames","nextVersion","newBranchName","shouldLink","linkWorkspacePackages","Link"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"publish.js","sources":["../../src/commands/publish.ts"],"sourcesContent":["import path from 'path';\nimport * as Commit from './commit';\nimport * as Diff from '../content/diff';\nimport * as Release from './release';\nimport * as Link from './link';\nimport * as Unlink from './unlink';\nimport { getLogger } from '../logging';\nimport { Config, PullRequest } from '../types';\nimport { run, runWithDryRunSupport } from '../util/child';\nimport * as GitHub from '../util/github';\nimport { create as createStorage } from '../util/storage';\nimport { incrementPatchVersion, getOutputPath } from '../util/general';\nimport { DEFAULT_OUTPUT_DIRECTORY } from '../constants';\n\nconst scanNpmrcForEnvVars = async (storage: any): Promise<string[]> => {\n const npmrcPath = path.join(process.cwd(), '.npmrc');\n const envVars: string[] = [];\n\n if (await storage.exists(npmrcPath)) {\n try {\n const npmrcContent = await storage.readFile(npmrcPath, 'utf-8');\n // Match environment variable patterns like ${VAR_NAME} or $VAR_NAME\n const envVarMatches = npmrcContent.match(/\\$\\{([^}]+)\\}|\\$([A-Z_][A-Z0-9_]*)/g);\n\n if (envVarMatches) {\n for (const match of envVarMatches) {\n // Extract variable name from ${VAR_NAME} or $VAR_NAME format\n const varName = match.replace(/\\$\\{|\\}|\\$/g, '');\n if (varName && !envVars.includes(varName)) {\n envVars.push(varName);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n // If we can't read .npmrc, that's okay - just continue\n }\n }\n\n return envVars;\n};\n\nconst validateEnvironmentVariables = (requiredEnvVars: string[], isDryRun: boolean): void => {\n const logger = getLogger();\n const missingEnvVars: string[] = [];\n\n for (const envVar of requiredEnvVars) {\n if (!process.env[envVar]) {\n missingEnvVars.push(envVar);\n }\n }\n\n if (missingEnvVars.length > 0) {\n if (isDryRun) {\n logger.warn(`DRY RUN: Missing required environment variables: ${missingEnvVars.join(', ')}`);\n } else {\n logger.error(`Missing required environment variables: ${missingEnvVars.join(', ')}`);\n throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}. Please set these environment variables before running publish.`);\n }\n }\n};\n\nconst runPrechecks = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n const isDryRun = runConfig.dryRun || false;\n\n logger.info(isDryRun ? 'DRY RUN: Running prechecks...' : 'Running prechecks...');\n\n // Check if we're in a git repository\n try {\n if (isDryRun) {\n logger.info('DRY RUN: Would check git repository with: git rev-parse --git-dir');\n } else {\n await run('git rev-parse --git-dir');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Not in a git repository. Please run this command from within a git repository.');\n }\n }\n\n // Check for uncommitted changes\n logger.info(isDryRun ? 'DRY RUN: Would check for uncommitted changes...' : 'Checking for uncommitted changes...');\n try {\n if (isDryRun) {\n logger.info('DRY RUN: Would check git status with: git status --porcelain');\n } else {\n const { stdout } = await run('git status --porcelain');\n if (stdout.trim()) {\n throw new Error('Working directory has uncommitted changes. Please commit or stash your changes before running publish.');\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Failed to check git status. Please ensure you are in a valid git repository.');\n }\n }\n\n // Check if we're on a release branch\n logger.info(isDryRun ? 'DRY RUN: Would check current branch...' : 'Checking current branch...');\n if (isDryRun) {\n logger.info('DRY RUN: Would verify current branch is a release branch (starts with \"release/\")');\n } else {\n const currentBranch = await GitHub.getCurrentBranchName();\n if (!currentBranch.startsWith('release/')) {\n throw new Error(`Current branch '${currentBranch}' is not a release branch. Please switch to a release branch (e.g., release/1.0.0) before running publish.`);\n }\n }\n\n // Check if prepublishOnly script exists in package.json\n logger.info(isDryRun ? 'DRY RUN: Would check for prepublishOnly script...' : 'Checking for prepublishOnly script...');\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n\n if (!await storage.exists(packageJsonPath)) {\n if (!isDryRun) {\n throw new Error('package.json not found in current directory.');\n } else {\n logger.warn('DRY RUN: package.json not found in current directory.');\n }\n } else {\n let packageJson;\n try {\n const packageJsonContents = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContents);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n if (!isDryRun) {\n throw new Error('Failed to parse package.json. Please ensure it contains valid JSON.');\n } else {\n logger.warn('DRY RUN: Failed to parse package.json. Please ensure it contains valid JSON.');\n }\n }\n\n if (packageJson && !packageJson.scripts?.prepublishOnly) {\n if (!isDryRun) {\n throw new Error('prepublishOnly script is required in package.json but was not found. Please add a prepublishOnly script that runs your pre-flight checks (e.g., clean, lint, build, test).');\n } else {\n logger.warn('DRY RUN: prepublishOnly script is required in package.json but was not found.');\n }\n }\n }\n\n // Check required environment variables\n logger.verbose(isDryRun ? 'DRY RUN: Would check required environment variables...' : 'Checking required environment variables...');\n const coreRequiredEnvVars = runConfig.publish?.requiredEnvVars || [];\n const npmrcEnvVars = isDryRun ? [] : await scanNpmrcForEnvVars(storage); // Skip .npmrc scan in dry run\n const allRequiredEnvVars = [...new Set([...coreRequiredEnvVars, ...npmrcEnvVars])];\n\n if (allRequiredEnvVars.length > 0) {\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Required environment variables: ${allRequiredEnvVars.join(', ')}`);\n validateEnvironmentVariables(allRequiredEnvVars, isDryRun);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: No required environment variables specified.' : 'No required environment variables specified.');\n }\n\n logger.info(isDryRun ? 'DRY RUN: All prechecks would pass.' : 'All prechecks passed.');\n};\n\nexport const execute = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n const isDryRun = runConfig.dryRun || false;\n\n // Run prechecks before starting any work\n await runPrechecks(runConfig);\n\n logger.info(isDryRun ? 'DRY RUN: Would start release process...' : 'Starting release process...');\n\n try {\n // Unlink all workspace packages before starting (if enabled)\n const shouldUnlink = runConfig.publish?.unlinkWorkspacePackages !== false; // default to true\n if (shouldUnlink) {\n logger.verbose(isDryRun ? 'DRY RUN: Would unlink workspace packages...' : 'Unlinking workspace packages...');\n await Unlink.execute(runConfig);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: Would skip unlink workspace packages (disabled in config).' : 'Skipping unlink workspace packages (disabled in config).');\n }\n\n let pr: PullRequest | null = null;\n\n if (isDryRun) {\n logger.info('DRY RUN: Would check for existing pull request');\n logger.info('DRY RUN: Assuming no existing PR found for demo purposes');\n } else {\n const branchName = await GitHub.getCurrentBranchName();\n pr = await GitHub.findOpenPullRequestByHeadRef(branchName);\n }\n\n if (pr) {\n logger.info(`${isDryRun ? 'DRY RUN: ' : ''}Found existing pull request for branch: ${pr.html_url}`);\n } else {\n logger.info(isDryRun ? 'DRY RUN: No open pull request found, would start new release publishing process...' : 'No open pull request found, starting new release publishing process...');\n // 1. Prepare for release\n logger.verbose(isDryRun ? 'DRY RUN: Would prepare for release: switching from workspace to remote dependencies.' : 'Preparing for release: switching from workspace to remote dependencies.');\n\n logger.verbose(isDryRun ? 'DRY RUN: Would update dependencies to latest versions from registry' : 'Updating dependencies to latest versions from registry');\n const updatePatterns = runConfig.publish?.dependencyUpdatePatterns;\n if (updatePatterns && updatePatterns.length > 0) {\n logger.verbose(`${isDryRun ? 'DRY RUN: ' : ''}Updating dependencies matching patterns: ${updatePatterns.join(', ')}`);\n const patternsArg = updatePatterns.join(' ');\n await runWithDryRunSupport(`pnpm update --latest ${patternsArg}`, isDryRun);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: No dependency update patterns specified, would update all dependencies' : 'No dependency update patterns specified, updating all dependencies');\n await runWithDryRunSupport('pnpm update --latest', isDryRun);\n }\n\n logger.verbose(isDryRun ? 'DRY RUN: Would stage changes for release commit' : 'Staging changes for release commit');\n await runWithDryRunSupport('git add package.json pnpm-lock.yaml', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would run prepublishOnly script...' : 'Running prepublishOnly script...');\n await runWithDryRunSupport('pnpm run prepublishOnly', isDryRun);\n\n logger.verbose(isDryRun ? 'DRY RUN: Would check for staged changes...' : 'Checking for staged changes...');\n if (isDryRun) {\n logger.verbose('DRY RUN: Assuming staged changes exist for demo purposes');\n logger.verbose('DRY RUN: Would create commit...');\n await Commit.execute(runConfig);\n } else {\n if (await Diff.hasStagedChanges()) {\n logger.verbose('Staged changes found, creating commit...');\n await Commit.execute(runConfig);\n } else {\n logger.verbose('No changes to commit, skipping commit.');\n }\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would bump version...' : 'Bumping version...');\n // Manually increment version without creating a tag\n if (isDryRun) {\n logger.info('DRY RUN: Would manually increment patch version in package.json and commit');\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const packageJson = JSON.parse(packageJsonContents);\n const currentVersion = packageJson.version;\n const newVersion = incrementPatchVersion(currentVersion);\n packageJson.version = newVersion;\n await storage.writeFile('package.json', JSON.stringify(packageJson, null, 2) + '\\n', 'utf-8');\n logger.info(`Version bumped from ${currentVersion} to ${newVersion}`);\n\n // Stage and commit the version change\n await run('git add package.json');\n await run(`git commit -m \"chore: bump version to ${newVersion}\"`);\n logger.info(`Version change committed: ${newVersion}`);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would generate release notes...' : 'Generating release notes...');\n const releaseSummary = await Release.execute(runConfig);\n\n if (isDryRun) {\n logger.info('DRY RUN: Would write release notes to RELEASE_NOTES.md and RELEASE_TITLE.md in output directory');\n } else {\n const outputDirectory = runConfig.outputDirectory || DEFAULT_OUTPUT_DIRECTORY;\n await storage.ensureDirectory(outputDirectory);\n\n const releaseNotesPath = getOutputPath(outputDirectory, 'RELEASE_NOTES.md');\n const releaseTitlePath = getOutputPath(outputDirectory, 'RELEASE_TITLE.md');\n\n await storage.writeFile(releaseNotesPath, releaseSummary.body, 'utf-8');\n await storage.writeFile(releaseTitlePath, releaseSummary.title, 'utf-8');\n logger.info(`Release notes and title generated and saved to ${releaseNotesPath} and ${releaseTitlePath}.`);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would push to origin...' : 'Pushing to origin...');\n await runWithDryRunSupport('git push', isDryRun);\n\n logger.info(isDryRun ? 'DRY RUN: Would create pull request...' : 'Creating pull request...');\n if (isDryRun) {\n logger.info('DRY RUN: Would get commit title and create PR with GitHub API');\n pr = { number: 123, html_url: 'https://github.com/mock/repo/pull/123', labels: [] } as PullRequest;\n } else {\n const { stdout: commitTitle } = await run('git log -1 --pretty=%B');\n pr = await GitHub.createPullRequest(commitTitle, 'Automated release PR.', await GitHub.getCurrentBranchName());\n if (!pr) {\n throw new Error('Failed to create pull request.');\n }\n logger.info(`Pull request created: ${pr.html_url}`);\n }\n }\n\n logger.info(`${isDryRun ? 'DRY RUN: Would wait for' : 'Waiting for'} PR #${pr!.number} checks to complete...`);\n if (!isDryRun) {\n // Configure timeout and user confirmation behavior\n const timeout = runConfig.publish?.checksTimeout || 300000; // 5 minutes default\n const senditMode = runConfig.publish?.sendit || false;\n // sendit flag overrides skipUserConfirmation - if sendit is true, skip confirmation\n const skipUserConfirmation = senditMode || runConfig.publish?.skipUserConfirmation || false;\n\n await GitHub.waitForPullRequestChecks(pr!.number, {\n timeout,\n skipUserConfirmation\n });\n }\n\n const mergeMethod = runConfig.publish?.mergeMethod || 'squash';\n if (isDryRun) {\n logger.info(`DRY RUN: Would merge PR #${pr!.number} using ${mergeMethod} method`);\n } else {\n await GitHub.mergePullRequest(pr!.number, mergeMethod);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would checkout main branch...' : 'Checking out main branch...');\n await runWithDryRunSupport('git checkout main', isDryRun);\n await runWithDryRunSupport('git pull origin main', isDryRun);\n\n // Now create and push the tag on the main branch\n logger.info(isDryRun ? 'DRY RUN: Would create release tag...' : 'Creating release tag...');\n if (isDryRun) {\n logger.info('DRY RUN: Would read package.json version and create git tag');\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const tagName = `v${version}`;\n\n // Check if tag already exists locally\n try {\n const { stdout } = await run(`git tag -l ${tagName}`);\n if (stdout.trim() === tagName) {\n logger.info(`Tag ${tagName} already exists locally, skipping tag creation`);\n } else {\n await run(`git tag ${tagName}`);\n logger.info(`Created local tag: ${tagName}`);\n }\n } catch (error) {\n // If git tag -l fails, create the tag anyway\n await run(`git tag ${tagName}`);\n logger.info(`Created local tag: ${tagName}`);\n }\n\n // Check if tag exists on remote before pushing\n try {\n const { stdout } = await run(`git ls-remote origin refs/tags/${tagName}`);\n if (stdout.trim()) {\n logger.info(`Tag ${tagName} already exists on remote, skipping push`);\n } else {\n await run(`git push origin ${tagName}`);\n logger.info(`Pushed tag to remote: ${tagName}`);\n }\n } catch (error) {\n // If ls-remote fails, try to push anyway (might be a new remote)\n try {\n await run(`git push origin ${tagName}`);\n logger.info(`Pushed tag to remote: ${tagName}`);\n } catch (pushError: any) {\n if (pushError.message && pushError.message.includes('already exists')) {\n logger.info(`Tag ${tagName} already exists on remote, continuing...`);\n } else {\n throw pushError;\n }\n }\n }\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would create GitHub release...' : 'Creating GitHub release...');\n let tagName: string;\n if (isDryRun) {\n logger.info('DRY RUN: Would read package.json version and create GitHub release');\n tagName = 'v1.0.0'; // Mock version for dry run\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n tagName = `v${version}`;\n\n const outputDirectory = runConfig.outputDirectory || DEFAULT_OUTPUT_DIRECTORY;\n const releaseNotesPath = getOutputPath(outputDirectory, 'RELEASE_NOTES.md');\n const releaseTitlePath = getOutputPath(outputDirectory, 'RELEASE_TITLE.md');\n\n const releaseNotesContent = await storage.readFile(releaseNotesPath, 'utf-8');\n const releaseTitle = await storage.readFile(releaseTitlePath, 'utf-8');\n await GitHub.createRelease(tagName, releaseTitle, releaseNotesContent);\n }\n\n // Wait for release workflows to complete (if enabled)\n const waitForWorkflows = runConfig.publish?.waitForReleaseWorkflows !== false; // default to true\n if (waitForWorkflows) {\n logger.info(isDryRun ? 'DRY RUN: Would wait for release workflows...' : 'Waiting for release workflows...');\n if (isDryRun) {\n logger.info('DRY RUN: Would monitor GitHub Actions workflows triggered by release');\n } else {\n const workflowTimeout = runConfig.publish?.releaseWorkflowsTimeout || 600000; // 10 minutes default\n const senditMode = runConfig.publish?.sendit || false;\n const skipUserConfirmation = senditMode || runConfig.publish?.skipUserConfirmation || false;\n\n // Get workflow names - either from config or auto-detect\n let workflowNames = runConfig.publish?.releaseWorkflowNames;\n\n if (!workflowNames || workflowNames.length === 0) {\n logger.info('No specific workflow names configured, auto-detecting workflows triggered by release events...');\n try {\n workflowNames = await GitHub.getWorkflowsTriggeredByRelease();\n if (workflowNames.length === 0) {\n logger.info('No workflows found that are triggered by release events.');\n } else {\n logger.info(`Auto-detected release workflows: ${workflowNames.join(', ')}`);\n }\n } catch (error: any) {\n logger.warn(`Failed to auto-detect release workflows: ${error.message}`);\n workflowNames = undefined; // Fall back to monitoring all workflows\n }\n }\n\n await GitHub.waitForReleaseWorkflows(tagName, {\n timeout: workflowTimeout,\n workflowNames,\n skipUserConfirmation\n });\n }\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: Would skip waiting for release workflows (disabled in config).' : 'Skipping waiting for release workflows (disabled in config).');\n }\n\n logger.info(isDryRun ? 'DRY RUN: Would create new release branch...' : 'Creating new release branch...');\n if (isDryRun) {\n logger.info('DRY RUN: Would create next release branch (e.g., release/1.0.1) and push to origin');\n } else {\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const nextVersion = incrementPatchVersion(version);\n const newBranchName = `release/${nextVersion}`;\n await run(`git checkout -b ${newBranchName}`);\n await run(`git push -u origin ${newBranchName}`);\n logger.info(`Branch ${newBranchName} created and pushed to origin.`);\n }\n\n logger.info(isDryRun ? 'DRY RUN: Preparation would be complete.' : 'Preparation complete.');\n } finally {\n // Restore linked packages (if enabled)\n const shouldLink = runConfig.publish?.linkWorkspacePackages !== false; // default to true\n if (shouldLink) {\n logger.verbose(isDryRun ? 'DRY RUN: Would restore linked packages...' : 'Restoring linked packages...');\n await Link.execute(runConfig);\n } else {\n logger.verbose(isDryRun ? 'DRY RUN: Would skip restore linked packages (disabled in config).' : 'Skipping restore linked packages (disabled in config).');\n }\n }\n};\n"],"names":["scanNpmrcForEnvVars","storage","npmrcPath","path","join","process","cwd","envVars","exists","npmrcContent","readFile","envVarMatches","match","varName","replace","includes","push","error","validateEnvironmentVariables","requiredEnvVars","isDryRun","logger","getLogger","missingEnvVars","envVar","env","length","warn","Error","runPrechecks","runConfig","createStorage","log","info","dryRun","run","stdout","trim","currentBranch","GitHub","startsWith","packageJsonPath","packageJson","packageJsonContents","JSON","parse","scripts","prepublishOnly","verbose","coreRequiredEnvVars","publish","npmrcEnvVars","allRequiredEnvVars","Set","execute","shouldUnlink","unlinkWorkspacePackages","Unlink","pr","branchName","html_url","updatePatterns","dependencyUpdatePatterns","patternsArg","runWithDryRunSupport","Commit","Diff","currentVersion","version","newVersion","incrementPatchVersion","writeFile","stringify","releaseSummary","Release","outputDirectory","DEFAULT_OUTPUT_DIRECTORY","ensureDirectory","releaseNotesPath","getOutputPath","releaseTitlePath","body","title","number","labels","commitTitle","timeout","checksTimeout","senditMode","sendit","skipUserConfirmation","mergeMethod","tagName","pushError","message","releaseNotesContent","releaseTitle","waitForWorkflows","waitForReleaseWorkflows","workflowTimeout","releaseWorkflowsTimeout","workflowNames","releaseWorkflowNames","undefined","nextVersion","newBranchName","shouldLink","linkWorkspacePackages","Link"],"mappings":"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"}
|
package/dist/constants.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import os from 'os';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
|
|
4
|
-
const VERSION = '0.0.
|
|
4
|
+
const VERSION = '0.0.32 (HEAD/13adb4e T:v0.0.32 2025-07-25 14:43:36 -0700) linux x64 v22.17.1';
|
|
5
5
|
const PROGRAM_NAME = 'kodrdriv';
|
|
6
6
|
const DEFAULT_OVERRIDES = false;
|
|
7
7
|
const DATE_FORMAT_YEAR_MONTH_DAY_HOURS_MINUTES_SECONDS_MILLISECONDS = 'YYYY-MM-DD-HHmmss.SSS';
|
package/dist/types.js
CHANGED
|
@@ -87,6 +87,7 @@ const ConfigSchema = z.object({
|
|
|
87
87
|
excludedPatterns: z.array(z.string()).optional(),
|
|
88
88
|
startFrom: z.string().optional(),
|
|
89
89
|
script: z.string().optional(),
|
|
90
|
+
cmd: z.string().optional(),
|
|
90
91
|
publish: z.boolean().optional()
|
|
91
92
|
}).optional(),
|
|
92
93
|
excludedPatterns: z.array(z.string()).optional()
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { z } from \"zod\";\n\nexport const ConfigSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n outputDirectory: z.string().optional(),\n preferencesDirectory: z.string().optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n direction: z.string().optional(),\n }).optional(),\n audioCommit: z.object({\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n release: z.object({\n from: z.string().optional(),\n to: z.string().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n focus: z.string().optional(),\n }).optional(),\n review: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n note: z.string().optional(),\n }).optional(),\n audioReview: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n directory: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n linkWorkspacePackages: z.boolean().optional(),\n unlinkWorkspacePackages: z.boolean().optional(),\n checksTimeout: z.number().optional(),\n skipUserConfirmation: z.boolean().optional(),\n sendit: z.boolean().optional(),\n waitForReleaseWorkflows: z.boolean().optional(),\n releaseWorkflowsTimeout: z.number().optional(),\n releaseWorkflowNames: z.array(z.string()).optional(),\n }).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n publishTree: z.object({\n directory: z.string().optional(),\n excludedPatterns: z.array(z.string()).optional(),\n startFrom: z.string().optional(),\n script: z.string().optional(),\n publish: z.boolean().optional(),\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels: {\n name: string;\n }[];\n}\n\nexport type ReleaseSummary = {\n title: string;\n body: string;\n}\n\nexport type ReleaseConfig = {\n from?: string;\n to?: string;\n context?: string;\n focus?: string;\n}\n\nexport type ReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n note?: string;\n}\n\nexport type AudioReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n directory?: string;\n keepTemp?: boolean;\n}\n\nexport type AudioCommitConfig = {\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n keepTemp?: boolean;\n}\n\nexport type PublishConfig = {\n from?: string;\n to?: string;\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","model","string","contextDirectories","array","outputDirectory","preferencesDirectory","commit","add","cached","sendit","messageLimit","number","context","direction","audioCommit","maxRecordingTime","audioDevice","file","keepTemp","release","from","to","focus","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","note","audioReview","directory","publish","mergeMethod","enum","dependencyUpdatePatterns","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","checksTimeout","skipUserConfirmation","waitForReleaseWorkflows","releaseWorkflowsTimeout","releaseWorkflowNames","link","scopeRoots","record","workspaceFile","publishTree","excludedPatterns","startFrom","script","openaiApiKey","commandName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { z } from \"zod\";\n\nexport const ConfigSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n outputDirectory: z.string().optional(),\n preferencesDirectory: z.string().optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n direction: z.string().optional(),\n }).optional(),\n audioCommit: z.object({\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n release: z.object({\n from: z.string().optional(),\n to: z.string().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n focus: z.string().optional(),\n }).optional(),\n review: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n note: z.string().optional(),\n }).optional(),\n audioReview: z.object({\n includeCommitHistory: z.boolean().optional(),\n includeRecentDiffs: z.boolean().optional(),\n includeReleaseNotes: z.boolean().optional(),\n includeGithubIssues: z.boolean().optional(),\n commitHistoryLimit: z.number().optional(),\n diffHistoryLimit: z.number().optional(),\n releaseNotesLimit: z.number().optional(),\n githubIssuesLimit: z.number().optional(),\n context: z.string().optional(),\n sendit: z.boolean().optional(),\n maxRecordingTime: z.number().optional(),\n audioDevice: z.string().optional(),\n file: z.string().optional(),\n directory: z.string().optional(),\n keepTemp: z.boolean().optional(),\n }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n linkWorkspacePackages: z.boolean().optional(),\n unlinkWorkspacePackages: z.boolean().optional(),\n checksTimeout: z.number().optional(),\n skipUserConfirmation: z.boolean().optional(),\n sendit: z.boolean().optional(),\n waitForReleaseWorkflows: z.boolean().optional(),\n releaseWorkflowsTimeout: z.number().optional(),\n releaseWorkflowNames: z.array(z.string()).optional(),\n }).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n publishTree: z.object({\n directory: z.string().optional(),\n excludedPatterns: z.array(z.string()).optional(),\n startFrom: z.string().optional(),\n script: z.string().optional(),\n cmd: z.string().optional(),\n publish: z.boolean().optional(),\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels: {\n name: string;\n }[];\n}\n\nexport type ReleaseSummary = {\n title: string;\n body: string;\n}\n\nexport type ReleaseConfig = {\n from?: string;\n to?: string;\n context?: string;\n focus?: string;\n}\n\nexport type ReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n note?: string;\n}\n\nexport type AudioReviewConfig = {\n includeCommitHistory?: boolean;\n includeRecentDiffs?: boolean;\n includeReleaseNotes?: boolean;\n includeGithubIssues?: boolean;\n commitHistoryLimit?: number;\n diffHistoryLimit?: number;\n releaseNotesLimit?: number;\n githubIssuesLimit?: number;\n context?: string;\n sendit?: boolean;\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n directory?: string;\n keepTemp?: boolean;\n}\n\nexport type AudioCommitConfig = {\n maxRecordingTime?: number;\n audioDevice?: string;\n file?: string;\n keepTemp?: boolean;\n}\n\nexport type PublishConfig = {\n from?: string;\n to?: string;\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","model","string","contextDirectories","array","outputDirectory","preferencesDirectory","commit","add","cached","sendit","messageLimit","number","context","direction","audioCommit","maxRecordingTime","audioDevice","file","keepTemp","release","from","to","focus","review","includeCommitHistory","includeRecentDiffs","includeReleaseNotes","includeGithubIssues","commitHistoryLimit","diffHistoryLimit","releaseNotesLimit","githubIssuesLimit","note","audioReview","directory","publish","mergeMethod","enum","dependencyUpdatePatterns","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","checksTimeout","skipUserConfirmation","waitForReleaseWorkflows","releaseWorkflowsTimeout","releaseWorkflowNames","link","scopeRoots","record","workspaceFile","publishTree","excludedPatterns","startFrom","script","cmd","openaiApiKey","commandName"],"mappings":"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"}
|
package/dist/util/github.js
CHANGED
|
@@ -215,6 +215,23 @@ const createRelease = async (tagName, title, notes)=>{
|
|
|
215
215
|
});
|
|
216
216
|
logger.info(`Release ${tagName} created.`);
|
|
217
217
|
};
|
|
218
|
+
const getReleaseByTagName = async (tagName)=>{
|
|
219
|
+
const octokit = getOctokit();
|
|
220
|
+
const { owner, repo } = await getRepoDetails();
|
|
221
|
+
const logger = getLogger();
|
|
222
|
+
try {
|
|
223
|
+
const response = await octokit.repos.getReleaseByTag({
|
|
224
|
+
owner,
|
|
225
|
+
repo,
|
|
226
|
+
tag: tagName
|
|
227
|
+
});
|
|
228
|
+
logger.debug(`Found release for tag ${tagName}: created at ${response.data.created_at}`);
|
|
229
|
+
return response.data;
|
|
230
|
+
} catch (error) {
|
|
231
|
+
logger.debug(`Failed to get release for tag ${tagName}: ${error.message}`);
|
|
232
|
+
throw error;
|
|
233
|
+
}
|
|
234
|
+
};
|
|
218
235
|
const getOpenIssues = async (limit = 20)=>{
|
|
219
236
|
const octokit = getOctokit();
|
|
220
237
|
const { owner, repo } = await getRepoDetails();
|
|
@@ -274,6 +291,18 @@ const getWorkflowRunsTriggeredByRelease = async (tagName, workflowNames)=>{
|
|
|
274
291
|
const logger = getLogger();
|
|
275
292
|
try {
|
|
276
293
|
logger.debug(`Fetching workflow runs triggered by release ${tagName}...`);
|
|
294
|
+
// Get release information to filter by creation time and commit SHA
|
|
295
|
+
let releaseInfo;
|
|
296
|
+
try {
|
|
297
|
+
releaseInfo = await getReleaseByTagName(tagName);
|
|
298
|
+
} catch (error) {
|
|
299
|
+
logger.warn(`Could not get release info for ${tagName}: ${error.message}. Will use fallback filtering.`);
|
|
300
|
+
}
|
|
301
|
+
const releaseCreatedAt = releaseInfo === null || releaseInfo === void 0 ? void 0 : releaseInfo.created_at;
|
|
302
|
+
const releaseCommitSha = releaseInfo === null || releaseInfo === void 0 ? void 0 : releaseInfo.target_commitish;
|
|
303
|
+
if (releaseCreatedAt) {
|
|
304
|
+
logger.debug(`Release ${tagName} was created at ${releaseCreatedAt}, filtering workflows created after this time`);
|
|
305
|
+
}
|
|
277
306
|
// Get all workflows
|
|
278
307
|
const workflowsResponse = await octokit.actions.listRepoWorkflows({
|
|
279
308
|
owner,
|
|
@@ -296,21 +325,64 @@ const getWorkflowRunsTriggeredByRelease = async (tagName, workflowNames)=>{
|
|
|
296
325
|
owner,
|
|
297
326
|
repo,
|
|
298
327
|
workflow_id: workflow.id,
|
|
299
|
-
per_page:
|
|
328
|
+
per_page: 20
|
|
300
329
|
});
|
|
301
|
-
// Filter runs that were triggered by our release
|
|
330
|
+
// Filter runs that were triggered by our specific release
|
|
302
331
|
const releaseRuns = runsResponse.data.workflow_runs.filter((run)=>{
|
|
303
|
-
//
|
|
304
|
-
|
|
332
|
+
// Must be a release event
|
|
333
|
+
if (run.event !== 'release') {
|
|
334
|
+
return false;
|
|
335
|
+
}
|
|
336
|
+
// Must have required data
|
|
337
|
+
if (!run.head_sha || !run.created_at) {
|
|
338
|
+
return false;
|
|
339
|
+
}
|
|
340
|
+
// If we have release info, filter by creation time (only runs created after the release)
|
|
341
|
+
if (releaseCreatedAt) {
|
|
342
|
+
const runCreatedAt = new Date(run.created_at).getTime();
|
|
343
|
+
const releaseCreatedAtTime = new Date(releaseCreatedAt).getTime();
|
|
344
|
+
// Only include runs created after or very close to the release (within 1 minute before for clock skew)
|
|
345
|
+
if (runCreatedAt < releaseCreatedAtTime - 60000) {
|
|
346
|
+
logger.debug(`Excluding workflow run ${run.id} created before release (run: ${run.created_at}, release: ${releaseCreatedAt})`);
|
|
347
|
+
return false;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
// If we have the release commit SHA, prefer runs that match it
|
|
351
|
+
if (releaseCommitSha && run.head_sha !== releaseCommitSha) {
|
|
352
|
+
logger.debug(`Workflow run ${run.id} has different commit SHA (run: ${run.head_sha}, release: ${releaseCommitSha})`);
|
|
353
|
+
// Don't exclude entirely, as the release might trigger workflows on different commits
|
|
354
|
+
// but this helps us prioritize the right runs
|
|
355
|
+
}
|
|
356
|
+
return true;
|
|
305
357
|
});
|
|
306
358
|
allRuns.push(...releaseRuns);
|
|
359
|
+
if (releaseRuns.length > 0) {
|
|
360
|
+
logger.debug(`Found ${releaseRuns.length} relevant workflow runs for ${workflow.name}`);
|
|
361
|
+
}
|
|
307
362
|
} catch (error) {
|
|
308
363
|
logger.warn(`Failed to get runs for workflow ${workflow.name}: ${error.message}`);
|
|
309
364
|
}
|
|
310
365
|
}
|
|
311
|
-
// Sort by creation time (newest first) and
|
|
312
|
-
allRuns.sort((a, b)=>
|
|
313
|
-
|
|
366
|
+
// Sort by creation time (newest first) and prioritize runs with matching commit SHA
|
|
367
|
+
allRuns.sort((a, b)=>{
|
|
368
|
+
// First, prioritize runs with matching commit SHA if we have release info
|
|
369
|
+
if (releaseCommitSha) {
|
|
370
|
+
const aMatches = a.head_sha === releaseCommitSha;
|
|
371
|
+
const bMatches = b.head_sha === releaseCommitSha;
|
|
372
|
+
if (aMatches && !bMatches) return -1;
|
|
373
|
+
if (!aMatches && bMatches) return 1;
|
|
374
|
+
}
|
|
375
|
+
// Then sort by creation time (newest first)
|
|
376
|
+
return new Date(b.created_at).getTime() - new Date(a.created_at).getTime();
|
|
377
|
+
});
|
|
378
|
+
logger.debug(`Found ${allRuns.length} workflow runs triggered by release ${tagName}`);
|
|
379
|
+
if (allRuns.length > 0 && releaseCreatedAt) {
|
|
380
|
+
logger.debug(`Workflow runs created after release ${tagName}:`);
|
|
381
|
+
allRuns.forEach((run)=>{
|
|
382
|
+
var _run_head_sha;
|
|
383
|
+
logger.debug(`- ${run.name}: created ${run.created_at}, commit ${(_run_head_sha = run.head_sha) === null || _run_head_sha === void 0 ? void 0 : _run_head_sha.substring(0, 7)}`);
|
|
384
|
+
});
|
|
385
|
+
}
|
|
314
386
|
return allRuns;
|
|
315
387
|
} catch (error) {
|
|
316
388
|
logger.warn(`Failed to fetch workflow runs: ${error.message}`);
|
|
@@ -402,6 +474,83 @@ const waitForReleaseWorkflows = async (tagName, options = {})=>{
|
|
|
402
474
|
await delay(15000); // wait 15 seconds
|
|
403
475
|
}
|
|
404
476
|
};
|
|
477
|
+
const getWorkflowsTriggeredByRelease = async ()=>{
|
|
478
|
+
const octokit = getOctokit();
|
|
479
|
+
const { owner, repo } = await getRepoDetails();
|
|
480
|
+
const logger = getLogger();
|
|
481
|
+
try {
|
|
482
|
+
logger.debug('Analyzing workflows to find those triggered by release events...');
|
|
483
|
+
// Get all workflows
|
|
484
|
+
const workflowsResponse = await octokit.actions.listRepoWorkflows({
|
|
485
|
+
owner,
|
|
486
|
+
repo
|
|
487
|
+
});
|
|
488
|
+
const releaseWorkflows = [];
|
|
489
|
+
// Check each workflow's configuration
|
|
490
|
+
for (const workflow of workflowsResponse.data.workflows){
|
|
491
|
+
try {
|
|
492
|
+
// Get the workflow file content
|
|
493
|
+
const workflowPath = workflow.path;
|
|
494
|
+
logger.debug(`Analyzing workflow: ${workflow.name} (${workflowPath})`);
|
|
495
|
+
const contentResponse = await octokit.repos.getContent({
|
|
496
|
+
owner,
|
|
497
|
+
repo,
|
|
498
|
+
path: workflowPath
|
|
499
|
+
});
|
|
500
|
+
// Handle the response - it could be a file or directory
|
|
501
|
+
if ('content' in contentResponse.data && contentResponse.data.type === 'file') {
|
|
502
|
+
// Decode the base64 content
|
|
503
|
+
const content = Buffer.from(contentResponse.data.content, 'base64').toString('utf-8');
|
|
504
|
+
// Parse the YAML to check trigger conditions
|
|
505
|
+
if (isTriggeredByRelease(content, workflow.name)) {
|
|
506
|
+
logger.debug(`✓ Workflow "${workflow.name}" will be triggered by release events`);
|
|
507
|
+
releaseWorkflows.push(workflow.name);
|
|
508
|
+
} else {
|
|
509
|
+
logger.debug(`✗ Workflow "${workflow.name}" will not be triggered by release events`);
|
|
510
|
+
}
|
|
511
|
+
} else {
|
|
512
|
+
logger.warn(`Could not read content for workflow ${workflow.name}`);
|
|
513
|
+
}
|
|
514
|
+
} catch (error) {
|
|
515
|
+
logger.warn(`Failed to analyze workflow ${workflow.name}: ${error.message}`);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
logger.info(`Found ${releaseWorkflows.length} workflows that will be triggered by release events: ${releaseWorkflows.join(', ')}`);
|
|
519
|
+
return releaseWorkflows;
|
|
520
|
+
} catch (error) {
|
|
521
|
+
logger.error(`Failed to analyze workflows: ${error.message}`);
|
|
522
|
+
return [];
|
|
523
|
+
}
|
|
524
|
+
};
|
|
525
|
+
const isTriggeredByRelease = (workflowContent, workflowName)=>{
|
|
526
|
+
const logger = getLogger();
|
|
527
|
+
try {
|
|
528
|
+
// Simple regex-based parsing since we don't want to add a YAML dependency
|
|
529
|
+
// Look for common release trigger patterns
|
|
530
|
+
// Pattern 1: on.release (with or without types)
|
|
531
|
+
// on:
|
|
532
|
+
// release:
|
|
533
|
+
// types: [published, created, ...]
|
|
534
|
+
const releaseEventPattern = /(?:^|\n)\s*on\s*:\s*(?:\n|\r\n)(?:\s+[^\S\r\n]+)*(?:\s+release\s*:)/m;
|
|
535
|
+
// Pattern 2: on: [push, release] or on: release
|
|
536
|
+
const onReleasePattern = /(?:^|\n)\s*on\s*:\s*(?:\[.*release.*\]|release)\s*(?:\n|$)/m;
|
|
537
|
+
// Pattern 3: push with tag patterns that look like releases
|
|
538
|
+
// on:
|
|
539
|
+
// push:
|
|
540
|
+
// tags:
|
|
541
|
+
// - 'v*'
|
|
542
|
+
// - 'release/*'
|
|
543
|
+
const tagPushPattern = /(?:^|\r?\n)[^\S\r\n]*on\s*:\s*\r?\n(?:[^\S\r\n]*[^\r\n]+(?:\r?\n))*?[^\S\r\n]*push\s*:\s*\r?\n(?:[^\S\r\n]*tags\s*:\s*(?:\r?\n|\[)[^\]\r\n]*(?:v\*|release|tag)[^\]\r\n]*)/mi;
|
|
544
|
+
const isTriggered = releaseEventPattern.test(workflowContent) || onReleasePattern.test(workflowContent) || tagPushPattern.test(workflowContent);
|
|
545
|
+
if (isTriggered) {
|
|
546
|
+
logger.debug(`Workflow "${workflowName}" trigger patterns detected in content`);
|
|
547
|
+
}
|
|
548
|
+
return isTriggered;
|
|
549
|
+
} catch (error) {
|
|
550
|
+
logger.warn(`Failed to parse workflow content for ${workflowName}: ${error.message}`);
|
|
551
|
+
return false;
|
|
552
|
+
}
|
|
553
|
+
};
|
|
405
554
|
|
|
406
|
-
export { createIssue, createPullRequest, createRelease, findOpenPullRequestByHeadRef, getCurrentBranchName, getOctokit, getOpenIssues, getRepoDetails, getWorkflowRunsTriggeredByRelease, mergePullRequest, waitForPullRequestChecks, waitForReleaseWorkflows };
|
|
555
|
+
export { createIssue, createPullRequest, createRelease, findOpenPullRequestByHeadRef, getCurrentBranchName, getOctokit, getOpenIssues, getReleaseByTagName, getRepoDetails, getWorkflowRunsTriggeredByRelease, getWorkflowsTriggeredByRelease, mergePullRequest, waitForPullRequestChecks, waitForReleaseWorkflows };
|
|
407
556
|
//# sourceMappingURL=github.js.map
|