11mod args;
22mod execve;
33mod help;
4+ mod query;
5+ mod setup;
46#[ cfg( test) ]
57mod tests;
68
@@ -9,7 +11,6 @@ use std::{collections::HashMap, error::Error, fmt::Write, sync::Arc, time::Durat
911use execve:: execve;
1012use indicatif:: { ProgressBar , ProgressState , ProgressStyle } ;
1113use libpkgx:: {
12- config:: Config ,
1314 env:: { self , construct_platform_case_aware_env_key} ,
1415 hydrate:: hydrate,
1516 install_multi, pantry_db,
@@ -45,31 +46,14 @@ async fn main() -> Result<(), Box<dyn Error>> {
4546 println ! ( "pkgx {}" , env!( "CARGO_PKG_VERSION" ) ) ;
4647 return Ok ( ( ) ) ;
4748 }
49+ args:: Mode :: Query => {
50+ let ( conn, _, _, _) = setup:: setup ( & flags) . await ?;
51+ return query:: query ( & args, flags. silent , & conn) ;
52+ }
4853 args:: Mode :: X => ( ) ,
4954 }
5055
51- let config = Config :: new ( ) ?;
52-
53- std:: fs:: create_dir_all ( config. pantry_db_file . parent ( ) . unwrap ( ) ) ?;
54- let mut conn = Connection :: open ( & config. pantry_db_file ) ?;
55-
56- let spinner = if flags. silent || flags. quiet {
57- None
58- } else {
59- let spinner = indicatif:: ProgressBar :: new_spinner ( ) ;
60- spinner. enable_steady_tick ( Duration :: from_millis ( 100 ) ) ;
61- Some ( spinner)
62- } ;
63-
64- let did_sync = if sync:: should ( & config) ? {
65- if let Some ( spinner) = & spinner {
66- spinner. set_message ( "syncing pkg-db…" ) ;
67- }
68- sync:: ensure ( & config, & mut conn) . await ?;
69- true
70- } else {
71- false
72- } ;
56+ let ( mut conn, did_sync, config, spinner) = setup:: setup ( & flags) . await ?;
7357
7458 if let Some ( spinner) = & spinner {
7559 spinner. set_message ( "resolving pkg graph…" ) ;
0 commit comments