Skip to content

Commit 13e0dbb

Browse files
bestanderkentaromiura
authored andcommitted
Mirror cached issue 80 (#92)
* wip * Feature: --save to mirror now works when cache in .fbkpm exists * nits var names * nit: var names
1 parent 97aadbe commit 13e0dbb

File tree

3 files changed

+32
-30
lines changed

3 files changed

+32
-30
lines changed

src/package-fetcher.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ export default class PackageFetcher {
3131
reporter: Reporter;
3232
config: Config;
3333

34-
async fetch(ref: PackageReference): Promise<FetchedManifest> {
35-
let dest = this.config.generateHardModulePath(ref);
34+
async fetch(reference: PackageReference, overwriteDestination: boolean): Promise<FetchedManifest> {
35+
let dest = this.config.generateHardModulePath(reference);
3636

37-
if (await this.config.isValidModuleDest(dest)) {
37+
if (!overwriteDestination && await this.config.isValidModuleDest(dest)) {
3838
let { hash, package: pkg } = await this.config.readPackageMetadata(dest);
3939
return {
4040
package: pkg,
@@ -46,7 +46,7 @@ export default class PackageFetcher {
4646
// remove as the module may be invalid
4747
await fs.unlink(dest);
4848

49-
let remote = ref.remote;
49+
let remote = reference.remote;
5050
invariant(remote, "Missing remote");
5151

5252
let Fetcher = fetchers[remote.type];
@@ -55,7 +55,7 @@ export default class PackageFetcher {
5555
await fs.mkdirp(dest);
5656

5757
try {
58-
let fetcher = new Fetcher(remote, this.config, ref.saveForOffline);
58+
let fetcher = new Fetcher(remote, this.config, reference.saveForOffline);
5959
return await fetcher.fetch(dest);
6060
} catch (err) {
6161
try {
@@ -67,10 +67,10 @@ export default class PackageFetcher {
6767
}
6868
}
6969

70-
async maybeFetch(ref: PackageReference): Promise<?FetchedManifest> {
71-
let promise = this.fetch(ref);
70+
async maybeFetch(reference: PackageReference): Promise<?FetchedManifest> {
71+
let promise = this.fetch(reference, false);
7272

73-
if (ref.optional) {
73+
if (reference.optional) {
7474
// swallow the error
7575
promise = promise.catch((err) => {
7676
this.reporter.error(err.message);

src/package-request.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ export default class PackageRequest {
273273
//
274274
let { package: newInfo, hash, dest } = await this.resolver.fetchingQueue.push(
275275
info.name,
276-
() => this.resolver.fetcher.fetch(ref)
276+
() => this.resolver.fetcher.fetch(ref, this.resolver.lockfile.save && !!offlineMirrorPath)
277277
);
278278

279279
// replace resolved remote URL with local path if lockfile is in save mode and we have a path

test/commands/install.js

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -883,34 +883,36 @@ test("[network] install --save should ignore cache", () => {
883883
let mirrorPath = "mirror-for-offline";
884884

885885
let fixture = "install-save-to-mirror-when-cached";
886-
return run({}, ["left-pad@1.1.0"], fixture, async (config) => {
886+
return run({}, ["left-pad@1.1.0"], fixture, async (config, reporter) => {
887887
assert.equal(
888888
await getPackageVersion(config, "left-pad"),
889889
"1.1.0"
890890
);
891891

892-
return run({save: true}, ["left-pad@1.1.0"], fixture, async (config) => {
893-
assert.equal(
894-
await getPackageVersion(config, "left-pad"),
895-
"1.1.0"
896-
);
897-
assert.deepEqual(
898-
JSON.parse(await fs.readFile(path.join(config.cwd, "package.json"))).dependencies,
899-
{"left-pad": "1.1.0"}
900-
);
892+
let lockfile = await createLockfile(config.cwd, false, true);
893+
let install = new Install("install", {save: true}, ["left-pad@1.1.0"], config, reporter, lockfile);
894+
await install.init();
895+
assert.equal(
896+
await getPackageVersion(config, "left-pad"),
897+
"1.1.0"
898+
);
899+
assert.deepEqual(
900+
JSON.parse(await fs.readFile(path.join(config.cwd, "package.json"))).dependencies,
901+
{"left-pad": "1.1.0"}
902+
);
901903

902-
let lockFileWritten = await fs.readFile(path.join(config.cwd, "fbkpm.lock"));
903-
let lockFileLines = lockFileWritten.split("\n").filter((line) => !!line);
904-
assert.equal(lockFileLines[0], "left-pad@1.1.0:");
905-
assert.equal(lockFileLines.length, 4);
906-
assert.notEqual(lockFileLines[3].indexOf("resolved left-pad-1.1.0.tgz"), -1);
904+
let mirror = await fs.walk(path.join(config.cwd, mirrorPath));
905+
assert.equal(mirror.length, 1);
906+
assert.equal(mirror[0].relative, "left-pad-1.1.0.tgz");
907907

908-
let mirror = await fs.walk(path.join(config.cwd, mirrorPath));
909-
assert.equal(mirror.length, 1);
910-
assert.equal(mirror[0].relative, "left-pad-1.1.0.tgz");
911-
await fs.unlink(path.join(config.cwd, mirrorPath));
912-
await fs.unlink(path.join(config.cwd, "package.json"));
908+
let lockFileWritten = await fs.readFile(path.join(config.cwd, "fbkpm.lock"));
909+
let lockFileLines = lockFileWritten.split("\n").filter((line) => !!line);
910+
assert.equal(lockFileLines[0], "left-pad@1.1.0:");
911+
assert.equal(lockFileLines.length, 4);
912+
assert.notEqual(lockFileLines[3].indexOf("resolved left-pad-1.1.0.tgz"), -1);
913+
914+
await fs.unlink(path.join(config.cwd, mirrorPath));
915+
await fs.unlink(path.join(config.cwd, "package.json"));
913916

914-
});
915917
});
916918
});

0 commit comments

Comments
 (0)