8000 Merge pull request #156 from vuejs/in-place · unclay/vue-cli@435ceb6 · GitHub
[go: up one dir, main page]

Skip to content

Commit 435ceb6

Browse files
authored
Merge pull request vuejs#156 from vuejs/in-place
Add and document `inPlace` property.
2 parents 5bbd73e + fc7fdbb commit 435ceb6

File tree

5 files changed

+43
-7
lines changed

5 files changed

+43
-7
lines changed

README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,24 @@ Files under `test` will only be generated if the user answered yes to the prompt
163163

164164
Note that the `dot` option for minimatch is set to `true` so glob patterns would also match dotfiles by default.
165165

166+
#### Additional data available in meta.{js,json}
167+
168+
- `destDirName` - destination directory name
169+
170+
```json
171+
{
172+
"completeMessage": "To get started:\n\n cd {{destDirName}}\n npm install\n npm run dev"
173+
}
174+
```
175+
176+
- `inPlace` - generating template into current directory
177+
178+
```json
179+
{
180+
"completeMessage": "{{#inPlace}}To get started:\n\n npm install\n npm run dev.{{else}}To get started:\n\n cd {{destDirName}}\n npm install\n npm run dev.{{/inPlace}}"
181+
}
182+
```
183+
166184
### License
167185

168186
[MIT](http://opensource.org/licenses/MIT)

lib/generate.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ module.exports = function generate (name, src, dest, done) {
3434
var metalsmith = Metalsmith(path.join(src, 'template'))
3535
var data = Object.assign(metalsmith.metadata(), {
3636
destDirName: name,
37+
inPlace: dest === process.cwd(),
3738
noEscape: true
3839
})
3940
opts.helpers && Object.keys(opts.helpers).map(function (key) {
@@ -50,6 +51,8 @@ module.exports = function generate (name, src, dest, done) {
5051
done(err)
5152
logMessage(opts.completeMessage, data)
5253
})
54+
55+
return data
5356
}
5457

5558
/**
@@ -108,7 +111,6 @@ function renderTemplateFiles (files, metalsmith, done) {
108111
*
109112
* @param {String} message
110113
* @param {Object} data
111-
* @param {Function} cb
112114
*/
113115

114116
function logMessage (message, data) {

test/e2e/mock-meta-json/meta.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"completeMessage": "{{#inPlace}}To get started:\n\n npm install\n npm run dev.{{else}}To get started:\n\n cd {{destDirName}}\n npm install\n npm run dev.{{/inPlace}}"
3+
}

test/e2e/mock-metadata-repo-js/meta.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
module.exports = {
32
prompts: {
43
description: {
@@ -12,4 +11,4 @@ module.exports = {
1211
return str.toUpperCase()
1312
}
1413
}
15-
}
14+
}

test/e2e/test.js

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const extend = Object.assign || require('util')._extend
1111
const generate = require('../../lib/generate')
1212
const metadata = require('../../lib/options')
1313

14+
const MOCK_META_JSON_PATH = './test/e2e/mock-meta-json'
1415
const MOCK_TEMPLATE_REPO_PATH = './test/e2e/mock-template-repo'
1516
const MOCK_TEMPLATE_BUILD_PATH = path.resolve('./test/e2e/mock-template-build')
1617
const MOCK_METADATA_REPO_JS_PATH = './test/e2e/mock-metadata-repo-js'
@@ -43,18 +44,16 @@ describe('vue-cli', () => {
4344
noEscape: true
4445
}
4546

46-
it('read metadata from json', done => {
47+
it('read metadata from json', () => {
4748
const meta = metadata('test-pkg', MOCK_TEMPLATE_REPO_PATH)
4849
expect(meta).to.be.an('object')
4950
expect(meta.prompts).to.have.property('description')
50-
done()
5151
})
5252

53-
it('read metadata from js', done => {
53+
it('read metadata from js', () => {
5454
const meta = metadata('test-pkg', MOCK_METADATA_REPO_JS_PATH)
5555
expect(meta).to.be.an('object')
5656
expect(meta.prompts).to.have.property('description')
57-
done()
5857
})
5958

6059
it('helpers', done => {
@@ -67,6 +66,21 @@ describe('vue-cli', () => {
6766
})
6867
})
6968

69+
it('adds additional data to meta data', () => {
70+
const data = generate('test', MOCK_META_JSON_PATH, MOCK_TEMPLATE_BUILD_PATH)
71+
expect(data.destDirName).to.equal('test')
72+
expect(data.inPlace).to.equal(false)
73+
})
74+
75+
it('sets `inPlace` to true when generating in same directory', () => {
76+
const currentDir = process.cwd()
77+
process.chdir(MOCK_TEMPLATE_BUILD_PATH)
78+
const data = generate('test', MOCK_META_JSON_PATH, MOCK_TEMPLATE_BUILD_PATH)
79+
expect(data.destDirName).to.equal('test')
80+
expect(data.inPlace).to.equal(true)
81+
process.chdir(currentDir)
82+
})
83+
7084
it('template generation', done => {
7185
monkeyPatchInquirer(answers)
7286
generate('test', MOCK_TEMPLATE_REPO_PATH, MOCK_TEMPLATE_BUILD_PATH, err => {

0 commit comments

Comments
 (0)
0