Skip to content

Commit 064968d

Browse files
committed
2.x: Added development mode to oclif
1 parent 7910bb2 commit 064968d

File tree

10 files changed

+2623
-4506
lines changed

10 files changed

+2623
-4506
lines changed

bin/dev.cmd

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@echo off
2+
3+
node "%~dp0\dev" %*

bin/dev.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/usr/bin/env ts-node
2+
// eslint-disable-next-line node/shebang, unicorn/prefer-top-level-await
3+
async function main() {
4+
const {execute} = await import('@oclif/core')
5+
await execute({development: true, dir: import.meta.url})
6+
}
7+
8+
await main()

package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,32 +10,32 @@
1010
"homepage": "https://github.com/codeenigma/ce-dev",
1111
"license": "MIT",
1212
"dependencies": {
13-
"@oclif/core": "^3.11.0",
13+
"@oclif/core": "^4",
1414
"@oclif/plugin-autocomplete": "^3.0.3",
1515
"@oclif/plugin-help": "^6.0.6",
16-
"@oclif/plugin-plugins": "^4.1.8",
16+
"@oclif/plugin-plugins": "^5",
1717
"@types/inquirer-fuzzy-path": "^2.3.9",
1818
"debug": "^4.3.4",
1919
"inquirer": "^9.2.12",
2020
"inquirer-fuzzy-path": "^2.3.0",
2121
"js-yaml": "^4.1.0",
22-
"open": "^9.1.0"
22+
"open": "^10"
2323
},
2424
"devDependencies": {
2525
"@oclif/prettier-config": "^0.2.1",
26-
"@oclif/test": "^3.1.2",
26+
"@oclif/test": "^4",
2727
"@types/inquirer": "^9.0.7",
2828
"@types/js-yaml": "^4.0.9",
2929
"@types/node": "^20.9.1",
30-
"eslint": "^8.53.0",
30+
"eslint": "^9",
3131
"eslint-config-oclif": "^5.0.0",
3232
"eslint-config-oclif-typescript": "^3.0.15",
3333
"eslint-config-prettier": "^9.0.0",
34-
"oclif": "^4.0.3",
34+
"oclif": "^4",
35+
"renamer": "^5",
3536
"shx": "^0.3.4",
3637
"ts-node": "^10.9.1",
37-
"typescript": "^5.2.2",
38-
"renamer": "^4.0.0"
38+
"typescript": "^5.2.2"
3939
},
4040
"engines": {
4141
"node": ">=18.0.0"

src/abstracts/base-cmd-abstract.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ export default abstract class BaseCmd extends Command {
9595
* Path to the user config file.
9696
*/
9797
protected userConfigFilePath = fspath.resolve(
98-
this.config.configDir + '/preferences-2.x.yml',
98+
this.config.configDir + '/preferences.yml',
9999
)
100100

101101
/**
@@ -104,6 +104,12 @@ export default abstract class BaseCmd extends Command {
104104
*/
105105
private readonly controllerManager: CeDevControllerManager
106106

107+
/**
108+
* @member
109+
* Development mode or not.
110+
*/
111+
protected developmentMode: boolean = false
112+
107113
/**
108114
* @inheritdoc
109115
*/
@@ -140,6 +146,10 @@ export default abstract class BaseCmd extends Command {
140146
this.UserConfig = this.parseYaml(this.userConfigFilePath) as UserConfig
141147
}
142148

149+
if ((typeof process.env.NODE_ENV !== 'undefined') && (process.env.NODE_ENV === 'development')) {
150+
this.developmentMode = true;
151+
}
152+
143153
this.dockerBin = this.UserConfig.docker_bin
144154
this.dockerComposeBin = this.UserConfig.docker_compose_bin
145155
this.mkcertBin = this.UserConfig.mkcert_bin
@@ -321,7 +331,7 @@ export default abstract class BaseCmd extends Command {
321331
}
322332

323333
/**
324-
* Pull controller latest image.
334+
* Pull controller latest|devel image.
325335
*
326336
* @return void
327337
*/

src/commands/build.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,13 @@ export default class BuildCmd extends BaseCmd {
7878
if (this.composeConfig['x-ce_dev']) {
7979
containerName = this.composeConfig['x-ce_dev'].project_name + '-' + name
8080
}
81+
let version = 'latest'
82+
if (this.developmentMode) {
83+
version = 'devel'
84+
}
8185

8286
ux.action.start('Committing container ' + containerName + ' as a new image.')
83-
execSync(this.dockerBin + ' commit ' + containerName + ' ' + this.dockerRegistry + '/' + containerName + ':latest', {stdio: 'inherit'})
87+
execSync(this.dockerBin + ' commit ' + containerName + ' ' + this.dockerRegistry + '/' + containerName + ':' + version, {stdio: 'inherit'})
8488
ux.action.stop()
8589
}
8690
}
@@ -91,10 +95,14 @@ export default class BuildCmd extends BaseCmd {
9195
* @return void
9296
*/
9397
private generateCompose(): void {
98+
let version = 'latest'
99+
if (this.developmentMode) {
100+
version = 'devel'
101+
}
94102
ux.action.start('Generating new compose file ' + this.composeDest + '.')
95103
for (const [name, service] of Object.entries(this.composeConfig.services)) {
96104
const containerName = this.composeConfig['x-ce_dev'].project_name + '-' + name
97-
service.image = this.dockerRegistry + '/' + containerName + ':latest'
105+
service.image = this.dockerRegistry + '/' + containerName + ':' + version
98106
}
99107

100108
YamlParser.writeYaml(this.composeDest, this.composeConfig)

src/commands/push.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,14 @@ export default class PushCmd extends DockerImagesCmd {
4747
* @return void
4848
*/
4949
private push(): void {
50+
let version = 'latest'
51+
if (this.developmentMode) {
52+
version = 'devel'
53+
}
5054
for (const name of Object.keys(this.composeConfig.services)) {
5155
const containerName = this.composeConfig['x-ce_dev'].project_name + '-' + name
5256
ux.action.start('Pushing image ' + containerName)
53-
execSync(this.dockerBin + ' push ' + this.dockerRegistry + '/' + containerName + ':latest', {stdio: 'inherit'})
57+
execSync(this.dockerBin + ' push ' + this.dockerRegistry + '/' + containerName + ':' + version, {stdio: 'inherit'})
5458
ux.action.stop()
5559
}
5660
}

src/controller-manager.ts

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ export default class ControllerManager {
4545
*/
4646
private readonly networkComposeFile: string
4747

48+
/**
49+
* @member
50+
* Development mode or not.
51+
*/
52+
protected developmentMode: boolean = false
53+
4854
public constructor(config: Config, dockerBin: string, dockerComposeBin: string, mkcertBin: string) {
4955
this.dockerBin = dockerBin
5056
this.dockerComposeBin = dockerComposeBin
@@ -58,6 +64,10 @@ export default class ControllerManager {
5864
this.config.dataDir,
5965
'docker-compose.network.yml',
6066
)
67+
68+
if ((typeof process.env.NODE_ENV !== 'undefined') && (process.env.NODE_ENV === 'development')) {
69+
this.developmentMode = true;
70+
}
6171
}
6272

6373
/**
@@ -237,13 +247,22 @@ export default class ControllerManager {
237247
* @return void
238248
*/
239249
public pullImage(): void {
240-
execSync(this.dockerBin + ' pull codeenigma/ce-dev-controller-' + AppSettings.ceDevVersion + '.x:latest', {
250+
// If in development mode, we use devel version.
251+
let version = 'latest'
252+
if (this.developmentMode) {
253+
version = 'devel'
254+
}
255+
execSync(this.dockerBin + ' pull codeenigma/ce-dev-controller-' + AppSettings.ceDevVersion + '.x:' + version, {
241256
stdio: 'inherit',
242257
})
243258
}
244259

245260
private getControllerConfig(): DockerComposeConfigBare {
246261
const ipManager = new IPManager(this.config, this.dockerBin)
262+
let version = 'latest'
263+
if (this.developmentMode) {
264+
version = 'devel'
265+
}
247266
return {
248267
networks: {
249268
ce_dev: {
@@ -256,7 +275,7 @@ export default class ControllerManager {
256275
cgroup: 'host',
257276
container_name: 'ce_dev_controller',
258277
hostname: 'ce_dev_controller',
259-
image: 'codeenigma/ce-dev-controller-'+ AppSettings.ceDevVersion + '.x:latest',
278+
image: 'codeenigma/ce-dev-controller-'+ AppSettings.ceDevVersion + '.x:' + version,
260279
networks: {
261280
ce_dev: {
262281
ipv4_address: ipManager.getControllerIP(),

templates/localgov/ce-dev/ce-dev-devel.compose.yml.j2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ x-ce_dev:
1111
- https://www.{{ project_name }}.local
1212
services:
1313
web:
14-
image: codeenigma/ce-dev-2.x:latest
14+
image: codeenigma/ce-dev-2.x:devel
1515
platform: linux/amd64
1616
cgroup: host
1717
expose:

templates/prebuild.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ usage(){
88
echo 'Available options:'
99
echo '--template: ce-dev template to use. By default: ce-dev.compose.yml'
1010
echo '--push: if we want to push the images to docker'
11+
echo '--devel: if we want to run the templates in devel mode'
1112
}
1213
# Parse options arguments.
1314
parse_options(){
@@ -20,6 +21,9 @@ parse_options(){
2021
"--push")
2122
PUSH="yes"
2223
;;
24+
"--devel")
25+
DEVEL="yes"
26+
;;
2327
*)
2428
usage
2529
exit 1
@@ -33,6 +37,7 @@ parse_options(){
3337
PROJECTS="blank drupal10"
3438
PUSH="no"
3539
TEMPLATE="ce-dev.compose.yml"
40+
DEVEL="no"
3641

3742
# Common processing.
3843
OWN_DIR=$(dirname "$0")
@@ -47,6 +52,13 @@ parse_options "$@"
4752

4853
CE_DEV_BIN="$OWN_DIR/bin/run.js"
4954

55+
if [ $DEVEL = "yes" ]; then
56+
CE_DEV_BIN="$OWN_DIR/bin/dev.js"
57+
fi
58+
59+
echo $CE_DEV_BIN
60+
exit 1
61+
5062
# Create a project.
5163
# @param $1
5264
# Project name.

0 commit comments

Comments
 (0)