Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

now v2 support #399

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Expand Up @@ -3,3 +3,9 @@ node_modules

# logs
npm-debug.log

# local env
.env

# output
dist/
2 changes: 2 additions & 0 deletions .nowignore
@@ -0,0 +1,2 @@
dist/
node_modules/
33 changes: 19 additions & 14 deletions bin/slackin
@@ -1,14 +1,22 @@
#!/usr/bin/env node

/*
* entrypoint for slackin when running via command-line, e.g. run manually, or in a container
* reads all command-line flags and env vars, and then calls slackin()
* when run via a control program, e.g. [now](https://zeit.co/now), this wrapper is not called;
* intead, it calls the loader, which calls slackin()
*/

var pkg = require('./../package')
var args = require('args')
var slackin = require('./../dist').default
const env = require('./../dist/env')
const slackin = require('./../dist').default

args
.option(['p', 'port'], 'Port to listen on [$PORT or 3000]', require('hostenv').PORT || process.env.PORT || 3000)
.option(['h', 'hostname'], 'Hostname to listen on [$HOSTNAME or 0.0.0.0]', require('hostenv').HOSTNAME || process.env.WEBSITE_HOSTNAME || '0.0.0.0')
.option(['c', 'channels'], 'One or more comma-separated channel names to allow single-channel guests [$SLACK_CHANNELS]', process.env.SLACK_CHANNELS)
.option(['i', 'interval'], 'How frequently (ms) to poll Slack [$SLACK_INTERVAL or 5000]', process.env.SLACK_INTERVAL || 5000)
.option(['p', 'port'], 'Port to listen on [$PORT or 3000]', env.port)
.option(['h', 'hostname'], 'Hostname to listen on [$HOSTNAME or 0.0.0.0]', env.hostname)
.option(['c', 'channels'], 'One or more comma-separated channel names to allow single-channel guests [$SLACK_CHANNELS]', env.channels)
.option(['i', 'interval'], 'How frequently (ms) to poll Slack [$SLACK_INTERVAL or 5000]', env.interval)
.option(['P', 'path'], 'Path to serve slackin under', '/')
.option(['s', 'silent'], 'Do not print out warns or errors')
.option(['x', 'cors'], 'Enable CORS for all routes')
Expand All @@ -21,12 +29,12 @@ var flags = args.parse(process.argv, {
help: false
})

var org = args.sub[0] || process.env.SLACK_SUBDOMAIN
var token = args.sub[1] || process.env.SLACK_API_TOKEN
var emails = process.env.EMAIL_SLACK_LIST || ''
var org = args.sub[0] || env.org
var token = args.sub[1] || env.token
var emails = env.emails

var gcaptcha_secret = args.sub[2] || process.env.GOOGLE_CAPTCHA_SECRET
var gcaptcha_sitekey = args.sub[3] || process.env.GOOGLE_CAPTCHA_SITEKEY
var gcaptcha_secret = args.sub[2] || env.gcaptcha_secret
var gcaptcha_sitekey = args.sub[3] || env.gcaptcha_sitekey



Expand All @@ -44,10 +52,7 @@ if (!org || !token || !gcaptcha_sitekey || !gcaptcha_secret) {
flags.gcaptcha_sitekey = gcaptcha_sitekey
}

var port = flags.port
var hostname = flags.hostname

slackin(flags).listen(port, hostname, function (err) {
slackin(flags).listen(flags.port, flags.hostname, function (err) {
if (err) throw err
if (!flags.silent) console.log('%s – listening on %s:%d', new Date, hostname, port)
})
22 changes: 22 additions & 0 deletions lib/env.js
@@ -0,0 +1,22 @@

/*
* load the various environment variable options
*
*/
const hostenv = require('hostenv')

const env = {
port: require('hostenv').PORT || process.env.PORT || 3000,
hostname: require('hostenv').HOSTNAME || process.env.WEBSITE_HOSTNAME || '0.0.0.0',
channels: process.env.SLACK_CHANNELS,
interval: process.env.SLACK_INTERVAL || 5000,
org: process.env.SLACK_SUBDOMAIN,
token: process.env.SLACK_API_TOKEN,
emails: process.env.EMAIL_SLACK_LIST,
gcaptcha_secret: process.env.GOOGLE_CAPTCHA_SECRET,
gcaptcha_sitekey: process.env.GOOGLE_CAPTCHA_SITEKEY
}


export default env

10 changes: 10 additions & 0 deletions lib/now.js
@@ -0,0 +1,10 @@
// get our env vars, since this entry is for non-CLI
const env = require('./env'),
slackin = require('./index').default,
flags = env.default

slackin(flags).listen(flags.port, flags.hostname, function (err) {
if (err) throw err
if (!flags.silent) console.log('%s – listening on %s:%d', new Date, flags.hostname, flags.port)
})

19 changes: 19 additions & 0 deletions now.json
@@ -0,0 +1,19 @@
{
"name": "slackin",
"public": true,
"version": 2,
"builds": [
{ "src": "lib/assets/*", "use": "@now/static" },
{ "src": "lib/now.js", "use": "@now/node-server" }
],
"routes": [
{ "src": "/assets/(.*)", "dest": "/lib/assets/$1" },
{ "src": "/(.*)", "dest": "/lib/now.js" }
],
"env": {
"SLACK_API_TOKEN": "@slack-api-token",
"SLACK_SUBDOMAIN" :"@slack-subdomain",
"GOOGLE_CAPTCHA_SECRET" : "@google-captcha-secret",
"GOOGLE_CAPTCHA_SITEKEY" : "@google-captcha-sitekey"
}
}