mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
fix(install/global): do not error if path is an npm pkg and relative file (#26975)
Closes https://github.com/denoland/deno/issues/26969
This commit is contained in:
parent
566a6c2ce7
commit
6ee8efc5b4
4 changed files with 70 additions and 14 deletions
|
@ -359,6 +359,7 @@ async fn install_global(
|
||||||
// ensure the module is cached
|
// ensure the module is cached
|
||||||
let factory = CliFactory::from_flags(flags.clone());
|
let factory = CliFactory::from_flags(flags.clone());
|
||||||
|
|
||||||
|
let cli_options = factory.cli_options()?;
|
||||||
let http_client = factory.http_client_provider();
|
let http_client = factory.http_client_provider();
|
||||||
let deps_http_cache = factory.global_http_cache()?;
|
let deps_http_cache = factory.global_http_cache()?;
|
||||||
let mut deps_file_fetcher = FileFetcher::new(
|
let mut deps_file_fetcher = FileFetcher::new(
|
||||||
|
@ -381,10 +382,11 @@ async fn install_global(
|
||||||
));
|
));
|
||||||
|
|
||||||
let entry_text = install_flags_global.module_url.as_str();
|
let entry_text = install_flags_global.module_url.as_str();
|
||||||
let req = super::registry::AddRmPackageReq::parse(entry_text);
|
if !cli_options.initial_cwd().join(entry_text).exists() {
|
||||||
|
// check for package requirement missing prefix
|
||||||
// found a package requirement but missing the prefix
|
if let Ok(Err(package_req)) =
|
||||||
if let Ok(Err(package_req)) = req {
|
super::registry::AddRmPackageReq::parse(entry_text)
|
||||||
|
{
|
||||||
if jsr_resolver.req_to_nv(&package_req).await.is_some() {
|
if jsr_resolver.req_to_nv(&package_req).await.is_some() {
|
||||||
bail!(
|
bail!(
|
||||||
"{entry_text} is missing a prefix. Did you mean `{}`?",
|
"{entry_text} is missing a prefix. Did you mean `{}`?",
|
||||||
|
@ -397,6 +399,7 @@ async fn install_global(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
factory
|
factory
|
||||||
.main_module_graph_container()
|
.main_module_graph_container()
|
||||||
|
|
32
tests/registry/npm/cli.ts/registry.json
Normal file
32
tests/registry/npm/cli.ts/registry.json
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"name": "cli.ts",
|
||||||
|
"description": "Package with name like a file path",
|
||||||
|
"dist-tags": {
|
||||||
|
"latest": "2.2.0"
|
||||||
|
},
|
||||||
|
"versions": {
|
||||||
|
"2.2.0": {
|
||||||
|
"name": "cli.ts",
|
||||||
|
"version": "2.2.0",
|
||||||
|
"description": "Package with name like a file path",
|
||||||
|
"license": "MIT",
|
||||||
|
"author": {},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
},
|
||||||
|
"gitHead": "91440c5a1615354fb9419354650937c434eb9f49",
|
||||||
|
"_id": "cli.ts@2.2.0",
|
||||||
|
"_nodeVersion": "10.16.0",
|
||||||
|
"_npmVersion": "6.9.0",
|
||||||
|
"dist": {
|
||||||
|
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
|
||||||
|
"shasum": "ee8472dbb129e727b31e8a10a427dee9dfe4008b",
|
||||||
|
"tarball": "http://localhost:4260/cli.ts/cli.ts-2.2.0.tgz",
|
||||||
|
"fileCount": 5,
|
||||||
|
"unpackedSize": 5508
|
||||||
|
},
|
||||||
|
"directories": {},
|
||||||
|
"_hasShrinkwrap": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"tempDir": true,
|
||||||
|
"tests": {
|
||||||
|
"file_exists": {
|
||||||
|
"steps": [{
|
||||||
|
"args": ["eval", "Deno.writeTextFileSync('cli.ts', '')"],
|
||||||
|
"output": "[WILDCARD]"
|
||||||
|
}, {
|
||||||
|
// success
|
||||||
|
"args": "install --root ./bins -g --name my-cli cli.ts",
|
||||||
|
"output": "[WILDCARD]"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
"file_not_exists": {
|
||||||
|
"args": "install --root ./bins -g --name my-cli cli.ts",
|
||||||
|
"output": "file_not_exists.out",
|
||||||
|
"exitCode": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
error: cli.ts is missing a prefix. Did you mean `deno install -g npm:cli.ts`?
|
Loading…
Reference in a new issue