diff --git a/bin/setup-mastodon.js b/bin/setup-mastodon.js index 03d880d9..e468c6e6 100644 --- a/bin/setup-mastodon.js +++ b/bin/setup-mastodon.js @@ -7,7 +7,7 @@ const fs = require('fs') const stat = pify(fs.stat.bind(fs)) const writeFile = pify(fs.writeFile.bind(fs)) const mkdirp = pify(require('mkdirp')) -const fetch = require('node-fetch') +const waitForMastodonToStart = require('./wait-for-mastodon-to-start') const envFile = ` PAPERCLIP_SECRET=foo @@ -68,18 +68,7 @@ async function runMastodon() { console.error(data.toString('utf8').replace(/\n$/, '')) }) - while (true) { - try { - let json = await ((await fetch('http://127.0.0.1:3000/api/v1/instance')).json()) - if (json.uri) { - break - } - } catch (err) { - console.log('Waiting for Mastodon to start up...') - await new Promise(resolve => setTimeout(resolve, 1000)) - } - } - console.log('Mastodon started up') + await waitForMastodonToStart() } async function main() { diff --git a/bin/wait-for-mastodon-to-start.js b/bin/wait-for-mastodon-to-start.js new file mode 100644 index 00000000..8e6b0fd6 --- /dev/null +++ b/bin/wait-for-mastodon-to-start.js @@ -0,0 +1,25 @@ +const fetch = require('node-fetch') + +async function waitForMastodonToStart() { + while (true) { + try { + let json = await ((await fetch('http://127.0.0.1:3000/api/v1/instance')).json()) + if (json.uri) { + break + } + } catch (err) { + console.log('Waiting for Mastodon to start up...') + await new Promise(resolve => setTimeout(resolve, 1000)) + } + } + console.log('Mastodon started up') +} + +module.exports = waitForMastodonToStart + +if (require.main === module) { + waitForMastodonToStart().catch(err => { + console.error(err) + process.exit(1) + }) +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 701bb93d..d69334de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1035,81 +1035,6 @@ "typedarray": "0.0.6" } }, - "concurrently": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-3.5.1.tgz", - "integrity": "sha512-689HrwGw8Rbk1xtV9C4dY6TPJAvIYZbRbnKSAtfJ7tHqICFGoZ0PCWYjxfmerRyxBG0o3sbG3pe7N8vqPwIHuQ==", - "requires": { - "chalk": "0.5.1", - "commander": "2.6.0", - "date-fns": "1.29.0", - "lodash": "4.17.4", - "rx": "2.3.24", - "spawn-command": "0.0.2-1", - "supports-color": "3.2.3", - "tree-kill": "1.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=" - }, - "ansi-styles": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=" - }, - "chalk": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", - "requires": { - "ansi-styles": "1.1.0", - "escape-string-regexp": "1.0.5", - "has-ansi": "0.1.0", - "strip-ansi": "0.3.0", - "supports-color": "0.2.0" - }, - "dependencies": { - "supports-color": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=" - } - } - }, - "commander": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", - "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=" - }, - "has-ansi": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", - "requires": { - "ansi-regex": "0.2.1" - } - }, - "strip-ansi": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", - "requires": { - "ansi-regex": "0.2.1" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "1.0.0" - } - } - } - }, "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", @@ -1424,11 +1349,6 @@ } } }, - "date-fns": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", - "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==" - }, "date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", @@ -6878,11 +6798,6 @@ "aproba": "1.2.0" } }, - "rx": { - "version": "2.3.24", - "resolved": "https://registry.npmjs.org/rx/-/rx-2.3.24.tgz", - "integrity": "sha1-FPlQpCF9fjXapxu8vljv9o6ksrc=" - }, "rx-lite": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", @@ -7512,11 +7427,6 @@ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, - "spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" - }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", @@ -8154,11 +8064,6 @@ "punycode": "1.4.1" } }, - "tree-kill": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", - "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==" - }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", diff --git a/package.json b/package.json index ed213fab..8ac8a5ba 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "version": "0.0.1", "scripts": { "lint": "standard", - "dev": "npm run build-svg && concurrently --kill-others \"npm run build-sass-watch\" \"node server.js\"", + "dev": "npm run build-svg && run-p --race build-sass-watch serve", + "serve": "node server.js", "build": "npm run globalize-css && npm run build-sass && npm run build-svg && sapper build && npm run deglobalize-css", "start": "cross-env NODE_ENV=production node server.js", "build-svg": "node ./bin/build-svg.js", @@ -13,7 +14,9 @@ "run-mastodon": "cd mastodon && docker-compose run --rm web rake db:migrate && docker-compose up", "cy:run": "cypress run", "cy:open": "cypress open", - "test": "run-p --race dev cy:run", + "test": "run-p --race run-mastodon dev test-mastodon", + "test-mastodon": "run-s wait-for-mastodon-to-start cy:run", + "wait-for-mastodon-to-start": "node bin/wait-for-mastodon-to-start.js", "globalize-css": "node ./bin/globalize-css.js", "deglobalize-css": "node ./bin/globalize-css.js --reverse", "setup-mastodon": "node ./bin/setup-mastodon.js" @@ -25,7 +28,6 @@ "child-process-promise": "^2.2.1", "chokidar": "^2.0.0", "compression": "^1.7.1", - "concurrently": "^3.5.1", "cross-env": "^5.1.3", "css-loader": "^0.28.7", "express": "^4.16.2",