Created
October 17, 2016 11:42
-
-
Save ikelos/a38626884d1a7fe057d2ce1f32003c73 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 6f6ec3cdd3a3e7fe01337b4627dc26a751ff673b Mon Sep 17 00:00:00 2001 | |
From: Mike Auty <mike.auty@gmail.com> | |
Date: Mon, 17 Oct 2016 12:37:24 +0100 | |
Subject: [PATCH] Convert the simple replace into a separate function and apply | |
only to URL locations. | |
--- | |
bin/sync | 24 ++++++++++++++---------- | |
1 file changed, 14 insertions(+), 10 deletions(-) | |
diff --git a/bin/sync b/bin/sync | |
index a212a95..6c1d5fa 100755 | |
--- a/bin/sync | |
+++ b/bin/sync | |
@@ -72,12 +72,16 @@ function fetchUrl(url, bodyIsBinary) { | |
}) | |
} | |
+function encodeScopedPackage(name) { | |
+ return name.replace("\/", "%2f"); | |
+} | |
+ | |
function fetchMetadata(name) { | |
- return fetchUrl(url.resolve(NPMJS_URL, name)).map(JSON.parse) | |
+ return fetchUrl(url.resolve(NPMJS_URL, encodeScopedPackage(name))).map(JSON.parse) | |
} | |
function fetchVersionMetadata(name, version) { | |
- return fetchUrl(url.resolve(NPMJS_URL, name + '/' + version)).map(JSON.parse) | |
+ return fetchUrl(url.resolve(NPMJS_URL, encodeScopedPackage(name) + '/' + version)).map(JSON.parse) | |
} | |
function fetchTarball(dist) { | |
@@ -91,27 +95,27 @@ function fetchPrebuiltBinary(name, version, binaryMetadata, abi, platform, arch) | |
function dependenciesToArray(dependencies) { | |
return Object.keys(dependencies || {}).map(key => { | |
return { | |
- name: key.replace("\/", "%2F"), | |
+ name: key, | |
versionRange: dependencies[key] | |
} | |
}) | |
} | |
function packageFilename(name, version) { | |
- return name + '-' + version + '.tgz' | |
+ return encodeScopedPackage(name) + '-' + version + '.tgz' | |
} | |
function packageMetadataFilePath(name) { | |
- mkdirp.sync(path.resolve(program.root, name)) | |
- return path.resolve(program.root, name + '/index.json') | |
+ mkdirp.sync(path.resolve(program.root, encodeScopedPackage(name))) | |
+ return path.resolve(program.root, encodeScopedPackage(name) + '/index.json') | |
} | |
function packageTarballFilePath(name, version) { | |
- return path.resolve(program.root, name + '/' + packageFilename(name, version)) | |
+ return path.resolve(program.root, encodeScopedPackage(name) + '/' + packageFilename(name, version)) | |
} | |
function packageTarballFileUrl(name, version) { | |
- return url.resolve(program.localUrl, name + '/' + packageFilename(name, version)) | |
+ return url.resolve(program.localUrl, encodeScopedPackage(name) + '/' + packageFilename(name, version)) | |
} | |
const collectedPackages = {} | |
@@ -192,7 +196,7 @@ function prebuiltBinaryExists(name, version, binaryMetadata, abi, platform, arch | |
} | |
function prebuiltBinaryFilePath(name, version, binaryMetadata, abi, platform, arch) { | |
- return path.resolve(program.root, name + '/' + prebuiltBinaryFileName(name, version, binaryMetadata, abi, platform, arch)) | |
+ return path.resolve(program.root, encodeScopedPackage(name) + '/' + prebuiltBinaryFileName(name, version, binaryMetadata, abi, platform, arch)) | |
} | |
function prebuiltBinaryRemotePath(name, version, binaryMetadata, abi, platform, arch) { | |
@@ -221,7 +225,7 @@ function downloadPackage(nameAndVersions) { | |
content.versions[version].dist.tarball = packageTarballFileUrl(nameAndVersions.name, version) | |
if (content.versions[version].binary) { | |
content.versions[version].binary.host = program.localUrl | |
- content.versions[version].binary.remote_path = '/' + nameAndVersions.name + '/' | |
+ content.versions[version].binary.remote_path = '/' + encodeScopedPackage(nameAndVersions.name) + '/' | |
} | |
} | |
}) | |
-- | |
2.10.1 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment