Skip to content

Commit 2febbac

Browse files
committed
refactor(log): replace manual conditional verbosity with debug logs
1 parent 0427c22 commit 2febbac

21 files changed

Lines changed: 273 additions & 187 deletions

File tree

cmd/apply/apply.go

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,7 @@ func ApplyCommand(cfg *settings.Settings) *cobra.Command {
4848
return err
4949
}
5050
}
51-
return nil
52-
},
53-
PreRunE: func(cmd *cobra.Command, args []string) error {
51+
5452
if opts.NoActivate && opts.NoBoot {
5553
if opts.InstallBootloader {
5654
return fmt.Errorf("--install-bootloader requires activation, remove --no-activate and/or --no-boot to use this option")
@@ -70,8 +68,20 @@ func ApplyCommand(cfg *settings.Settings) *cobra.Command {
7068
return fmt.Errorf("--impure is required when using --tag for flake configurations")
7169
}
7270
}
71+
7372
return nil
7473
},
74+
PreRun: func(cmd *cobra.Command, args []string) {
75+
ctx := cmd.Context()
76+
log := logger.FromContext(ctx)
77+
78+
if opts.Verbose {
79+
log.SetLogLevel(logger.LogLevelDebug)
80+
}
81+
82+
ctx = logger.WithLogger(ctx, log)
83+
cmd.SetContext(ctx)
84+
},
7585
RunE: func(cmd *cobra.Command, args []string) error {
7686
return cmdUtils.CommandErrorHandler(applyMain(cmd, &opts))
7787
},
@@ -178,9 +188,7 @@ func applyMain(cmd *cobra.Command, opts *cmdOpts.ApplyOpts) error {
178188
}
179189
}
180190

181-
if opts.Verbose {
182-
log.Step("Looking for configuration...")
183-
}
191+
log.Step("Looking for configuration...")
184192

