Skip to content

Commit

Permalink
grabbing urls and aliases
Browse files Browse the repository at this point in the history
  • Loading branch information
bahmutov committed Sep 8, 2016
1 parent b7dfda8 commit 851d7ca
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 16 deletions.
1 change: 1 addition & 0 deletions .gitignore
@@ -1,2 +1,3 @@
node_modules/
npm-debug.log
.DS_Store
97 changes: 82 additions & 15 deletions bin/now-pipeline.js
Expand Up @@ -2,38 +2,105 @@

'use strict'

const debug = require('debug')('now-pipeline')
const R = require('ramda')
const runCommand = require('../src/run-command')
const is = require('check-more-types')
const la = require('lazy-ass')

const args = process.argv.slice(2)
console.log('arguments', args)
const argv = require('minimist')(process.argv.slice(2))

const filenames = argv._
console.log('deploying files', filenames)

const envUrlName = 'NOW_URL'
const passAsName = argv.as || envUrlName

const nowPipeline = require('..')

var start

function findDeploy (url) {
la(is.url(url), 'expected url', url)

return nowPipeline.deployments()
.then(deploys => {
debug('looking for url %s in %d deploys', url, deploys.length)

const found = deploys.find(d => {
return url.endsWith(d.url)
})
if (!found) {
console.error('Could not find deploy for url', url)
process.exit(-1)
}
debug('found deployment', found)
return found
})
}

if (process.env[envUrlName]) {
const url = process.env[envUrlName]
console.log(`found existing env variable ${envUrlName} ${url}`)
start = Promise.resolve(url)

// start = Promise.resolve(url)
// todo Find the deployment with given url
start = findDeploy(url)
} else {
const nowPipeline = require('..')
start = nowPipeline.deploy(args).then(r => {
console.log('deployed to url', r.host)
return `https://${r.host}`
})
start = nowPipeline.deploy(filenames)
}

function setFullHost (deploy) {
if (!deploy.url) {
deploy.url = deploy.host
}
if (!deploy.url.startsWith('https://')) {
deploy.url = `https://${deploy.url}`
}

console.log('deployed to url', deploy.url)
la(is.url(deploy.url), 'expected deploy.url to be full https', deploy.url)
return deploy
}

function deployIsWorking (deploy) {
console.log(`deployed url ${deploy.url} is working`)
}

function addHttps (url) {
return url.startsWith('https://') ? url : 'https://' + url
}

function updateAliasIfNecessary (deploy) {
return nowPipeline.aliases()
.then(aliases => {
console.log('%d aliases', aliases.length)
console.log(aliases)
const urls = aliases.map(R.prop('alias')).map(addHttps)
debug('alias urls', urls)
console.log(urls)

if (urls.includes(deploy.url)) {
console.log('new deploy url %s is already an alias', deploy.url)
}
})
}

start
.then(url => {
console.log('testing url %s', url)
.then(setFullHost)
.then(deploy => {
la(is.object(deploy), 'wrong deploy object', deploy)
console.log('testing url %s', deploy.url)
console.log('passing it as env variable %s', passAsName)
la(is.url(deploy.url), 'missing deploy url in', deploy)

const env = {}
env[envUrlName] = url
return runCommand(['npm', 'test'], env).then(R.always(url))
})
.then((url) => {
console.log(`deployed url ${url} is working`)
env[passAsName] = deploy.url
return runCommand(['npm', 'test'], env)
.then(R.always(deploy))
})
.then(R.tap(deployIsWorking))
.then(updateAliasIfNecessary)
.catch(err => {
console.error(err)
process.exit(-1)
Expand Down
2 changes: 2 additions & 0 deletions package.json
Expand Up @@ -85,7 +85,9 @@
"check-more-types": "2.22.0",
"console.table": "0.7.0",
"cross-spawn": "4.0.0",
"debug": "2.2.0",
"lazy-ass": "1.5.0",
"minimist": "1.2.0",
"now-client": "0.3.0",
"ramda": "0.22.1"
}
Expand Down
6 changes: 5 additions & 1 deletion src/index.js
@@ -1,6 +1,8 @@
'use strict'

require('console.table')

const debug = require('debug')('now-pipeline')
const R = require('ramda')
const path = require('path')
const fs = require('fs')
Expand Down Expand Up @@ -69,7 +71,9 @@ function nowApi () {
}
*/
deploy (filenames) {
console.log('deploying files', filenames)
debug('deploying %d files', filenames.length)
debug(filenames)

la(is.strings(filenames), 'missing file names', filenames)
la(is.not.empty(filenames), 'expected list of files', filenames)

Expand Down

0 comments on commit 851d7ca

Please sign in to comment.