diff --git a/commit.js b/commit.js new file mode 100644 index 0000000..97c7c53 --- /dev/null +++ b/commit.js @@ -0,0 +1,81 @@ +const axios = require('axios'); + + + + +export async function commitChanges(filePath) { + const commitMessage = 'Commit message here'; + const newContent = 'New content to be added'; + + + // Get the repository owner and name + const repoFullName = process.env.GITHUB_REPOSITORY; + const [owner, repo] = repoFullName.split('/'); + + // Get the current branch + const branch = process.env.GITHUB_REF.replace('refs/heads/', ''); + + try { + // Get the current commit SHA for the branch + const branchResponse = await axios.get( + `https://api.github.com/repos/${owner}/${repo}/branches/${branch}` + ); + + const baseTreeSha = branchResponse.data.commit.sha; + + // Create a new blob with the updated content + const blobResponse = await axios.post( + `https://api.github.com/repos/${owner}/${repo}/git/blobs`, + { + content: newContent, + encoding: 'utf-8', + } + ); + + const newBlobSha = blobResponse.data.sha; + + // Create a new tree with the updated blob + const treeResponse = await axios.post( + `https://api.github.com/repos/${owner}/${repo}/git/trees`, + { + base_tree: baseTreeSha, + tree: [ + { + path: filePath, + mode: '100644', + type: 'blob', + sha: newBlobSha, + }, + ], + } + ); + + const newTreeSha = treeResponse.data.sha; + + // Create a new commit + const commitResponse = await axios.post( + `https://api.github.com/repos/${owner}/${repo}/git/commits`, + { + message: commitMessage, + tree: newTreeSha, + parents: [baseTreeSha], + } + ); + + const newCommitSha = commitResponse.data.sha; + + // Update the branch reference + await axios.patch( + `https://api.github.com/repos/${owner}/${repo}/git/refs/heads/${branch}`, + { + sha: newCommitSha, + } + ); + + console.log('Changes committed successfully!'); + } catch (error) { + console.error('Error committing changes:', error); + } +} + +commitChanges(); diff --git a/index.js b/index.js index 5d6276d..51db9d3 100644 --- a/index.js +++ b/index.js @@ -1,13 +1,14 @@ const core = require('@actions/core') const github = require('@actions/github') const fs = require('fs') -const xml2js = require('xml2js') +import commitChanges from './commit.js'; try { console.log(`CWD: ${process.cwd()}`) const label = core.getInput('label'); const filePath = `${process.cwd()}/${core.getInput('filePath')}`; + console.log(`Label: ${label}`) console.log(`File path: ${filePath}`) @@ -18,7 +19,8 @@ try { // else if (project == 'nodejs') // filePath = `${filePath}/package.json`; - const version = require(filePath).version; + const packageJson = require(filePath); + const version = packageJson.version; // the version is in semantic format, so we can split it by dot @@ -46,7 +48,10 @@ try { console.log(`Old version: ${version}. New version: ${newVersion}`) + packageJson.version = newVersion; + fs.writeFileSync(filePath, JSON.stringify(packageJson, null, 2)); + commitChanges(); const payload = JSON.stringify(github.context.payload, undefined, 2) // console.log(`The event payload: ${payload}`);