Skip to content

Commit 67f0612

Browse files
committed
feat: 新增 build 完之後以詢問方式要不要發布和刪除
1 parent 9461564 commit 67f0612

10 files changed

Lines changed: 84 additions & 27 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ in your package.json
2626
"dockerRegistry": "docker.bearests.com:8443",
2727
"scripts": {
2828
"docker:build": "bear-react-docker docker --publicUrl=/recommend --dockerfile=./node_modules/bear-react-docker/config/Dockerfile",
29-
"docker:push": "bear-react-docker push && bear-react-docker remove"
29+
"docker:push": "bear-react-docker push"
3030
}
3131
}
3232
```
@@ -42,7 +42,7 @@ package.json
4242
"dockerRegistry": "docker.bearests.com:8443",
4343
"scripts": {
4444
"docker:build": "bear-react-docker build --publicUrl=/recommend",
45-
"docker:push": "bear-react-docker push && bear-react-docker remove"
45+
"docker:push": "bear-react-docker push"
4646
}
4747
}
4848
```

lib/build-docker/index.ts

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,14 @@ import ora from 'ora';
44
import {bash, renameDockerImage} from '../script/utils';
55
import {CLIError} from '../script/cli';
66
import logger from '../script/logger';
7+
import {initDefault} from '../config';
8+
import pushDocker from '../push-docker';
9+
10+
const {Select} = require('enquirer');
711

812
interface IArgs {
9-
publicUrl: string
10-
dockerfile: string
13+
publicUrl?: string
14+
dockerfile?: string
1115
}
1216

1317

