diff --git a/scripts/generate.js b/scripts/generate.js index f54cacf70..79b7e2b17 100644 --- a/scripts/generate.js +++ b/scripts/generate.js @@ -35,12 +35,12 @@ const { } = require('./utils') start(minimist(process.argv.slice(2), { - string: ['tag'] + string: ['tag', 'branch'] })) function start (opts) { const log = ora('Loading Elasticsearch Repository').start() - if (semver.valid(opts.tag) === null) { + if (opts.branch == null && semver.valid(opts.tag) === null) { log.fail(`Missing or invalid tag: ${opts.tag}`) return } @@ -55,7 +55,7 @@ function start (opts) { log.text = 'Cleaning API folder...' rimraf.sync(join(apiOutputFolder, '*.js')) - cloneAndCheckout({ log, tag: opts.tag }, (err, { apiFolder, xPackFolder }) => { + cloneAndCheckout({ log, tag: opts.tag, branch: opts.branch }, (err, { apiFolder, xPackFolder }) => { if (err) { log.fail(err.message) return diff --git a/scripts/utils/clone-es.js b/scripts/utils/clone-es.js index 7889541c3..05608eeaa 100644 --- a/scripts/utils/clone-es.js +++ b/scripts/utils/clone-es.js @@ -29,7 +29,7 @@ const apiFolder = join(esFolder, 'rest-api-spec', 'src', 'main', 'resources', 'r const xPackFolder = join(esFolder, 'x-pack', 'plugin', 'src', 'test', 'resources', 'rest-api-spec', 'api') function cloneAndCheckout (opts, callback) { - const { log, tag } = opts + const { log, tag, branch } = opts withTag(tag, callback) /** @@ -57,13 +57,19 @@ function cloneAndCheckout (opts, callback) { if (fresh) { clone(checkout) + } else if (opts.branch) { + checkout(true) } else { checkout() } - function checkout () { - log.text = `Checking out tag '${tag}'` - git.checkout(tag, err => { + function checkout (alsoPull = false) { + if (branch) { + log.text = `Checking out branch '${branch}'` + } else { + log.text = `Checking out tag '${tag}'` + } + git.checkout(branch || tag, err => { if (err) { if (retry++ > 0) { callback(new Error(`Cannot checkout tag '${tag}'`), { apiFolder, xPackFolder }) @@ -71,6 +77,9 @@ function cloneAndCheckout (opts, callback) { } return pull(checkout) } + if (alsoPull) { + return pull(checkout) + } callback(null, { apiFolder, xPackFolder }) }) }