@@ -5,17 +5,17 @@ use std::sync::Arc;
55use deno_config:: deno_json:: NewestDependencyDate ;
66use deno_config:: deno_json:: NodeModulesDirMode ;
77use deno_core:: error:: AnyError ;
8+ use deno_core:: serde_json;
89use deno_core:: url:: Url ;
10+ use deno_graph:: packages:: JsrPackageInfo ;
911use deno_path_util:: ResolveUrlOrPathError ;
1012use deno_runtime:: WorkerExecutionMode ;
1113use deno_runtime:: deno_permissions:: PermissionsContainer ;
1214
1315use crate :: args:: DeployFlags ;
1416use crate :: args:: Flags ;
15- use crate :: args:: jsr_api_url;
1617use crate :: factory:: CliFactory ;
1718use crate :: ops;
18- use crate :: registry;
1919
2020pub async fn deploy (
2121 mut flags : Flags ,
@@ -33,41 +33,36 @@ pub async fn deploy(
3333
3434 let mut factory = CliFactory :: from_flags ( Arc :: new ( flags) ) ;
3535
36- let maybe_specifier_override =
36+ let specifier =
3737 if let Ok ( specifier) = std:: env:: var ( "DENO_DEPLOY_CLI_SPECIFIER" ) {
3838 let specifier =
3939 Url :: parse ( & specifier) . map_err ( ResolveUrlOrPathError :: UrlParse ) ?;
4040 if let Ok ( path) = specifier. to_file_path ( ) {
4141 factory. set_initial_cwd ( path) ;
4242 }
4343
44- Some ( specifier)
44+ specifier
4545 } else {
46- None
46+ let registry_url = crate :: args:: jsr_url ( ) ;
47+ let file = factory
48+ . file_fetcher ( ) ?
49+ . fetch_bypass_permissions (
50+ & registry_url. join ( "@deploy/deno/meta.json" ) . unwrap ( ) ,
51+ )
52+ . await ?;
53+ let info = serde_json:: from_slice :: < JsrPackageInfo > ( & file. source ) ?;
54+ let latest_version = info
55+ . versions
56+ . keys ( )
57+ . max ( )
58+ . expect ( "expected @deno/deploy to be published" ) ;
59+ Url :: parse ( & format ! ( "jsr:@deno/deploy@{latest_version}" ) )
60+ . map_err ( ResolveUrlOrPathError :: UrlParse ) ?
4761 } ;
4862
49- let client = factory. http_client_provider ( ) . get_or_create ( ) ?;
50- let registry_api_url = jsr_api_url ( ) ;
51-
52- let response =
53- registry:: get_package ( & client, registry_api_url, "deno" , "deploy" ) . await ?;
54- let res = registry:: parse_response :: < registry:: Package > ( response) . await ?;
55-
5663 let worker_factory =
5764 Arc :: new ( factory. create_cli_main_worker_factory ( ) . await ?) ;
5865
59- let specifier = if let Some ( specifier) = maybe_specifier_override {
60- specifier
61- } else {
62- Url :: parse ( & format ! (
63- "jsr:@deno/deploy@{}" ,
64- res
65- . latest_version
66- . expect( "expected @deno/deploy to be published" )
67- ) )
68- . map_err ( ResolveUrlOrPathError :: UrlParse ) ?
69- } ;
70-
7166 let mut worker = worker_factory
7267 . create_custom_worker (
7368 WorkerExecutionMode :: Deploy ,
0 commit comments