185193
var nixConfig configuration.Configuration
186194
if opts.FlakeRef != "" {
@@ -190,7 +198,7 @@ func applyMain(cmd *cobra.Command, opts *cmdOpts.ApplyOpts) error {
190198
return err
191199
}
192200
} else {
193-
c, err := configuration.FindConfiguration(log, cfg, opts.NixOptions.Includes, opts.Verbose)
201+
c, err := configuration.FindConfiguration(log, cfg, opts.NixOptions.Includes)
194202
if err != nil {
195203
log.Errorf("failed to find configuration: %v", err)
196204
return err
@@ -231,7 +239,6 @@ func applyMain(cmd *cobra.Command, opts *cmdOpts.ApplyOpts) error {
231239

232240
if err := upgradeChannels(s, &upgradeChannelsOptions{
233241
UpgradeAll: opts.UpgradeAllChannels,
234-
Verbose: opts.Verbose,
235242
}); err != nil {
236243
log.Warnf("failed to update channels: %v", err)
237244
log.Warnf("continuing with existing channels", err)
@@ -258,9 +265,7 @@ func applyMain(cmd *cobra.Command, opts *cmdOpts.ApplyOpts) error {
258265
generationTag := opts.GenerationTag
259266
if generationTag == "" {
260267
if tagVar := os.Getenv("NIXOS_GENERATION_TAG"); tagVar != "" {
261-
if opts.Verbose {
262-
log.Info("using explicitly set NIXOS_GENERATION_TAG variable for generation tag")
263-
}
268+
log.Debugf("using explicitly set NIXOS_GENERATION_TAG variable for generation tag")
264269
generationTag = tagVar
265270
}
266271
}
@@ -304,7 +309,6 @@ func applyMain(cmd *cobra.Command, opts *cmdOpts.ApplyOpts) error {
304309
DryBuild: dryBuild,
305310
UseNom: useNom,
306311
GenerationTag: generationTag,
307-
Verbose: opts.Verbose,
308312

309313
CmdFlags: cmd.Flags(),
310314
NixOpts: &opts.NixOptions,
@@ -328,17 +332,16 @@ func applyMain(cmd *cobra.Command, opts *cmdOpts.ApplyOpts) error {
328332
}
329333

330334
if buildType == configuration.SystemBuildTypeSystem {
331-
if opts.Verbose && dryBuild {
332-
log.Infof("this is a dry build, no activation will be performed")
335+
if dryBuild {
336+
log.Debugf("this is a dry build, no activation will be performed")
333337
}
334338
return nil
335339
}
336340

337341
log.Step("Comparing changes...")
338342

339343
err = generation.RunDiffCommand(s, constants.CurrentSystem, resultLocation, &generation.DiffCommandOptions{
340-
UseNvd: cfg.UseNvd,
341-
Verbose: opts.Verbose,
344+
UseNvd: cfg.UseNvd,
342345
})
343346
if err != nil {
344347
log.Errorf("failed to run diff command: %v", err)
@@ -385,11 +388,9 @@ func applyMain(cmd *cobra.Command, opts *cmdOpts.ApplyOpts) error {
385388
createGeneration := !opts.Dry && !opts.NoBoot
386389

387390
if createGeneration {
388-
if opts.Verbose {
389-
log.Step("Setting system profile...")
390-
}
391+
log.Step("Setting system profile...")
391392

392-
if err := activation.AddNewNixProfile(s, opts.ProfileName, resultLocation, opts.Verbose); err != nil {
393+
if err := activation.AddNewNixProfile(s, opts.ProfileName, resultLocation); err != nil {
393394
log.Errorf("failed to set system profile: %v", err)
394395
return err
395396
}
@@ -414,7 +415,7 @@ func applyMain(cmd *cobra.Command, opts *cmdOpts.ApplyOpts) error {
414415
}
415416

416417
log.Step("Rolling back system profile...")
417-
if err := activation.SetNixProfileGeneration(s, "system", previousGenNumber, opts.Verbose); err != nil {
418+
if err := activation.SetNixProfileGeneration(s, opts.ProfileName, previousGenNumber); err != nil {
418419
log.Errorf("failed to rollback system profile: %v", err)
419420
log.Info("make sure to rollback the system manually before deleting anything!")
420421
}
@@ -438,7 +439,6 @@ func applyMain(cmd *cobra.Command, opts *cmdOpts.ApplyOpts) error {
438439

439440
err = activation.SwitchToConfiguration(s, resultLocation, stcAction, &activation.SwitchToConfigurationOptions{
440441
InstallBootloader: opts.InstallBootloader,
441-
Verbose: opts.Verbose,
442442
Specialisation: specialisation,
443443
})
444444
if err != nil {
@@ -453,7 +453,6 @@ func applyMain(cmd *cobra.Command, opts *cmdOpts.ApplyOpts) error {
453453
const channelDirectory = constants.NixProfileDirectory + "/per-user/root/channels"
454454

455455
type upgradeChannelsOptions struct {
456-
Verbose bool
457456
UpgradeAll bool
458457
}
459458

@@ -479,9 +478,7 @@ func upgradeChannels(s system.CommandRunner, opts *upgradeChannelsOptions) error
479478
}
480479
}
481480

482-
if opts.Verbose {
483-
s.Logger().CmdArray(argv)
484-
}
481+
s.Logger().CmdArray(argv)
485482

486483
cmd := system.NewCommand(argv[0], argv[1:]...)
487484
_, err := s.Run(cmd)

cmd/enter/enter.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55

66
cmdOpts "github.com/nix-community/nixos-cli/internal/cmd/opts"
77
cmdUtils "github.com/nix-community/nixos-cli/internal/cmd/utils"
8+
"github.com/nix-community/nixos-cli/internal/logger"
89
)
910

1011
func EnterCommand() *cobra.Command {
@@ -14,13 +15,24 @@ func EnterCommand() *cobra.Command {
1415
Use: "enter [flags] [-- ARGS...]",
1516
Short: "Chroot into a NixOS installation",
1617
Long: "Enter a NixOS chroot environment.",
17-
PreRunE: func(cmd *cobra.Command, args []string) error {
18+
Args: func(cmd *cobra.Command, args []string) error {
1819
if len(args) > 0 {
1920
opts.CommandArray = args
2021
}
2122

2223
return nil
2324
},
25+
PreRun: func(cmd *cobra.Command, args []string) {
26+
ctx := cmd.Context()
27+
log := logger.FromContext(ctx)
28+
29+
if opts.Verbose {
30+
log.SetLogLevel(logger.LogLevelDebug)
31+
}
32+
33+
ctx = logger.WithLogger(ctx, log)
34+
cmd.SetContext(ctx)
35+
},
2436
RunE: func(cmd *cobra.Command, args []string) error {
2537
return cmdUtils.CommandErrorHandler(enterMain(cmd, &opts))
2638
},

cmd/enter/run.go

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,14 @@ func enterMain(cmd *cobra.Command, opts *cmdOpts.EnterOpts) error {
3535

3636
isReexec := os.Getenv(NIXOS_REEXEC) == "1"
3737
if !isReexec {
38-
err := execSandboxedEnterProcess(log, opts.Verbose)
38+
err := execSandboxedEnterProcess(log)
3939
if err != nil {
4040
log.Errorf("failed to exec sandboxed process with unshare: %v", err)
4141
}
4242
return err
4343
}
4444

45-
if opts.Verbose {
46-
log.Info("sandboxed process successfully")
47-
log.Print()
48-
}
45+
log.Debug("sandboxed process successfully")
4946

5047
log.Step("Bind-mounting resources...")
5148
log.Info("remounting root privately for namespace")
@@ -125,7 +122,7 @@ resolvConfDone:
125122

126123
log.Step("Activating system...")
127124

128-
err = activate(s, opts.RootLocation, systemClosure, opts.Verbose, opts.Silent)
125+
err = activate(s, opts.RootLocation, systemClosure, opts.Silent)
129126
if err != nil {
130127
log.Errorf("failed to activate system: %v", err)
131128
return err
@@ -146,7 +143,7 @@ resolvConfDone:
146143
args = []string{bash, "--login"}
147144
}
148145

149-
err = startChroot(s, opts.RootLocation, args, opts.Verbose)
146+
err = startChroot(s, opts.RootLocation, args)
150147
if err != nil {
151148
log.Errorf("failed to start chroot: %v", err)
152149
return err
@@ -157,10 +154,8 @@ resolvConfDone:
157154

158155
const NIXOS_REEXEC = "_NIXOS_ENTER_REEXEC"
159156

160-
func execSandboxedEnterProcess(log logger.Logger, verbose bool) error {
161-
if verbose {
162-
log.Infof("sandboxing process with unshare")
163-
}
157+
func execSandboxedEnterProcess(log logger.Logger) error {
158+
log.Debugf("sandboxing process with unshare")
164159

165160
argv := []string{"unshare", "--fork", "--mount", "--uts", "--mount-proc", "--pid"}
166161
argv = append(argv, os.Args...)
@@ -173,9 +168,7 @@ func execSandboxedEnterProcess(log logger.Logger, verbose bool) error {
173168
env := os.Environ()
174169
env = append(env, NIXOS_REEXEC+"=1")
175170

176-
if verbose {
177-
log.CmdArray(argv)
178-
}
171+
log.CmdArray(argv)
179172

180173
unsharePath, err := exec.LookPath(argv[0])
181174
if err != nil {
@@ -223,15 +216,13 @@ func findResolvConfLocation(root string) (string, error) {
223216
return finalLocation, nil
224217
}
225218

226-
func activate(s system.CommandRunner, root string, systemClosure string, verbose bool, silent bool) error {
219+
func activate(s system.CommandRunner, root string, systemClosure string, silent bool) error {
227220
localeArchive := filepath.Join(systemClosure, "sw", "lib", "locale", "locale-archive")
228221
activateScript := filepath.Join(systemClosure, "activate")
229222

230223
argv := []string{"chroot", root, activateScript}
231224

232-
if verbose {
233-
s.Logger().CmdArray(argv)
234-
}
225+
s.Logger().CmdArray(argv)
235226

236227
// Run the activation script.
237228
activateCmd := system.NewCommand(argv[0], argv[1:]...)
@@ -252,9 +243,7 @@ func activate(s system.CommandRunner, root string, systemClosure string, verbose
252243
systemdTmpfiles := filepath.Join(systemClosure, "sw", "bin", "systemd-tmpfiles")
253244
argv = []string{"chroot", root, systemdTmpfiles, "--create", "--remove", "-E"}
254245

255-
if verbose {
256-
s.Logger().CmdArray(argv)
257-
}
246+
s.Logger().CmdArray(argv)
258247

259248
tmpfilesCmd := system.NewCommand(argv[0], argv[1:]...)
260249

@@ -266,13 +255,11 @@ func activate(s system.CommandRunner, root string, systemClosure string, verbose
266255
return err
267256
}
268257

269-
func startChroot(s system.CommandRunner, root string, args []string, verbose bool) error {
258+
func startChroot(s system.CommandRunner, root string, args []string) error {
270259
argv := []string{"chroot", root}
271260
argv = append(argv, args...)
272261

273-
if verbose {
274-
s.Logger().CmdArray(argv)
275-
}
262+
s.Logger().CmdArray(argv)
276263

277264
execPath, err := exec.LookPath(argv[0])
278265
if err != nil {

cmd/generation/delete/delete.go

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,17 @@ func GenerationDeleteCommand(genOpts *cmdOpts.GenerationOpts) *cobra.Command {
8181
return nil
8282
},
8383
ValidArgsFunction: generation.CompleteGenerationNumber(&genOpts.ProfileName, 0),
84+
PreRun: func(cmd *cobra.Command, args []string) {
85+
ctx := cmd.Context()
86+
log := logger.FromContext(ctx)
87+
88+
if opts.Verbose {
89+
log.SetLogLevel(logger.LogLevelDebug)
90+
}
91+
92+
ctx = logger.WithLogger(ctx, log)
93+
cmd.SetContext(ctx)
94+
},
8495
RunE: func(cmd *cobra.Command, args []string) error {
8596
return cmdUtils.CommandErrorHandler(generationDeleteMain(cmd, genOpts, &opts))
8697
},
@@ -169,21 +180,21 @@ func generationDeleteMain(cmd *cobra.Command, genOpts *cmdOpts.GenerationOpts, o
169180
log.Step("Deleting generations...")
170181

171182
profileDirectory := generation.GetProfileDirectoryFromName(genOpts.ProfileName)
172-
if err := deleteGenerations(s, profileDirectory, gensToDelete, opts.Verbose); err != nil {
183+
if err := deleteGenerations(s, profileDirectory, gensToDelete); err != nil {
173184
log.Errorf("failed to delete generations: %v", err)
174185
return err
175186
}
176187

177188
log.Step("Regenerating boot menu entries...")
178189

179-
if err := regenerateBootMenu(s, opts.Verbose); err != nil {
190+
if err := regenerateBootMenu(s); err != nil {
180191
log.Errorf("failed to regenerate boot menu entries: %v", err)
181192
return err
182193
}
183194

184195
log.Step("Collecting garbage...")
185196

186-
if err := collectGarbage(s, opts.Verbose); err != nil {
197+
if err := collectGarbage(s); err != nil {
187198
log.Errorf("failed to collect garbage: %v", err)
188199
return err
189200
}
@@ -218,48 +229,46 @@ func displayDeleteSummary(generations []generation.Generation) {
218229
table.Render()
219230
}
220231

221-
func deleteGenerations(s system.CommandRunner, profileDirectory string, generations []generation.Generation, verbose bool) error {
232+
func deleteGenerations(s system.CommandRunner, profileDirectory string, generations []generation.Generation) error {
222233
argv := []string{"nix-env", "-p", profileDirectory, "--delete-generations"}
223234
for _, v := range generations {
224235
argv = append(argv, fmt.Sprintf("%v", v.Number))
225236
}
226237

227-
if verbose {
228-
s.Logger().CmdArray(argv)
229-
}
238+
s.Logger().CmdArray(argv)
230239

231240
cmd := system.NewCommand(argv[0], argv[1:]...)
232241
_, err := s.Run(cmd)
233242
return err
234243
}
235244

236-
func regenerateBootMenu(s system.CommandRunner, verbose bool) error {
245+
func regenerateBootMenu(s system.CommandRunner) error {
237246
switchToConfiguration := filepath.Join(constants.CurrentSystem, "bin", "switch-to-configuration")
238247

239248
argv := []string{switchToConfiguration, "boot"}
240249

241-
if verbose {
242-
s.Logger().CmdArray(argv)
243-
}
250+
s.Logger().CmdArray(argv)
244251

245252
cmd := system.NewCommand(argv[0], argv[1:]...)
246253
_, err := s.Run(cmd)
247254
return err
248255
}
249256

250-
func collectGarbage(s system.CommandRunner, verbose bool) error {
257+
func collectGarbage(s system.CommandRunner) error {
251258
var argv []string
252259
if build.Flake() {
253260
argv = []string{"nix", "store", "gc"}
254261
} else {
255262
argv = []string{"nix-collect-garbage"}
256263
}
257264

258-
if verbose {
265+
log := s.Logger()
266+
if log.GetLogLevel() == logger.LogLevelDebug {
259267
argv = append(argv, "-v")
260-
s.Logger().CmdArray(argv)
261268
}
262269

270+
s.Logger().CmdArray(argv)
271+
263272
var cmd *system.Command
264273
if len(argv) == 1 {
265274
cmd = system.NewCommand(argv[0])

0 commit comments

Comments
 (0)