poad 2.5.11 → 2.6.1

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.
package/global/init.js CHANGED
@@ -23,7 +23,7 @@ module.exports = async (args) => {
23
23
  config.project_id = path.basename(process.cwd());
24
24
  config.project_uuid = generateUniqueId();
25
25
  await fs.mkdir(path.join(process.cwd(), 'poad', 'data'), { recursive: true });
26
- const ports = await findFreePorts(4);
26
+ const ports = await findFreePorts(3);
27
27
  config.engine = global.package.engine;
28
28
  config.db = {
29
29
  port: ports[0],
@@ -31,11 +31,8 @@ module.exports = async (args) => {
31
31
  config.web = {
32
32
  port: ports[1],
33
33
  };
34
- config.s3 = {
35
- port: ports[2],
36
- };
37
34
  config.inbucket = {
38
- port: ports[3],
35
+ port: ports[2],
39
36
  };
40
37
  const key = generateSecret();
41
38
  config.auth = {
@@ -45,12 +42,6 @@ module.exports = async (args) => {
45
42
  service: jwt.sign(service, key),
46
43
  admin: jwt.sign(admin, key),
47
44
  };
48
- config.s3 = {
49
- port: config.s3.port,
50
- access_key: generateSecret(),
51
- secret_key: generateSecret(),
52
- region: 'local',
53
- };
54
45
  const toml = json2toml(config);
55
46
  const isInstalled = await fs
56
47
  .stat(path.join(process.cwd(), 'poad', 'config.toml'))
package/global/start.js CHANGED
@@ -9,9 +9,11 @@ module.exports = async (args) => {
9
9
  const prettyoutput = require('prettyoutput');
10
10
  const { findPoadDir } = require('../utils/findpoad');
11
11
  const { isDockerExist } = require('../utils/docker');
12
+ const { usesMinio, storageInfo } = require('../utils/engine');
12
13
  const root = findPoadDir(process.cwd());
13
14
  const config = toml.parse(await fs.readFile(root, 'utf-8'));
14
15
  const containerName = config.project_uuid;
16
+ const minio = usesMinio(config);
15
17
  console.log(' ');
16
18
  if (await isDockerExist(containerName)) {
17
19
  return console.log(chalk.bold('Container already started'));
@@ -30,15 +32,21 @@ module.exports = async (args) => {
30
32
  'JWT_SECRET=' + config.auth.secret,
31
33
  'ANON_KEY=' + config.auth.anon,
32
34
  'SERVICE_ROLE_KEY=' + config.auth.service,
33
- 'S3_ACCESS_KEY=' + config.s3.access_key,
34
- 'S3_SECRET_KEY=' + config.s3.secret_key,
35
- 'S3_REGION=local',
35
+ ...(minio
36
+ ? [
37
+ 'S3_ACCESS_KEY=' + config.s3.access_key,
38
+ 'S3_SECRET_KEY=' + config.s3.secret_key,
39
+ 'S3_REGION=local',
40
+ ]
41
+ : []),
36
42
  ],
37
43
  HostConfig: {
38
44
  PortBindings: {
39
45
  '5432/tcp': [{ HostPort: config.db.port.toString() }],
40
46
  '8000/tcp': [{ HostPort: config.web.port.toString() }],
41
- '9500/tcp': [{ HostPort: config.s3.port.toString() }],
47
+ ...(minio
48
+ ? { '9500/tcp': [{ HostPort: config.s3.port.toString() }] }
49
+ : {}),
42
50
  '9000/tcp': [{ HostPort: config.inbucket.port.toString() }],
43
51
  },
44
52
  Binds: [path.dirname(root) + '/data:/data'],
@@ -57,10 +65,7 @@ module.exports = async (args) => {
57
65
  const info = {
58
66
  'API URL': `http://localhost:${config.web.port}`,
59
67
  'DB URL': `postgres://postgres:postgres@localhost:${config.db.port}/postgres`,
60
- 'S3 URL': `http://localhost:${config.s3.port}/`,
61
- 'S3 ACCESS KEY': config.s3.access_key,
62
- 'S3 SECRET KEY': config.s3.secret_key,
63
- 'S3 REGION': 'local',
68
+ ...storageInfo(config),
64
69
  'Inbucket URL': `http://localhost:${config.inbucket.port}`,
65
70
  'JWT secret': `${config.auth.secret}`,
66
71
  'anon key': config.auth.anon,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "poad",
3
- "version": "2.5.11",
4
- "engine": "0.5.3",
3
+ "version": "2.6.1",
4
+ "engine": "0.6.1",
5
5
  "main": "index.js",
6
6
  "license": "MIT",
7
7
  "bin": {
package/poad.js CHANGED
@@ -462,6 +462,18 @@ const display = (commands) => {
462
462
  }
463
463
  };
464
464
 
465
+ // True when version `a` is strictly newer than `b` (major.minor.patch).
466
+ const isNewerVersion = (a, b) => {
467
+ const pa = String(a).split('.').map(Number);
468
+ const pb = String(b).split('.').map(Number);
469
+ for (let i = 0; i < 3; i++) {
470
+ const x = pa[i] || 0;
471
+ const y = pb[i] || 0;
472
+ if (x !== y) return x > y;
473
+ }
474
+ return false;
475
+ };
476
+
465
477
  // Main function.
466
478
  const main = async () => {
467
479
  let version = await checkVersion();
@@ -470,9 +482,7 @@ const main = async () => {
470
482
  if (version === null) {
471
483
  version = current_version;
472
484
  }
473
- const cv = current_version.replace(/\./g, '') * 1;
474
- const v = version.replace(/\./g, '') * 1;
475
- if (v > cv) {
485
+ if (isNewerVersion(version, current_version)) {
476
486
  const message =
477
487
  `A new version (${version}) is available. You can upgrade by running:\n` +
478
488
  chalk.white.bold(`npm i -g poad@${version}`);
package/project/info.js CHANGED
@@ -6,6 +6,7 @@ module.exports = async (args) => {
6
6
  const prettyoutput = require('prettyoutput');
7
7
  const { findPoadDir } = require('../utils/findpoad');
8
8
  const { isDockerExist } = require('../utils/docker');
9
+ const { storageInfo } = require('../utils/engine');
9
10
  const root = findPoadDir(process.cwd());
10
11
  const config = toml.parse(await fs.readFile(root, 'utf-8'));
11
12
  console.log(' ');
@@ -17,10 +18,7 @@ module.exports = async (args) => {
17
18
  const info = {
18
19
  'API URL': `http://localhost:${config.web.port}`,
19
20
  'DB URL': `postgres://postgres:postgres@localhost:${config.db.port}/postgres`,
20
- 'S3 URL': `http://localhost:${config.s3.port}/`,
21
- 'S3 ACCESS KEY': config.s3.access_key,
22
- 'S3 SECRET KEY': config.s3.secret_key,
23
- 'S3 REGION': 'local',
21
+ ...storageInfo(config),
24
22
  'Inbucket URL': `http://localhost:${config.inbucket.port}`,
25
23
  'JWT secret': `${config.auth.secret}`,
26
24
  'anon key': config.auth.anon,
@@ -0,0 +1,26 @@
1
+ // Engines before 0.6.0 ship Kong + MinIO: S3 is served on its own port (9500).
2
+ // From 0.6.0 on, the gateway is APISIX and storage is served by the gateway
3
+ // under /storage/v1.
4
+ const usesMinio = (config) => {
5
+ const [major, minor] = String(config.engine || '')
6
+ .split('.')
7
+ .map(Number);
8
+ return Boolean(config.s3) && major === 0 && minor < 6;
9
+ };
10
+
11
+ // Storage lines shown by `poad start` and `poad info`.
12
+ const storageInfo = (config) => {
13
+ if (usesMinio(config)) {
14
+ return {
15
+ 'S3 URL': `http://localhost:${config.s3.port}/`,
16
+ 'S3 ACCESS KEY': config.s3.access_key,
17
+ 'S3 SECRET KEY': config.s3.secret_key,
18
+ 'S3 REGION': 'local',
19
+ };
20
+ }
21
+ return {
22
+ 'Storage URL': `http://localhost:${config.web.port}/storage/v1`,
23
+ };
24
+ };
25
+
26
+ module.exports = { usesMinio, storageInfo };