File tree Expand file tree Collapse file tree 6 files changed +43
-25
lines changed Expand file tree Collapse file tree 6 files changed +43
-25
lines changed Original file line number Diff line number Diff line change @@ -44,23 +44,15 @@ func activateCmd(ctx *cli.Context) error {
44
44
manager := internal .NewSdkManager ()
45
45
defer manager .Close ()
46
46
47
- sdkEnvs , err := manager .FullEnvKeys ()
47
+ sdkEnvs , err := manager .GlobalEnvKeys ()
48
48
if err != nil {
49
49
return err
50
50
}
51
51
52
- envKeys := sdkEnvs .ToEnvs ()
53
-
54
- exportEnvs := make (env.Vars )
55
- for k , v := range envKeys .Variables {
56
- exportEnvs [k ] = v
57
- }
52
+ exportEnvs := sdkEnvs .ToExportEnvs ()
58
53
59
54
_ = os .Setenv (env .HookFlag , name )
60
55
exportEnvs [env .HookFlag ] = & name
61
- osPaths := env .NewPaths (env .OsPaths )
62
- pathsStr := envKeys .Paths .Merge (osPaths ).String ()
63
- exportEnvs ["PATH" ] = & pathsStr
64
56
exportEnvs [internal .HookCurTmpPath ] = & manager .PathMeta .CurTmpPath
65
57
66
58
path := manager .PathMeta .ExecutablePath
Original file line number Diff line number Diff line change @@ -2,11 +2,12 @@ package commands
2
2
3
3
import (
4
4
"fmt"
5
+ "os"
6
+
5
7
"github.com/urfave/cli/v2"
6
8
"github.com/version-fox/vfox/internal"
7
9
"github.com/version-fox/vfox/internal/env"
8
10
"github.com/version-fox/vfox/internal/shell"
9
- "os"
10
11
)
11
12
12
13
var Cd = & cli.Command {
Original file line number Diff line number Diff line change @@ -127,9 +127,13 @@ func envFlag(ctx *cli.Context, mode string) error {
127
127
var sdkEnvs internal.SdkEnvs
128
128
var err error
129
129
if mode == "full" {
130
- sdkEnvs , err = manager .FullEnvKeys ()
130
+ sdkEnvs , err = manager .SessionEnvKeys (internal.SessionEnvOptions {
131
+ WithGlobalEnv : true ,
132
+ })
131
133
} else {
132
- sdkEnvs , err = manager .AggregateEnvKeys ()
134
+ sdkEnvs , err = manager .SessionEnvKeys (internal.SessionEnvOptions {
135
+ WithGlobalEnv : false ,
136
+ })
133
137
}
134
138
135
139
if err != nil {
@@ -140,16 +144,7 @@ func envFlag(ctx *cli.Context, mode string) error {
140
144
return nil
141
145
}
142
146
143
- envKeys := sdkEnvs .ToEnvs ()
144
-
145
- exportEnvs := make (env.Vars )
146
- for k , v := range envKeys .Variables {
147
- exportEnvs [k ] = v
148
- }
149
-
150
- osPaths := env .NewPaths (env .OsPaths )
151
- pathsStr := envKeys .Paths .Merge (osPaths ).String ()
152
- exportEnvs ["PATH" ] = & pathsStr
147
+ exportEnvs := sdkEnvs .ToExportEnvs ()
153
148
154
149
exportStr := s .Export (exportEnvs )
155
150
fmt .Println (exportStr )
Original file line number Diff line number Diff line change @@ -70,7 +70,7 @@ type Manager struct {
70
70
Config * config.Config
71
71
}
72
72
73
- func (m * Manager ) FullEnvKeys () (SdkEnvs , error ) {
73
+ func (m * Manager ) GlobalEnvKeys () (SdkEnvs , error ) {
74
74
workToolVersion , err := toolset .NewToolVersion (m .PathMeta .WorkingDirectory )
75
75
if err != nil {
76
76
return nil , err
@@ -93,7 +93,11 @@ func (m *Manager) FullEnvKeys() (SdkEnvs, error) {
93
93
}, ShellLocation )
94
94
}
95
95
96
- func (m * Manager ) AggregateEnvKeys () (SdkEnvs , error ) {
96
+ type SessionEnvOptions struct {
97
+ WithGlobalEnv bool
98
+ }
99
+
100
+ func (m * Manager ) SessionEnvKeys (opt SessionEnvOptions ) (SdkEnvs , error ) {
97
101
workToolVersion , err := toolset .NewToolVersion (m .PathMeta .WorkingDirectory )
98
102
if err != nil {
99
103
return nil , err
@@ -122,6 +126,14 @@ func (m *Manager) AggregateEnvKeys() (SdkEnvs, error) {
122
126
}
123
127
defer flushCache .Close ()
124
128
129
+ if opt .WithGlobalEnv {
130
+ homeToolVersion , err := toolset .NewToolVersion (m .PathMeta .HomePath )
131
+ if err != nil {
132
+ return nil , err
133
+ }
134
+ tvs = append (toolset.MultiToolVersions {homeToolVersion }, tvs ... )
135
+ }
136
+
125
137
var sdkEnvs []* SdkEnv
126
138
127
139
tvs .FilterTools (func (name , version string ) bool {
Original file line number Diff line number Diff line change @@ -64,6 +64,21 @@ func (d *SdkEnvs) ToEnvs() *env.Envs {
64
64
return envs
65
65
}
66
66
67
+ func (d * SdkEnvs ) ToExportEnvs () env.Vars {
68
+ envKeys := d .ToEnvs ()
69
+
70
+ exportEnvs := make (env.Vars )
71
+ for k , v := range envKeys .Variables {
72
+ exportEnvs [k ] = v
73
+ }
74
+
75
+ osPaths := env .NewPaths (env .OsPaths )
76
+ pathsStr := envKeys .Paths .Merge (osPaths ).String ()
77
+ exportEnvs ["PATH" ] = & pathsStr
78
+
79
+ return exportEnvs
80
+ }
81
+
67
82
type Sdk struct {
68
83
sdkManager * Manager
69
84
Plugin * LuaPlugin
Original file line number Diff line number Diff line change @@ -22,6 +22,9 @@ const nushellConfig = `
22
22
export-env {
23
23
def --env updateVfoxEnvironment [] {
24
24
let envData = (^'{{.SelfPath}}' env -s nushell --full | from json)
25
+ if ($envData | is-empty) {
26
+ return
27
+ }
25
28
load-env $envData.envsToSet
26
29
hide-env ...$envData.envsToUnset
27
30
}
You can’t perform that action at this time.
0 commit comments