@@ -73,12 +77,12 @@ function buildDockerImage(imageName: string, version: string, remoteAddress: str
7377

7478

7579

76-
async function run(args: IArgs) {
77-
const imageName = process.env.npm_package_name ?? 'bear-example';
78-
const imageVersion = process.env.npm_package_version ?? '0.0.0';
79-
const remoteAddress = process.env.npm_package_dockerRegistry ?? 'docker.bearests.com:8443';
80-
const publicUrl = typeof args.publicUrl !== 'undefined' ? args.publicUrl: '';
81-
const dockerfile = typeof args.dockerfile !== 'undefined' ? args.dockerfile: './';
80+
async function run(args?: IArgs) {
81+
const imageName = process.env.npm_package_name ?? initDefault.packageName;
82+
const imageVersion = process.env.npm_package_version ?? initDefault.packageVersion;
83+
const remoteAddress = process.env.npm_package_dockerRegistry ?? initDefault.dockerRegistry;
84+
const publicUrl = typeof args?.publicUrl !== 'undefined' ? args.publicUrl: initDefault.publicUrl;
85+
const dockerfile = typeof args?.dockerfile !== 'undefined' ? args.dockerfile: initDefault.dockerfilePath;
8286

8387
console.log(`ready release ${imageName}:${imageVersion} ...`);
8488

@@ -87,6 +91,19 @@ async function run(args: IArgs) {
8791

8892
// By OSX Notice
8993
bash(`osascript -e 'display notification "${targetImageName} done" with title "build done"'`);
94+
95+
const prompt = new Select({
96+
name: 'confirmPush',
97+
message: 'do you want to push it?',
98+
choices: [
99+
{name: 'y', message: 'Yes'},
100+
{name: 'n', message: 'No'},
101+
],
102+
});
103+
const confirmPush = await prompt.run();
104+
if(confirmPush === 'y'){
105+
pushDocker();
106+
}
90107
}
91108

92109
export default run;

lib/build-docker/node-run.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import buildDocker from './index';
2+
3+
// $ ts-node lib/build-docker/node-run.ts
4+
buildDocker();

lib/config.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export const initDefault = {
2+
packageName: 'bear-example',
3+
packageVersion: '0.0.0',
4+
dockerRegistry: 'docker.bear.com:8443',
5+
publicUrl: '',
6+
dockerfilePath: './',
7+
};

lib/push-docker/index.ts

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
import {bash, renameDockerImage} from '../script/utils';
22
import logger from '../script/logger';
3+
import {initDefault} from '../config';
4+
import removeDocker from '../remove-docker';
35

4-
interface IArgs {
5-
publicUrl: string
6-
dockerfile: string
7-
}
8-
6+
const {Select} = require('enquirer');
97

108

119

12-
async function run(args: IArgs) {
13-
const imageName = process.env.npm_package_name ?? 'bear-example';
14-
const imageVersion = process.env.npm_package_version ?? '0.0.0';
15-
const remoteAddress = process.env.npm_package_dockerRegistry ?? 'docker.bearests.com:8443';
10+
async function run() {
11+
const imageName = process.env.npm_package_name ?? initDefault.packageName;
12+
const imageVersion = process.env.npm_package_version ?? initDefault.packageVersion;
13+
const remoteAddress = process.env.npm_package_dockerRegistry ?? initDefault.dockerRegistry;
1614

1715
console.log(`ready release ${imageName}:${imageVersion} ...`);
1816

@@ -25,6 +23,19 @@ async function run(args: IArgs) {
2523

2624
// By OSX Notice
2725
bash(`osascript -e 'display notification "${targetImageName} done" with title "publish done"'`);
26+
27+
const prompt = new Select({
28+
name: 'confirmDelete',
29+
message: 'do you want to delete it?',
30+
choices: [
31+
{name: 'y', message: 'Yes'},
32+
{name: 'n', message: 'No'},
33+
],
34+
});
35+
const confirmDelete = await prompt.run();
36+
if(confirmDelete === 'y'){
37+
removeDocker();
38+
}
2839
}
2940

3041
export default run;

lib/push-docker/node-run.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import pushDocker from './index';
2+
3+
// $ ts-node lib/push-docker/node-run.ts
4+
pushDocker();

lib/remove-docker/index.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
import {bash, renameDockerImage} from '../script/utils';
22
import logger from '../script/logger';
3+
import {initDefault} from '../config';
34

4-
interface IArgs {
5-
publicUrl: string
6-
dockerfile: string
7-
}
85

96

107

11-
async function run(args: IArgs) {
12-
const imageName = process.env.npm_package_name ?? 'bear-example';
13-
const imageVersion = process.env.npm_package_version ?? '0.0.0';
14-
const remoteAddress = process.env.npm_package_dockerRegistry ?? 'docker.bearests.com:8443';
8+
async function run() {
9+
const imageName = process.env.npm_package_name ?? initDefault.packageName;
10+
const imageVersion = process.env.npm_package_version ?? initDefault.packageVersion;
11+
const remoteAddress = process.env.npm_package_dockerRegistry ?? initDefault.dockerRegistry;
1512

1613
// Build Image
1714
const targetImageName = renameDockerImage(imageName, imageVersion, remoteAddress);

lib/remove-docker/node-run.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import removeDocker from './index';
2+
3+
// $ ts-node lib/remove-docker/node-run.ts
4+
removeDocker();

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
"cross-env": "^7.0.2",
5757
"cz-conventional-changelog": "3.3.0",
5858
"cz-customizable": "6.3.0",
59+
"enquirer": "^2.3.6",
5960
"eslint": "^8.8.0",
6061
"jest": "^27.4.7",
6162
"microbundle": "0.14.2",

yarn.lock

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1834,6 +1834,11 @@ ansi-align@^3.0.0:
18341834
dependencies:
18351835
string-width "^4.1.0"
18361836

1837+
ansi-colors@^4.1.1:
1838+
version "4.1.3"
1839+
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
1840+
integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
1841+
18371842
ansi-escapes@^3.2.0:
18381843
version "3.2.0"
18391844
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
@@ -3177,6 +3182,13 @@ end-of-stream@^1.1.0:
31773182
dependencies:
31783183
once "^1.4.0"
31793184

3185+
enquirer@^2.3.6:
3186+
version "2.3.6"
3187+
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
3188+
integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
3189+
dependencies:
3190+
ansi-colors "^4.1.1"
3191+
31803192
entities@^2.0.0:
31813193
version "2.2.0"
31823194
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"

0 commit comments

Comments
 (0)