@@ -7,9 +7,15 @@ use crate::commands::{
7
7
toolchain:: { self , ToolchainCommand } ,
8
8
upgrade:: { self , UpgradeCommand } ,
9
9
} ;
10
- use crate :: ops:: { fuelup_show, fuelup_update} ;
11
- use anyhow:: Result ;
10
+ use crate :: {
11
+ ops:: { fuelup_show, fuelup_update} ,
12
+ toolchain:: { DistToolchainDescription , Toolchain } ,
13
+ toolchain_override:: ToolchainOverride ,
14
+ } ;
15
+ use anyhow:: { bail, Result } ;
12
16
use clap:: Parser ;
17
+ use std:: str:: FromStr ;
18
+ use tracing:: info;
13
19
14
20
#[ derive( Debug , Parser ) ]
15
21
#[ clap( name = "fuelup" , about = "Fuel Toolchain Manager" , version) ]
@@ -46,6 +52,26 @@ enum Commands {
46
52
pub fn fuelup_cli ( ) -> Result < ( ) > {
47
53
let cli = Cli :: parse ( ) ;
48
54
55
+ if let Some ( toolchain_override) = ToolchainOverride :: from_project_root ( ) {
56
+ let override_path = toolchain_override. cfg . toolchain . channel . to_string ( ) ;
57
+ let toolchain = match DistToolchainDescription :: from_str ( & override_path) {
58
+ Ok ( desc) => Toolchain :: from_path ( & desc. to_string ( ) ) ,
59
+ Err ( _) => Toolchain :: from_path ( & override_path) ,
60
+ } ;
61
+
62
+ info ! ( "Using override toolchain '{}'" , & toolchain. name) ;
63
+
64
+ if !toolchain. exists ( ) {
65
+ match cli. command {
66
+ Commands :: Toolchain ( _) => { } ,
67
+ _ => bail ! (
68
+ "Override toolchain is not installed. Please run: 'fuelup toolchain install {}'" ,
69
+ & toolchain. name,
70
+ )
71
+ }
72
+ }
73
+ }
74
+
49
75
match cli. command {
50
76
Commands :: Check ( command) => check:: exec ( command) ,
51
77
Commands :: Completions ( command) => completions:: exec ( command) ,
0 commit comments