create-platformatic 0.21.0 → 0.22.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.
- package/package.json +13 -12
- package/src/db/create-db.mjs +15 -5
- package/src/service/create-service.mjs +8 -3
- package/src/utils.mjs +3 -16
- package/test/db/create-db.test.mjs +17 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-platformatic",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "Create platformatic-db interactive tool",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -19,31 +19,32 @@
|
|
|
19
19
|
"commist": "^3.2.0",
|
|
20
20
|
"desm": "^1.3.0",
|
|
21
21
|
"es-main": "^1.2.0",
|
|
22
|
-
"execa": "^7.
|
|
23
|
-
"fastify": "^4.
|
|
22
|
+
"execa": "^7.1.1",
|
|
23
|
+
"fastify": "^4.17.0",
|
|
24
24
|
"help-me": "^4.2.0",
|
|
25
|
-
"inquirer": "^9.
|
|
25
|
+
"inquirer": "^9.2.0",
|
|
26
26
|
"log-update": "^5.0.1",
|
|
27
27
|
"minimist": "^1.2.8",
|
|
28
|
-
"mkdirp": "^2.1.
|
|
29
|
-
"ora": "^6.
|
|
28
|
+
"mkdirp": "^2.1.6",
|
|
29
|
+
"ora": "^6.3.0",
|
|
30
30
|
"pino": "^8.11.0",
|
|
31
31
|
"pino-pretty": "^10.0.0",
|
|
32
32
|
"pupa": "^3.1.0",
|
|
33
|
-
"semver": "^7.
|
|
34
|
-
"undici": "^5.
|
|
33
|
+
"semver": "^7.5.0",
|
|
34
|
+
"undici": "^5.22.0",
|
|
35
|
+
"@platformatic/config": "0.22.0"
|
|
35
36
|
},
|
|
36
37
|
"devDependencies": {
|
|
37
38
|
"ajv": "^8.12.0",
|
|
38
39
|
"c8": "^7.13.0",
|
|
39
40
|
"dotenv": "^16.0.3",
|
|
40
|
-
"esmock": "^2.1
|
|
41
|
+
"esmock": "^2.2.1",
|
|
41
42
|
"snazzy": "^9.0.0",
|
|
42
43
|
"standard": "^17.0.0",
|
|
43
44
|
"tap": "^16.3.4",
|
|
44
|
-
"yaml": "^2.2.
|
|
45
|
-
"@platformatic/db": "0.
|
|
46
|
-
"@platformatic/service": "0.
|
|
45
|
+
"yaml": "^2.2.2",
|
|
46
|
+
"@platformatic/db": "0.22.0",
|
|
47
|
+
"@platformatic/service": "0.22.0"
|
|
47
48
|
},
|
|
48
49
|
"scripts": {
|
|
49
50
|
"test": "standard | snazzy && NODE_OPTIONS=--loader=esmock c8 --100 tap --no-coverage test/*test.mjs test/*/*test.mjs",
|
package/src/db/create-db.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { writeFile, mkdir } from 'fs/promises'
|
|
1
|
+
import { writeFile, mkdir, appendFile } from 'fs/promises'
|
|
2
2
|
import { join, relative, resolve } from 'path'
|
|
3
3
|
import { findDBConfigFile, isFileAccessible } from '../utils.mjs'
|
|
4
4
|
|
|
@@ -61,8 +61,13 @@ function generateConfig (migrations, plugin, types, typescript, version) {
|
|
|
61
61
|
connectionString: '{DATABASE_URL}',
|
|
62
62
|
graphql: true,
|
|
63
63
|
openapi: true
|
|
64
|
-
}
|
|
65
|
-
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (migrations) {
|
|
68
|
+
config.migrations = {
|
|
69
|
+
dir: migrations
|
|
70
|
+
}
|
|
66
71
|
}
|
|
67
72
|
|
|
68
73
|
if (plugin === true) {
|
|
@@ -136,9 +141,14 @@ async function createDB ({ hostname, database = 'sqlite', port, migrations = 'mi
|
|
|
136
141
|
logger.info('Configuration file platformatic.db.json successfully created.')
|
|
137
142
|
|
|
138
143
|
const env = generateEnv(hostname, port, database)
|
|
139
|
-
await
|
|
144
|
+
const envFileExists = await isFileAccessible('.env', currentDir)
|
|
145
|
+
await appendFile(join(currentDir, '.env'), env)
|
|
140
146
|
await writeFile(join(currentDir, '.env.sample'), env)
|
|
141
|
-
|
|
147
|
+
if (envFileExists) {
|
|
148
|
+
logger.info('Environment file .env found, appending new environment variables to existing .env file.')
|
|
149
|
+
} else {
|
|
150
|
+
logger.info('Environment file .env successfully created.')
|
|
151
|
+
}
|
|
142
152
|
} else {
|
|
143
153
|
logger.info(`Configuration file ${accessibleConfigFilename} found, skipping creation of configuration file.`)
|
|
144
154
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { writeFile, mkdir, readFile } from 'fs/promises'
|
|
1
|
+
import { writeFile, mkdir, readFile, appendFile } from 'fs/promises'
|
|
2
2
|
import { join } from 'path'
|
|
3
3
|
import * as desm from 'desm'
|
|
4
4
|
import { findServiceConfigFile, isFileAccessible } from '../utils.mjs'
|
|
@@ -142,9 +142,14 @@ async function createService ({ hostname, port, typescript = false }, logger, cu
|
|
|
142
142
|
logger.info('Configuration file platformatic.service.json successfully created.')
|
|
143
143
|
|
|
144
144
|
const env = generateEnv(hostname, port)
|
|
145
|
-
await
|
|
145
|
+
const envFileExists = await isFileAccessible('.env', currentDir)
|
|
146
|
+
await appendFile(join(currentDir, '.env'), env)
|
|
146
147
|
await writeFile(join(currentDir, '.env.sample'), env)
|
|
147
|
-
|
|
148
|
+
if (envFileExists) {
|
|
149
|
+
logger.info('Environment file .env found, appending new environment variables to existing .env file.')
|
|
150
|
+
} else {
|
|
151
|
+
logger.info('Environment file .env successfully created.')
|
|
152
|
+
}
|
|
148
153
|
} else {
|
|
149
154
|
logger.info(`Configuration file ${accessibleConfigFilename} found, skipping creation of configuration file.`)
|
|
150
155
|
}
|
package/src/utils.mjs
CHANGED
|
@@ -4,6 +4,7 @@ import { resolve, join, dirname } from 'path'
|
|
|
4
4
|
import { createRequire } from 'module'
|
|
5
5
|
import semver from 'semver'
|
|
6
6
|
import * as desm from 'desm'
|
|
7
|
+
import ConfigManager from '@platformatic/config'
|
|
7
8
|
|
|
8
9
|
export const sleep = ms => new Promise((resolve) => setTimeout(resolve, ms))
|
|
9
10
|
export const randomBetween = (min, max) => Math.floor(Math.random() * (max - min + 1) + min)
|
|
@@ -67,22 +68,8 @@ export const validatePath = async projectPath => {
|
|
|
67
68
|
return canAccessParent
|
|
68
69
|
}
|
|
69
70
|
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
`platformatic.${type}.json`,
|
|
73
|
-
`platformatic.${type}.json5`,
|
|
74
|
-
`platformatic.${type}.yaml`,
|
|
75
|
-
`platformatic.${type}.yml`,
|
|
76
|
-
`platformatic.${type}.toml`,
|
|
77
|
-
`platformatic.${type}.tml`
|
|
78
|
-
]
|
|
79
|
-
const configFilesAccessibility = await Promise.all(configFileNames.map((fileName) => isFileAccessible(fileName, directory)))
|
|
80
|
-
const accessibleConfigFilename = configFileNames.find((value, index) => configFilesAccessibility[index])
|
|
81
|
-
return accessibleConfigFilename
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export const findDBConfigFile = async (directory) => (findConfigFile(directory, 'db'))
|
|
85
|
-
export const findServiceConfigFile = async (directory) => (findConfigFile(directory, 'service'))
|
|
71
|
+
export const findDBConfigFile = async (directory) => (ConfigManager.findConfigFile(directory, 'db'))
|
|
72
|
+
export const findServiceConfigFile = async (directory) => (ConfigManager.findConfigFile(directory, 'service'))
|
|
86
73
|
|
|
87
74
|
export const getDependencyVersion = async (dependencyName) => {
|
|
88
75
|
const require = createRequire(import.meta.url)
|
|
@@ -136,6 +136,23 @@ test('creates project with no typescript and no plugin', async ({ equal }) => {
|
|
|
136
136
|
equal(await isFileAccessible(join(tmpDir, 'plugin.js')), false)
|
|
137
137
|
})
|
|
138
138
|
|
|
139
|
+
test('creates project with no migrations', async ({ equal }) => {
|
|
140
|
+
const params = {
|
|
141
|
+
hostname: 'myhost',
|
|
142
|
+
port: 6666,
|
|
143
|
+
migrations: ''
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
await createDB(params, fakeLogger, tmpDir)
|
|
147
|
+
|
|
148
|
+
const pathToDbConfigFile = join(tmpDir, 'platformatic.db.json')
|
|
149
|
+
const dbConfigFile = readFileSync(pathToDbConfigFile, 'utf8')
|
|
150
|
+
const dbConfig = JSON.parse(dbConfigFile)
|
|
151
|
+
const { migrations } = dbConfig
|
|
152
|
+
|
|
153
|
+
equal(migrations, undefined)
|
|
154
|
+
})
|
|
155
|
+
|
|
139
156
|
test('creates project with typescript', async ({ equal, same }) => {
|
|
140
157
|
const params = {
|
|
141
158
|
hostname: 'myhost',
|