| 145 | } |
| 146 | |
| 147 | func executeWithOptionsAndExecRead( |
| 148 | wsl wsllib.WslLib, |
| 149 | reg wsllib.WslReg, |
| 150 | name string, |
| 151 | opts configOptions, |
| 152 | execRead func(wsllib.WslLib, string, string) (string, uint32, error), |
| 153 | ) error { |
| 154 | uid, flags, err := wslapi.GetConfig(wsl, name) |
| 155 | if err != nil { |
| 156 | errutil.ErrorRedPrintln("ERR: Failed to GetDistributionConfiguration") |
| 157 | return errutil.NewDisplayError(err, true, true, false) |
| 158 | } |
| 159 | |
| 160 | switch opts.option { |
| 161 | case configOptionDefaultUID: |
| 162 | uid = opts.uid |
| 163 | |
| 164 | case configOptionDefaultUser: |
| 165 | str, _, errtmp := execRead(wsl, name, "id -u "+fileutil.DQEscapeString(opts.user)) |
| 166 | err = errtmp |
| 167 | if err == nil { |
| 168 | intUID, convErr := strconv.Atoi(str) |
| 169 | err = convErr |
| 170 | uid = uint64(intUID) |
| 171 | if err != nil { |
| 172 | err = errors.New(str) |
| 173 | } |
| 174 | } |
| 175 | |
| 176 | case configOptionAppendPath: |
| 177 | flags = updateFlag(flags, wsllib.FlagAppendNTPath, opts.enabled) |
| 178 | |
| 179 | case configOptionMountDrive: |
| 180 | flags = updateFlag(flags, wsllib.FlagEnableDriveMounting, opts.enabled) |
| 181 | |
| 182 | case configOptionWslVersion: |
| 183 | err = reg.SetWslVersion(name, opts.wslVersion) |
| 184 | |
| 185 | case configOptionDefaultTerm: |
| 186 | profile, profileErr := reg.GetProfileFromName(name) |
| 187 | err = profileErr |
| 188 | if err != nil { |
| 189 | break |
| 190 | } |
| 191 | profile.WsldlTerm = opts.defaultTerm |
| 192 | err = reg.WriteProfile(profile) |
| 193 | |
| 194 | case configOptionFlagsVal: |
| 195 | flags = opts.flags |
| 196 | |
| 197 | default: |
| 198 | err = os.ErrInvalid |
| 199 | } |
| 200 | |
| 201 | if err != nil { |
| 202 | return errutil.NewDisplayError(err, true, true, false) |
| 203 | } |
| 204 | |