Skip to content

Commit 43383f5

Browse files
committed
feat(cli): download examples via npm
1 parent 1323bfb commit 43383f5

File tree

5 files changed

+23
-77
lines changed

5 files changed

+23
-77
lines changed

packages/cli/generators/example/clone-example.js

Lines changed: 0 additions & 67 deletions
This file was deleted.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Copyright IBM Corp. 2018. All Rights Reserved.
2+
// Node module: @loopback/cli
3+
// This file is licensed under the MIT License.
4+
// License text available at https://opensource.org/licenses/MIT
5+
6+
'use strict';
7+
8+
const path = require('path');
9+
const pacote = require('pacote');
10+
11+
module.exports = function downloadAndExtractExample(exampleName, cwd) {
12+
const packageSpec = `@loopback/example-${exampleName}`;
13+
const outDir = path.join(cwd, `loopback4-example-${exampleName}`);
14+
await pacote.extract(packageSpec, outDir);
15+
return outDir;
16+
};

packages/cli/generators/example/index.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
const BaseGenerator = require('../../lib/base-generator');
99
const chalk = require('chalk');
10-
const cloneExampleFromGitHub = require('./clone-example');
10+
const downloadAndExtractExample = require('./downloader');
1111
const path = require('path');
1212
const utils = require('../../lib/utils');
1313

@@ -84,12 +84,11 @@ module.exports = class extends BaseGenerator {
8484
);
8585
}
8686

87-
cloneExampleFromGitHub() {
87+
downloadAndExtract() {
8888
if (this.shouldExit()) return false;
8989
const cwd = process.cwd();
90-
return cloneExampleFromGitHub(this.exampleName, cwd).then(o => {
91-
this.outDir = path.relative(cwd, o);
92-
});
90+
const absOutDir = await downloadAndExtractExample(this.exampleName, cwd);
91+
this.outDir = path.relative(cwd, absOutDir);
9392
}
9493

9594
end() {

packages/cli/package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,11 @@
4444
"change-case": "^3.0.2",
4545
"debug": "^3.1.0",
4646
"gulp-rename": "^1.2.2",
47-
"gunzip-maybe": "^1.4.1",
4847
"lodash": "^4.17.5",
4948
"minimist": "^1.2.0",
49+
"pacote": "^8.1.1",
5050
"regenerate": "^1.3.3",
51-
"request": "^2.85.0",
5251
"semver": "^5.5.0",
53-
"tar-fs": "^1.16.0",
5452
"unicode-10.0.0": "^0.7.4",
5553
"validate-npm-package-name": "^3.0.0",
5654
"yeoman-generator": "^2.0.3"

packages/cli/test/integration/generators/clone-example.integration.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
const promisify = require('util').promisify;
99

10-
const cloneExampleFromGitHub = require('../../../generators/example/clone-example');
10+
const downloadAndExtractExample = require('../../../generators/example/downloader');
1111
const expect = require('@loopback/testlab').expect;
1212
const fs = require('fs');
1313
const TestSandbox = require('@loopback/testlab').TestSandbox;
@@ -26,7 +26,7 @@ describe('cloneExampleFromGitHub (SLOW)', function() {
2626
beforeEach('reset sandbox', () => sandbox.reset());
2727

2828
it('extracts project files', async () => {
29-
const outDir = await cloneExampleFromGitHub(VALID_EXAMPLE, SANDBOX_PATH);
29+
const outDir = await downloadAndExtractExample(VALID_EXAMPLE, SANDBOX_PATH);
3030
const actualFiles = await glob('**', {
3131
cwd: outDir,
3232
ignore: 'node_modules/**',

0 commit comments

Comments
 (0)