Skip to content

Commit

Permalink
fix: configure git repo
Browse files Browse the repository at this point in the history
  • Loading branch information
vanlooverenkoen committed Nov 27, 2023
1 parent c496264 commit 5657189
Showing 1 changed file with 81 additions and 76 deletions.
157 changes: 81 additions & 76 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,86 @@ if (githubToken == null || githubToken == "") {
return
}

try {
await configureGit()
await installDartDependencies();
await executeScriptPreRun()

await configurePubDevToken()

const pubspec = getPubspec()
const event = github.context.payload

const messages = event.commits.map(commit => commit.message + '\n' + commit.body)

const commitMessage = 'version bump to'
const isVersionBump = messages.map(message => message.toLowerCase().includes(commitMessage)).includes(true)
if (isVersionBump) {
core.info('No action necessary!')
return
}
core.info(`\`${event.commits.length}\` commit(s) for this version bump.`)

let versionType = 'patch'
if (messages.map(message => message.includes('BREAKING CHANGE') || message.includes('major')).includes(true)) {
versionType = 'major'
} else if (messages.map(
message => message.toLowerCase().startsWith('feat') || message.toLowerCase().includes('minor')).includes(true)) {
versionType = 'minor'
}
core.info(`${versionType} version bump!`)

const currentVersion = pubspec.version.toString()
const newVersion = incrementVersion(currentVersion, versionType)
core.info(`Bumping version from ${currentVersion} to ${newVersion}`)
updatePubspec(newVersion)

// Verification before publishing
await analyzeDartProject()

// Setting up Git
await runInWorkspace('git', ['config', 'user.name', `"${process.env.GITHUB_USER || 'Dart Conventional Release'}"`])
await runInWorkspace('git', ['config', 'user.email', `"${process.env.GITHUB_EMAIL || '[email protected]'}"`])
const remoteGitRepoUrl = `https://${githubToken}:[email protected]/${process.env.GITHUB_REPOSITORY}.git`
await runInWorkspace('git', ['remote', 'set-url', 'origin', remoteGitRepoUrl])


// Committing changes
await runInWorkspace('git', ['add', 'pubspec.yaml'])
await runInWorkspace('git', ['commit', '-m', `ci: ${commitMessage} ${newVersion}`])
// Tagging the commit
const tag = `v${newVersion}`
await runInWorkspace('git', ['tag', tag])

// Pushing changes
await runInWorkspace('git', ['push', 'origin'])
await runInWorkspace('git', ['push', 'origin', '--tags'])
await uploadDartProject()
} catch (error) {
core.setFailed(`Action failed with error: ${error}`)
}

// =====================================================================
// ============================= Functions =============================
// =====================================================================

function configureGit() {
return runInWorkspace('git', ['config', '--global', '--add', 'safe.directory', workspace])
}

function installDartDependencies() {
return runInWorkspace('dart', ['pub', 'get'])
}

// Run a script before the action (only if configured)
async function executeScriptPreRun() {
const path = core.getInput('script-pre-run')
if (!path) {
return
}
await runInWorkspace('dart', ['run', path])
}

// Helper function to read and parse the pubspec.yaml file
function getPubspec() {
const pubspecContent = fs.readFileSync('pubspec.yaml', 'utf8')
Expand Down Expand Up @@ -67,79 +147,4 @@ async function analyzeDartProject() {

async function uploadDartProject() {
await runInWorkspace('dart', ['pub', 'publish'])
}


async function executeScriptPreRun() {
const path = core.getInput('script-pre-run')
if (!path) {
return
}
await runInWorkspace('dart', ['run', path])
}

async function run() {
try {
// Install dependencies
await runInWorkspace('dart', ['pub', 'get'])

// Run a script before the action (only if configured)
await executeScriptPreRun()

// Configure pub.dev token from github
await configurePubDevToken()

const pubspec = getPubspec()
const event = github.context.payload

const messages = event.commits.map(commit => commit.message + '\n' + commit.body)

const commitMessage = 'version bump to'
const isVersionBump = messages.map(message => message.toLowerCase().includes(commitMessage)).includes(true)
if (isVersionBump) {
core.info('No action necessary!')
return
}
core.info(`\`${event.commits.length}\` commit(s) for this version bump.`)

let versionType = 'patch'
if (messages.map(message => message.includes('BREAKING CHANGE') || message.includes('major')).includes(true)) {
versionType = 'major'
} else if (messages.map(
message => message.toLowerCase().startsWith('feat') || message.toLowerCase().includes('minor')).includes(true)) {
versionType = 'minor'
}
core.info(`${versionType} version bump!`)

const currentVersion = pubspec.version.toString()
const newVersion = incrementVersion(currentVersion, versionType)
core.info(`Bumping version from ${currentVersion} to ${newVersion}`)
updatePubspec(newVersion)

// Verification before publishing
await analyzeDartProject()

// Setting up Git
await runInWorkspace('git', ['config', 'user.name', `"${process.env.GITHUB_USER || 'Dart Conventional Release'}"`])
await runInWorkspace('git', ['config', 'user.email', `"${process.env.GITHUB_EMAIL || '[email protected]'}"`])
const remoteGitRepoUrl = `https://${githubToken}:[email protected]/${process.env.GITHUB_REPOSITORY}.git`
await runInWorkspace('git', ['remote', 'set-url', 'origin', remoteGitRepoUrl])


// Committing changes
await runInWorkspace('git', ['add', 'pubspec.yaml'])
await runInWorkspace('git', ['commit', '-m', `ci: ${commitMessage} ${newVersion}`])
// Tagging the commit
const tag = `v${newVersion}`
await runInWorkspace('git', ['tag', tag])

// Pushing changes
await runInWorkspace('git', ['push', 'origin'])
await runInWorkspace('git', ['push', 'origin', '--tags'])
await uploadDartProject()
} catch (error) {
core.setFailed(`Action failed with error: ${error}`)
}
}

run()
}

0 comments on commit 5657189

Please sign in to comment.