Files
action-versions/script/internal/add-action.js
Tingluo Huang 7751908620 init
2023-09-18 01:13:38 +00:00

99 lines
2.5 KiB
JavaScript

const actionConfig = require('./action-config')
const argHelper = require('./arg-helper')
const assert = require('assert')
const debugHelper = require('./debug-helper')
const exec = require('./exec')
const fsHelper = require('./fs-helper')
const Patterns = require('./patterns').Patterns
async function main() {
try {
// Command line args
const args = getArgs()
const owner = args.owner
const repo = args.repo
const patterns = args.patterns
const defaultBranch = args.defaultBranch || 'master'
// File exists?
const file = actionConfig.getFilePath(owner, repo)
assert.ok(!(await fsHelper.exists(file)), `File '${file}' already exists. Use 'update-action.sh' instead.`)
// Reinit _temp
await fsHelper.reinitTemp()
// Add the config
await actionConfig.add(owner, repo, patterns, defaultBranch)
}
catch (err) {
// Help
if (err.code === argHelper.helpCode) {
printUsage()
return
}
// Arg error?
if (err.code === argHelper.errorCode) {
printUsage()
console.error('')
}
// Print error
debugHelper.debug(err.stack)
console.error(`ERROR: ${err.message}`)
process.exitCode = 1
}
}
class Args {
owner = ''
repo = ''
patterns = []
defaultBranch = ''
}
/**
* Get the command line args
* @returns {Args}
*/
function getArgs() {
// Parse
const parsedArgs = argHelper.parse([], ['default-branch'])
if (parsedArgs.arguments.length < 1) {
argHelper.throwError('Expected at least one arg')
}
// Validate name with owner
const nwo = parsedArgs.arguments[0]
const splitNwo = nwo.split('/')
if (splitNwo.length !== 2 || !splitNwo[0] || !splitNwo[1]) {
argHelper.throwError(`Invalid nwo '${nwo}'`)
}
// Validate patterns
const patterns = parsedArgs.arguments.slice(1)
if (patterns.length) {
try {
new Patterns(patterns)
}
catch (err) {
argHelper.throwError(err.message)
}
}
return {
owner: splitNwo[0],
repo: splitNwo[1],
patterns: patterns,
defaultBranch: parsedArgs.options['default-branch']
}
}
function printUsage() {
console.error('USAGE: add-action.sh [--default-branch branch] nwo [(+|-)regexp [...]]')
console.error(` --default-branch Default branch name. For example: master`)
console.error(` nwo Name with owner. For example: actions/checkout`)
console.error(` regexp Refs to include or exclude. Default: ${actionConfig.defaultPatterns.join(' ')}`)
}
main()