create-pkgbld 1.1.10 → 1.2.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.
Files changed (3) hide show
  1. package/dist/index.cjs +62 -122
  2. package/dist/index.mjs +62 -122
  3. package/package.json +3 -8
package/dist/index.cjs CHANGED
@@ -7,134 +7,72 @@ var fs = require('fs/promises');
7
7
  var userName = require('git-user-name');
8
8
  var gitConfig = require('parse-git-config');
9
9
  var minimist = require('minimist');
10
- var degit = require('degit');
11
10
 
12
11
  async function execute() {
13
- const myPkg = await readPackage(path.resolve(__dirname, '..'));
14
- console.log('create-pkgbld ' + myPkg.pkg.version);
12
+ // report version
13
+ {
14
+ const createPkgBldPackage = await readPackage(path.resolve(__dirname, '..'));
15
+ console.log('create-pkgbld ' + createPkgBldPackage.pkg.version);
16
+ }
15
17
  const parsedArgs = minimist(process.argv.slice(2));
16
- const packageName = parsedArgs._[0];
17
- const dir = packageName ?? '.';
18
+ const targetDir = path.join(process.cwd(), parsedArgs._[0] ?? '.');
19
+ const packageName = path.basename(targetDir);
18
20
  let cancelled = false;
19
- const chooseAction = await prompts({
20
- type: 'select',
21
- name: 'action',
22
- message: 'What do you need to do?',
23
- choices: [
24
- { title: 'Create Monorepo Root', value: 'root' },
25
- { title: 'Create a Subpackage', value: 'subpackage' }
26
- ],
27
- initial: 1
28
- }, { onCancel });
21
+ const response = await prompts([{
22
+ type: 'text',
23
+ name: 'name',
24
+ message: 'package name',
25
+ initial: packageName
26
+ }, {
27
+ type: 'text',
28
+ name: 'version',
29
+ message: 'version',
30
+ initial: '0.0.1'
31
+ }, {
32
+ type: 'text',
33
+ name: 'description',
34
+ message: 'description',
35
+ initial: ''
36
+ }, {
37
+ type: 'text',
38
+ name: 'license',
39
+ message: 'license',
40
+ initial: 'MIT'
41
+ }, {
42
+ type: 'text',
43
+ name: 'author',
44
+ message: 'author',
45
+ initial: userName() ?? ''
46
+ }], { onCancel });
29
47
  if (cancelled) {
30
48
  process.exit(-1);
31
49
  }
32
- let rootPkg = {
33
- pkg: {},
34
- readme: ''
50
+ const gitInfo = {
51
+ homepage: '',
52
+ repository: undefined,
53
+ bugs: undefined
35
54
  };
36
- if (chooseAction.action === 'subpackage') {
37
- rootPkg = await readPackage(path.resolve(dir, packageName ? '..' : '.'));
38
- }
39
- const template = chooseAction.action === 'root' ? 'kshutkin/monorepo-root' : 'kshutkin/monorepo-package';
40
- const emitter = degit(template, {
41
- cache: false,
42
- force: true,
43
- verbose: true,
44
- });
45
- emitter.on('info', (info) => {
46
- console.log(info.message);
47
- });
48
- await emitter.clone(dir);
49
- const basePackageName = (packageName && path.basename(packageName)) || path.basename(process.cwd());
50
- if (chooseAction.action === 'root') {
51
- const response = await prompts([{
52
- type: 'text',
53
- name: 'name',
54
- message: 'package name',
55
- initial: basePackageName
56
- }, {
57
- type: 'text',
58
- name: 'scope',
59
- message: 'scope (without @ or empty)'
60
- }, {
61
- type: 'text',
62
- name: 'description',
63
- message: 'description',
64
- initial: ''
65
- }], { onCancel });
66
- if (cancelled) {
67
- process.exit(-1);
55
+ try {
56
+ const gitCfg = await gitConfig();
57
+ if (gitCfg) {
58
+ const url = gitCfg['remote "origin"'].url;
59
+ gitInfo.homepage = url.replace('.git', `/blob/main/${packageName}/README.md`);
60
+ gitInfo.repository = {
61
+ type: 'git',
62
+ url: `git+${url}`
63
+ };
64
+ gitInfo.bugs = {
65
+ url: url.replace('.git', '/issues')
66
+ };
68
67
  }
69
- const fileName = path.join(dir, '.github/workflows/main.yml');
70
- let actionsTemplate = (await fs.readFile(fileName)).toString();
71
- actionsTemplate = actionsTemplate.replace('scope: # @echo scope', response.scope ? `scope: '@${response.scope}'` : '');
72
- await fs.writeFile(fileName, actionsTemplate);
73
- const readmeFileName = path.join(dir, 'README.md');
74
- const readme = `# ${response.name}\n${response.description}\n\n## Packages`;
75
- await fs.writeFile(readmeFileName, readme);
76
68
  }
77
- if (chooseAction.action === 'subpackage') {
78
- const response = await prompts([{
79
- type: 'text',
80
- name: 'name',
81
- message: 'package name',
82
- initial: basePackageName
83
- }, {
84
- type: 'text',
85
- name: 'version',
86
- message: 'version',
87
- initial: '1.0.0'
88
- }, {
89
- type: 'text',
90
- name: 'description',
91
- message: 'description',
92
- initial: ''
93
- }, {
94
- type: 'text',
95
- name: 'license',
96
- message: 'license',
97
- initial: 'MIT'
98
- }, {
99
- type: 'text',
100
- name: 'author',
101
- message: 'author',
102
- initial: userName() ?? ''
103
- }], { onCancel });
104
- if (cancelled) {
105
- process.exit(-1);
106
- }
107
- const gitInfo = {
108
- homepage: '',
109
- repository: undefined,
110
- bugs: undefined
111
- };
112
- try {
113
- const gitCfg = await gitConfig();
114
- if (gitCfg) {
115
- const url = gitCfg['remote "origin"'].url;
116
- gitInfo.homepage = url.replace('.git', `/blob/main/${basePackageName}/README.md`);
117
- gitInfo.repository = {
118
- type: 'git',
119
- url: `git+${url}`
120
- };
121
- gitInfo.bugs = {
122
- url: url.replace('.git', '/issues')
123
- };
124
- }
125
- }
126
- catch (e) {
127
- /* ignore */
128
- }
129
- const pkg = await readPackage(dir);
130
- Object.assign(pkg.pkg, response, gitInfo);
131
- pkg.readme = `# ${response.name}`;
132
- await writePackage(dir, pkg);
133
- rootPkg.pkg.workspaces ??= [];
134
- rootPkg.pkg.workspaces.push(basePackageName);
135
- rootPkg.readme += `\n- [${basePackageName}](./${basePackageName}/README.md)`;
136
- await writePackage(path.resolve(dir, '..'), rootPkg);
69
+ catch (e) {
70
+ /* ignore */
137
71
  }
72
+ const pkg = await readPackage(targetDir);
73
+ Object.assign(pkg.pkg, response, gitInfo);
74
+ pkg.readme = `# ${response.name}`;
75
+ await writePackage(targetDir, pkg);
138
76
  function onCancel() {
139
77
  cancelled = true;
140
78
  }
@@ -151,16 +89,18 @@ async function readPackage(dir) {
151
89
  readme: readmeFile.toString()
152
90
  };
153
91
  }
154
- catch (e) {
155
- console.error(e);
156
- process.exit(-1);
157
- }
92
+ catch (e) { /**/ }
93
+ return {
94
+ pkg: {},
95
+ readme: ''
96
+ };
158
97
  }
159
98
  async function writePackage(dir, pkg) {
160
99
  const packageFileName = path.resolve(dir, 'package.json');
161
100
  const readmeFileName = path.resolve(dir, 'README.md');
162
101
  try {
163
- await fs.writeFile(packageFileName, JSON.stringify(pkg.pkg, null, 2));
102
+ await fs.mkdir(dir, { recursive: true });
103
+ await fs.writeFile(packageFileName, JSON.stringify(pkg.pkg, null, 2), {});
164
104
  await fs.writeFile(readmeFileName, pkg.readme);
165
105
  }
166
106
  catch (e) {
package/dist/index.mjs CHANGED
@@ -4,134 +4,72 @@ import fs from 'fs/promises';
4
4
  import userName from 'git-user-name';
5
5
  import gitConfig from 'parse-git-config';
6
6
  import minimist from 'minimist';
7
- import degit from 'degit';
8
7
 
9
8
  async function execute() {
10
- const myPkg = await readPackage(path.resolve(__dirname, '..'));
11
- console.log('create-pkgbld ' + myPkg.pkg.version);
9
+ // report version
10
+ {
11
+ const createPkgBldPackage = await readPackage(path.resolve(__dirname, '..'));
12
+ console.log('create-pkgbld ' + createPkgBldPackage.pkg.version);
13
+ }
12
14
  const parsedArgs = minimist(process.argv.slice(2));
13
- const packageName = parsedArgs._[0];
14
- const dir = packageName ?? '.';
15
+ const targetDir = path.join(process.cwd(), parsedArgs._[0] ?? '.');
16
+ const packageName = path.basename(targetDir);
15
17
  let cancelled = false;
16
- const chooseAction = await prompts({
17
- type: 'select',
18
- name: 'action',
19
- message: 'What do you need to do?',
20
- choices: [
21
- { title: 'Create Monorepo Root', value: 'root' },
22
- { title: 'Create a Subpackage', value: 'subpackage' }
23
- ],
24
- initial: 1
25
- }, { onCancel });
18
+ const response = await prompts([{
19
+ type: 'text',
20
+ name: 'name',
21
+ message: 'package name',
22
+ initial: packageName
23
+ }, {
24
+ type: 'text',
25
+ name: 'version',
26
+ message: 'version',
27
+ initial: '0.0.1'
28
+ }, {
29
+ type: 'text',
30
+ name: 'description',
31
+ message: 'description',
32
+ initial: ''
33
+ }, {
34
+ type: 'text',
35
+ name: 'license',
36
+ message: 'license',
37
+ initial: 'MIT'
38
+ }, {
39
+ type: 'text',
40
+ name: 'author',
41
+ message: 'author',
42
+ initial: userName() ?? ''
43
+ }], { onCancel });
26
44
  if (cancelled) {
27
45
  process.exit(-1);
28
46
  }
29
- let rootPkg = {
30
- pkg: {},
31
- readme: ''
47
+ const gitInfo = {
48
+ homepage: '',
49
+ repository: undefined,
50
+ bugs: undefined
32
51
  };
33
- if (chooseAction.action === 'subpackage') {
34
- rootPkg = await readPackage(path.resolve(dir, packageName ? '..' : '.'));
35
- }
36
- const template = chooseAction.action === 'root' ? 'kshutkin/monorepo-root' : 'kshutkin/monorepo-package';
37
- const emitter = degit(template, {
38
- cache: false,
39
- force: true,
40
- verbose: true,
41
- });
42
- emitter.on('info', (info) => {
43
- console.log(info.message);
44
- });
45
- await emitter.clone(dir);
46
- const basePackageName = (packageName && path.basename(packageName)) || path.basename(process.cwd());
47
- if (chooseAction.action === 'root') {
48
- const response = await prompts([{
49
- type: 'text',
50
- name: 'name',
51
- message: 'package name',
52
- initial: basePackageName
53
- }, {
54
- type: 'text',
55
- name: 'scope',
56
- message: 'scope (without @ or empty)'
57
- }, {
58
- type: 'text',
59
- name: 'description',
60
- message: 'description',
61
- initial: ''
62
- }], { onCancel });
63
- if (cancelled) {
64
- process.exit(-1);
52
+ try {
53
+ const gitCfg = await gitConfig();
54
+ if (gitCfg) {
55
+ const url = gitCfg['remote "origin"'].url;
56
+ gitInfo.homepage = url.replace('.git', `/blob/main/${packageName}/README.md`);
57
+ gitInfo.repository = {
58
+ type: 'git',
59
+ url: `git+${url}`
60
+ };
61
+ gitInfo.bugs = {
62
+ url: url.replace('.git', '/issues')
63
+ };
65
64
  }
66
- const fileName = path.join(dir, '.github/workflows/main.yml');
67
- let actionsTemplate = (await fs.readFile(fileName)).toString();
68
- actionsTemplate = actionsTemplate.replace('scope: # @echo scope', response.scope ? `scope: '@${response.scope}'` : '');
69
- await fs.writeFile(fileName, actionsTemplate);
70
- const readmeFileName = path.join(dir, 'README.md');
71
- const readme = `# ${response.name}\n${response.description}\n\n## Packages`;
72
- await fs.writeFile(readmeFileName, readme);
73
65
  }
74
- if (chooseAction.action === 'subpackage') {
75
- const response = await prompts([{
76
- type: 'text',
77
- name: 'name',
78
- message: 'package name',
79
- initial: basePackageName
80
- }, {
81
- type: 'text',
82
- name: 'version',
83
- message: 'version',
84
- initial: '1.0.0'
85
- }, {
86
- type: 'text',
87
- name: 'description',
88
- message: 'description',
89
- initial: ''
90
- }, {
91
- type: 'text',
92
- name: 'license',
93
- message: 'license',
94
- initial: 'MIT'
95
- }, {
96
- type: 'text',
97
- name: 'author',
98
- message: 'author',
99
- initial: userName() ?? ''
100
- }], { onCancel });
101
- if (cancelled) {
102
- process.exit(-1);
103
- }
104
- const gitInfo = {
105
- homepage: '',
106
- repository: undefined,
107
- bugs: undefined
108
- };
109
- try {
110
- const gitCfg = await gitConfig();
111
- if (gitCfg) {
112
- const url = gitCfg['remote "origin"'].url;
113
- gitInfo.homepage = url.replace('.git', `/blob/main/${basePackageName}/README.md`);
114
- gitInfo.repository = {
115
- type: 'git',
116
- url: `git+${url}`
117
- };
118
- gitInfo.bugs = {
119
- url: url.replace('.git', '/issues')
120
- };
121
- }
122
- }
123
- catch (e) {
124
- /* ignore */
125
- }
126
- const pkg = await readPackage(dir);
127
- Object.assign(pkg.pkg, response, gitInfo);
128
- pkg.readme = `# ${response.name}`;
129
- await writePackage(dir, pkg);
130
- rootPkg.pkg.workspaces ??= [];
131
- rootPkg.pkg.workspaces.push(basePackageName);
132
- rootPkg.readme += `\n- [${basePackageName}](./${basePackageName}/README.md)`;
133
- await writePackage(path.resolve(dir, '..'), rootPkg);
66
+ catch (e) {
67
+ /* ignore */
134
68
  }
69
+ const pkg = await readPackage(targetDir);
70
+ Object.assign(pkg.pkg, response, gitInfo);
71
+ pkg.readme = `# ${response.name}`;
72
+ await writePackage(targetDir, pkg);
135
73
  function onCancel() {
136
74
  cancelled = true;
137
75
  }
@@ -148,16 +86,18 @@ async function readPackage(dir) {
148
86
  readme: readmeFile.toString()
149
87
  };
150
88
  }
151
- catch (e) {
152
- console.error(e);
153
- process.exit(-1);
154
- }
89
+ catch (e) { /**/ }
90
+ return {
91
+ pkg: {},
92
+ readme: ''
93
+ };
155
94
  }
156
95
  async function writePackage(dir, pkg) {
157
96
  const packageFileName = path.resolve(dir, 'package.json');
158
97
  const readmeFileName = path.resolve(dir, 'README.md');
159
98
  try {
160
- await fs.writeFile(packageFileName, JSON.stringify(pkg.pkg, null, 2));
99
+ await fs.mkdir(dir, { recursive: true });
100
+ await fs.writeFile(packageFileName, JSON.stringify(pkg.pkg, null, 2), {});
161
101
  await fs.writeFile(readmeFileName, pkg.readme);
162
102
  }
163
103
  catch (e) {
package/package.json CHANGED
@@ -1,11 +1,8 @@
1
1
  {
2
- "version": "1.1.10",
2
+ "version": "1.2.0",
3
3
  "license": "MIT",
4
4
  "name": "create-pkgbld",
5
- "author": {
6
- "name": "Konstantin Shutkin"
7
- },
8
- "funding": "https://www.donationalerts.com/r/excitingcode",
5
+ "author": "Konstantin Shutkin",
9
6
  "bin": "./dist/index.cjs",
10
7
  "exports": {
11
8
  ".": {
@@ -37,15 +34,13 @@
37
34
  "init"
38
35
  ],
39
36
  "devDependencies": {
40
- "@types/degit": "2.8.3",
41
37
  "@types/git-user-name": "2.0.1",
42
38
  "@types/parse-git-config": "3.0.1",
43
39
  "@types/prompts": "2.4.4",
44
40
  "@types/minimist": "1.2.2",
45
- "pkgbld": "1.16.3"
41
+ "pkgbld": "1.16.6"
46
42
  },
47
43
  "dependencies": {
48
- "degit": "2.8.4",
49
44
  "git-user-name": "2.0.0",
50
45
  "minimist": "1.2.8",
51
46
  "parse-git-config": "3.0.0",