1+ //! # Configuring the tangram CLI and server
2+ //!
3+ //! Tangram can be configured by a global config file located at $HOME/.config/config.json or by passing the `--config <path>` option to the `tg` command line before any subcommand, for example
4+ //!
5+ //! ```sh
6+ //! # Run the server using a config file.
7+ //! tg --config config.json server run
8+ //! ```
19use serde_with:: serde_as;
210use std:: path:: PathBuf ;
311use tangram_client as tg;
@@ -6,57 +14,75 @@ use url::Url;
614#[ serde_as]
715#[ derive( Clone , Debug , Default , serde:: Serialize , serde:: Deserialize ) ]
816pub struct Config {
17+ /// Advanced configuration options.
918 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
1019 pub advanced : Option < Advanced > ,
1120
1221 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
1322 pub autoenv : Option < Autoenv > ,
1423
24+ /// Configure the server's build options.
1525 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
1626 pub build : Option < Build > ,
1727
28+ /// Configure the server's database options.
1829 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
1930 pub database : Option < Database > ,
2031
32+ /// Configure the server's file system monitoring options.
33+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
34+ pub file_system_monitor : Option < FileSystemMonitor > ,
35+
2136 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
2237 pub messenger : Option < Messenger > ,
2338
2439 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
2540 pub oauth : Option < Oauth > ,
2641
42+ /// Configure the server's path. Default = `$HOME/.tangram`.
2743 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
2844 pub path : Option < PathBuf > ,
2945
46+ /// A list of remote servers that this server can push and pull objects/builds from.
3047 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
3148 pub remotes : Option < Vec < Remote > > ,
3249
50+ /// Server and CLI tracing options.
3351 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
3452 pub tracing : Option < Tracing > ,
3553
54+ /// The URL of the server, if serving over tcp.
3655 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
3756 pub url : Option < Url > ,
3857
58+ /// Configurate the virtual file system.
3959 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
4060 pub vfs : Option < Vfs > ,
4161}
4262
4363#[ derive( Clone , Debug , Default , serde:: Serialize , serde:: Deserialize ) ]
4464pub struct Advanced {
65+ /// Configure how errors are displayed in the CLI.
4566 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
4667 pub error_trace_options : Option < tg:: error:: TraceOptions > ,
4768
69+ /// Configure the number of file descriptors available in the client.
4870 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
4971 pub file_descriptor_limit : Option < u64 > ,
5072
73+ /// Configure the number of file descriptors available in the server.
5174 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
5275 pub file_descriptor_semaphore_size : Option < usize > ,
5376
77+ /// Toggle whether temp directories are preserved or deleted after builds. Default = false.
5478 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
5579 pub preserve_temp_directories : Option < bool > ,
5680
81+ /// Toggle whether tokio-console support is enabled. Default = false.
5782 #[ serde( default , skip_serializing_if = "std::ops::Not::not" ) ]
5883 pub tokio_console : bool ,
5984
85+ /// Toggle whether log messages are printed to the server's stderr. Default = false.
6086 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
6187 pub write_build_logs_to_stderr : Option < bool > ,
6288}
@@ -69,7 +95,7 @@ pub struct Autoenv {
6995
7096#[ derive( Clone , Debug , Default , serde:: Serialize , serde:: Deserialize ) ]
7197pub struct Build {
72- /// Enable builds.
98+ /// Toggle whether builds are enabled on this server .
7399 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
74100 pub enable : Option < bool > ,
75101
@@ -85,6 +111,12 @@ pub enum Database {
85111 Postgres ( PostgresDatabase ) ,
86112}
87113
114+ #[ derive( Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
115+ pub struct FileSystemMonitor {
116+ /// Toggle whether the file system monitor is enabled. Default = true.
117+ pub enable : bool ,
118+ }
119+
88120#[ derive( Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
89121pub struct SqliteDatabase {
90122 /// The maximum number of connections.
@@ -149,8 +181,11 @@ pub struct RemoteBuild {
149181
150182#[ derive( Clone , Debug , Default , serde:: Serialize , serde:: Deserialize ) ]
151183pub struct Tracing {
184+ /// The filter applied to tracing messages.
152185 #[ serde( default , skip_serializing_if = "String::is_empty" ) ]
153186 pub filter : String ,
187+
188+ /// The display format of tracing messages.
154189 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
155190 pub format : Option < TracingFormat > ,
156191}
@@ -190,6 +225,7 @@ impl std::str::FromStr for TracingFormat {
190225
191226#[ derive( Clone , Debug , Default , serde:: Serialize , serde:: Deserialize ) ]
192227pub struct Vfs {
228+ /// Toggle whether the VFS is enabled. When the VFS is disabled, checkouts will be made onto local disk. Default = true.
193229 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
194230 pub enable : Option < bool > ,
195231}
0 commit comments