@heroku/skynet 1.8.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,29 +2,8 @@ const cli = require('heroku-cli-util')
2
2
  const command = require('../../lib/command')
3
3
  const sudo = require('../../lib/sudo')
4
4
  const SkynetAPI = require('../../lib/skynet')
5
-
6
- function readlines (file) {
7
- return new Promise(function (resolve, reject) {
8
- const split = require('split')
9
- const fs = require('fs')
10
-
11
- const users = []
12
-
13
- fs.createReadStream(file).pipe(split())
14
- .on('data', function (line) {
15
- line = line.trim()
16
- if (line) {
17
- users.push(line)
18
- }
19
- })
20
- .on('end', function () {
21
- resolve(users)
22
- })
23
- .on('error', function (err) {
24
- reject(err)
25
- })
26
- })
27
- }
5
+ const utils = require('../../lib/utils')
6
+ const chunkSize = 5
28
7
 
29
8
  async function run (context) {
30
9
  sudo()
@@ -40,9 +19,14 @@ async function run (context) {
40
19
  }
41
20
 
42
21
  if (file) {
43
- const apps = await readlines(file)
44
- const response = await skynet.bulkSuspendAppOwner(apps.join(), notes, category)
45
- cli.log(response)
22
+ const apps = await utils.readlines(file)
23
+ const chunks = utils.arrayChunks(apps, chunkSize)
24
+ for (const chunk of chunks) {
25
+ cli.log('Suspsneding app owners: ' + chunk.join())
26
+ const response = await skynet.bulkSuspendAppOwner(apps.join(), notes, category)
27
+ cli.log(response)
28
+ cli.log()
29
+ }
46
30
  } else {
47
31
  if (!app) {
48
32
  throw new Error('Required flag: --owner OWNER or --infile FILE')
@@ -4,29 +4,8 @@ const sudo = require('../../lib/sudo')
4
4
  const SkynetAPI = require('../../lib/skynet')
5
5
  const HerokuAPI = require('../../lib/heroku')
6
6
  const notifyOption = require('../../lib/notifyOption')
7
-
8
- function readlines (file) {
9
- return new Promise(function (resolve, reject) {
10
- const split = require('split')
11
- const fs = require('fs')
12
-
13
- const users = []
14
-
15
- fs.createReadStream(file).pipe(split())
16
- .on('data', function (line) {
17
- line = line.trim()
18
- if (line) {
19
- users.push(line)
20
- }
21
- })
22
- .on('end', function () {
23
- resolve(users)
24
- })
25
- .on('error', function (err) {
26
- reject(err)
27
- })
28
- })
29
- }
7
+ const utils = require('../../lib/utils')
8
+ const chunkSize = 5
30
9
 
31
10
  async function unverifyUser (api, user) {
32
11
  const resMsg = await api.unverifyUser(user)
@@ -52,9 +31,14 @@ async function run (context) {
52
31
  }
53
32
 
54
33
  if (file) {
55
- const users = await readlines(file)
56
- const response = await skynet.bulkSuspendUsers(users.join(), notes, category, notify, force)
57
- cli.log(`${response}. Notification ${notificationStatus}`)
34
+ const users = await utils.readlines(file)
35
+ const chunks = utils.arrayChunks(users, chunkSize)
36
+ for (const chunk of chunks) {
37
+ cli.log('Suspsneding users: ' + chunk.join())
38
+ const response = await skynet.bulkSuspendUsers(chunk.join(), notes, category, notify, force)
39
+ cli.log(`${response}. Notification ${notificationStatus}`)
40
+ cli.log()
41
+ }
58
42
 
59
43
  if (unverify) {
60
44
  users.forEach(item => unverifyUser(api, item))
package/lib/utils.js ADDED
@@ -0,0 +1,35 @@
1
+ exports.readlines = function (file) {
2
+ return new Promise(function (resolve, reject) {
3
+ const split = require('split')
4
+ const fs = require('fs')
5
+
6
+ const entries = []
7
+
8
+ fs.createReadStream(file).pipe(split())
9
+ .on('data', function (line) {
10
+ line = line.trim()
11
+ if (line) {
12
+ entries.push(line)
13
+ }
14
+ })
15
+ .on('end', function () {
16
+ resolve(entries)
17
+ })
18
+ .on('error', function (err) {
19
+ reject(err)
20
+ })
21
+ })
22
+ }
23
+
24
+ exports.arrayChunks = function (array, chunkSize) {
25
+ var chunks = []
26
+ if (array.length <= chunkSize) {
27
+ chunks.push(array)
28
+ } else {
29
+ for (var i = 0; i < array.length; i += chunkSize) {
30
+ chunks.push(array.slice(i, i + chunkSize))
31
+ }
32
+ }
33
+
34
+ return chunks
35
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heroku/skynet",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "description": "use Skynet from Heroku CLI",
5
5
  "main": "index.js",
6
6
  "author": "Bob Argenbright @byt3smith",