11use std:: path:: { Path , PathBuf } ;
22
33use anyhow:: Context as _;
4+ use spin_common:: ui:: quoted_path;
45use spin_factor_key_value:: runtime_config:: spin:: { self as key_value} ;
56use spin_factor_key_value:: { DefaultLabelResolver as _, KeyValueFactor } ;
67use spin_factor_llm:: { spin as llm, LlmFactor } ;
@@ -19,9 +20,9 @@ use spin_factors::{
1920 runtime_config:: toml:: TomlKeyTracker , FactorRuntimeConfigSource , RuntimeConfigSourceFinalizer ,
2021} ;
2122use spin_key_value_spin:: { SpinKeyValueRuntimeConfig , SpinKeyValueStore } ;
22- use spin_runtime_factors:: TriggerFactorsRuntimeConfig ;
2323use spin_sqlite as sqlite;
2424use spin_trigger:: cli:: UserProvidedPath ;
25+ use toml:: Value ;
2526
2627/// The default state directory for the trigger.
2728pub const DEFAULT_STATE_DIR : & str = ".spin" ;
@@ -48,6 +49,41 @@ pub struct ResolvedRuntimeConfig<T> {
4849 pub toml : toml:: Table ,
4950}
5051
52+ impl < T > ResolvedRuntimeConfig < T > {
53+ pub fn summarize ( & self , runtime_config_path : Option < & Path > ) {
54+ let summarize_labeled_typed_tables = |key| {
55+ let mut summaries = vec ! [ ] ;
56+ if let Some ( tables) = self . toml . get ( key) . and_then ( Value :: as_table) {
57+ for ( label, config) in tables {
58+ if let Some ( ty) = config. get ( "type" ) . and_then ( Value :: as_str) {
59+ summaries. push ( format ! ( "[{key}.{label}: {ty}]" ) )
60+ }
61+ }
62+ }
63+ summaries
64+ } ;
65+
66+ let mut summaries = vec ! [ ] ;
67+ // [key_value_store.<label>: <type>]
68+ summaries. extend ( summarize_labeled_typed_tables ( "key_value_store" ) ) ;
69+ // [sqlite_database.<label>: <type>]
70+ summaries. extend ( summarize_labeled_typed_tables ( "sqlite_database" ) ) ;
71+ // [llm_compute: <type>]
72+ if let Some ( table) = self . toml . get ( "llm_compute" ) . and_then ( Value :: as_table) {
73+ if let Some ( ty) = table. get ( "type" ) . and_then ( Value :: as_str) {
74+ summaries. push ( format ! ( "[llm_compute: {ty}" ) ) ;
75+ }
76+ }
77+ if !summaries. is_empty ( ) {
78+ let summaries = summaries. join ( ", " ) ;
79+ let from_path = runtime_config_path
80+ . map ( |path| format ! ( "from {}" , quoted_path( path) ) )
81+ . unwrap_or_default ( ) ;
82+ println ! ( "Using runtime config {summaries} {from_path}" ) ;
83+ }
84+ }
85+ }
86+
5187impl < T > ResolvedRuntimeConfig < T >
5288where
5389 T : for < ' a , ' b > TryFrom < TomlRuntimeConfigSource < ' a , ' b > > ,
95131 let runtime_config_dir = runtime_config_path
96132 . and_then ( Path :: parent)
97133 . map ( ToOwned :: to_owned) ;
98- let toml_resolver =
99- TomlResolver :: new ( & toml, local_app_dir, provided_state_dir, provided_log_dir) ;
100134 let tls_resolver = runtime_config_dir. clone ( ) . map ( SpinTlsRuntimeConfig :: new) ;
101135 let key_value_config_resolver =
102136 key_value_config_resolver ( runtime_config_dir, toml_resolver. state_dir ( ) ?) ;
0 commit comments