Files
cypress/scripts/binary/ask.coffee
Gleb Bahmutov cbf1da0802 Separate bump next version command (#922)
* set set-next-ci-version script command

* use current package.json version when asking for next one

* showing actual error response from buildkite

* rename .aws-credentials.json to just aws-credentials.json file

* rename aws_credentials_json on appveyor
2017-11-16 14:12:30 -05:00

214 lines
4.4 KiB
CoffeeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
_ = require("lodash")
fs = require("fs-extra")
glob = require("glob")
Promise = require("bluebird")
inquirer = require("inquirer")
la = require("lazy-ass")
check = require("check-more-types")
path = require("path")
glob = Promise.promisify(glob)
prompt = (questions) ->
Promise.resolve(inquirer.prompt(questions))
fs = Promise.promisifyAll(fs)
getZipFile = ->
[{
name: "zipFile"
type: "string"
default: "cypress.zip"
message: "Which zip file should we upload?"
}]
getPlatformQuestion = ->
[{
name: "platform"
type: "list"
message: "Which OS should we deploy?"
choices: [{
name: "Mac"
value: "darwin"
},{
name: "Linux"
value: "linux"
}, {
name: "Windows",
value: "win32"
}]
}]
getQuestions = (version) ->
[{
name: "publish"
type: "list"
message: "Publish a new version? (currently: #{version})"
choices: [{
name: "Yes: set a new version and deploy new version."
value: true
},{
name: "No: just override the current deployed version."
value: false
}]
},{
name: "version"
type: "input"
message: "Bump version to...? (currently: #{version})"
default: ->
a = version.split(".")
v = a[a.length - 1]
v = Number(v) + 1
a.splice(a.length - 1, 1, v)
a.join(".")
when: (answers) ->
answers.publish
}]
getReleases = (releases) ->
[{
name: "release"
type: "list"
message: "Release which version?"
choices: _.map releases, (r) ->
{
name: r
value: r
}
}]
getNextVersion = ({ version } = {}) ->
if not version
version = require(path.join(__dirname, "..", "..", "package.json")).version
message = "Bump next version to...? (currently: #{version})"
defaultVersion = () ->
a = version.split(".")
v = a[a.length - 1]
v = Number(v) + 1
a.splice(a.length - 1, 1, v)
a.join(".")
[{
name: "nextVersion"
type: "input"
message: message
default: defaultVersion
}]
getVersions = (releases) ->
[{
name: "version"
type: "list"
message: "Bump to which version?"
choices: _.map releases, (r) ->
{
name: r
value: r
}
}]
getBumpTasks = ->
[{
name: "task"
type: "list"
message: "Which bump task?"
choices: [{
name: "Bump Cypress Binary Version for all CI providers"
value: "version"
},{
name: "Run All Projects for all CI providers"
value: "run"
}]
}]
getCommitVersion = (version) ->
[{
name: "commit"
type: "list"
message: "Commit this new version to git? (currently: #{version})"
choices: [{
name: "Yes: commit and push this new release version."
value: true
},{
name: "No: do not commit."
value: false
}]
}]
deployNewVersion = ->
fs.readJsonAsync("./package.json")
.then (json) =>
prompt(getQuestions(json.version))
.then (answers) ->
## set the new version if we're publishing!
## update our own local package.json as well
if answers.publish
# @updateLocalPackageJson(answers.version, json).then ->
answers.version
else
json.version
whichZipFile = ->
prompt(getZipFile())
.get("zipFile")
whichVersion = (distDir) ->
## realpath returns the absolute full path
glob("*/package.json", {cwd: distDir, realpath: true})
.map (pkg) ->
fs.readJsonAsync(pkg)
.get("version")
.then (versions) ->
versions = _.uniq(versions)
prompt(getVersions(versions))
.get("version")
whichRelease = (distDir) ->
## realpath returns the absolute full path
glob("*/package.json", {cwd: distDir, realpath: true})
.map (pkg) =>
fs.readJsonAsync(pkg)
.get("version")
.then (versions) =>
versions = _.uniq(versions)
prompt(getReleases(versions))
.get("release")
whichPlatform = ->
prompt(getPlatformQuestion())
.get("platform")
whichBumpTask = ->
prompt(getBumpTasks())
.get("task")
nextVersion = (version) ->
prompt(getNextVersion(version))
.get("nextVersion")
toCommit = ({ version }) ->
prompt(getCommitVersion(version))
.get("commit")
module.exports = {
toCommit
getZipFile
getPlatformQuestion
getQuestions
getReleases
getVersions
getBumpTasks
deployNewVersion
nextVersion
whichZipFile
whichVersion
whichRelease
whichPlatform
whichBumpTask
}