blob: 3e8dc47b5777379fbba11f24a45b52cf7f880bad [file] [log] [blame]
import {exportVariable, info, setFailed} from '@actions/core'
import {action, ActionInterface, Status} from './constants'
import {deploy, generateBranch, init} from './git'
import {generateRepositoryPath, generateTokenType} from './util'
/** Initializes and runs the action.
*
* @param {object} configuration - The action configuration.
*/
export default async function run(
configuration: ActionInterface
): Promise<void> {
let status: Status = Status.RUNNING
try {
info(`
GitHub Pages Deploy Action 🚀
🚀 Getting Started Guide: https://github.com/marketplace/actions/deploy-to-github-pages
❓ FAQ/Wiki: https://github.com/JamesIves/github-pages-deploy-action/wiki
🔧 Support: https://github.com/JamesIves/github-pages-deploy-action/issues
⭐ Contribute: https://github.com/JamesIves/github-pages-deploy-action/blob/dev/CONTRIBUTING.md
📣 Maintained by James Ives (https://jamesiv.es)`)
info('Checking configuration and starting deployment… 🚦')
const settings = {
...action,
...configuration
}
// Defines the repository paths and token types.
settings.repositoryPath = generateRepositoryPath(settings)
settings.tokenType = generateTokenType(settings)
await init(settings)
status = await deploy(settings)
} catch (error) {
status = Status.FAILED
setFailed(error.message)
} finally {
info(
`${
status === Status.FAILED
? 'Deployment failed! ❌'
: status === Status.SUCCESS
? 'Completed deployment successfully! ✅'
: 'There is nothing to commit. Exiting early… 📭'
}`
)
exportVariable('DEPLOYMENT_STATUS', status)
}
}
export {init, deploy, generateBranch, ActionInterface}