Pull request: 4223 home: cmd update
Merge in DNS/adguard-home from 4223-cmd-update to master Squashed commit of the following: commit ffda71246f37eaba0cb190840f1370ba65099d7c Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Tue Nov 15 16:32:10 2022 +0200 home: cmd update commit 9c4e1c33da78952a2b1477ac380a0cf042a8990f Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Tue Nov 15 13:51:33 2022 +0200 home: cmd update commit 6a564dc30771b3675e8861ca3befaaee15d83026 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Mon Nov 14 11:05:06 2022 +0200 all: docs commit a546bdbdb6f3f78c40908bc1864f2a1ae1c9071f Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Mon Nov 14 10:55:16 2022 +0200 home: cmd update commit cbbb594980d3d163fe0489494b0ddca5f679d6e6 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Mon Nov 14 10:16:09 2022 +0200 home: imp code commit 677f8a7ca0f47da0ac636e5bab9db24506cf5041 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Sun Nov 13 14:12:48 2022 +0200 home: cmd update
This commit is contained in:
parent
167b112511
commit
93882d6860
|
@ -25,6 +25,13 @@ See also the [v0.107.19 GitHub milestone][ms-v0.107.19].
|
||||||
[ms-v0.107.19]: https://github.com/AdguardTeam/AdGuardHome/milestone/55?closed=1
|
[ms-v0.107.19]: https://github.com/AdguardTeam/AdGuardHome/milestone/55?closed=1
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- The new `--update` command-line option, which allows updating AdGuard Home
|
||||||
|
silently ([#4223]).
|
||||||
|
|
||||||
|
[#4223]: https://github.com/AdguardTeam/AdGuardHome/issues/4223
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [v0.107.18] - 2022-11-08
|
## [v0.107.18] - 2022-11-08
|
||||||
|
|
|
@ -542,6 +542,11 @@ func run(opts options, clientBuildFS fs.FS) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(a.garipov): This could be made much earlier and could be done on
|
||||||
|
// the first run as well, but to achieve this we need to bypass requests
|
||||||
|
// over dnsforward resolver.
|
||||||
|
cmdlineUpdate(opts)
|
||||||
|
|
||||||
Context.web.Start()
|
Context.web.Start()
|
||||||
|
|
||||||
// wait indefinitely for other go-routines to complete their job
|
// wait indefinitely for other go-routines to complete their job
|
||||||
|
@ -927,3 +932,37 @@ type jsonError struct {
|
||||||
// Message is the error message, an opaque string.
|
// Message is the error message, an opaque string.
|
||||||
Message string `json:"message"`
|
Message string `json:"message"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// cmdlineUpdate updates current application and exits.
|
||||||
|
func cmdlineUpdate(opts options) {
|
||||||
|
if !opts.performUpdate {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Info("starting update")
|
||||||
|
|
||||||
|
if Context.firstRun {
|
||||||
|
log.Info("update not allowed on first run")
|
||||||
|
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := Context.updater.VersionInfo(true)
|
||||||
|
if err != nil {
|
||||||
|
vcu := Context.updater.VersionCheckURL()
|
||||||
|
log.Error("getting version info from %s: %s", vcu, err)
|
||||||
|
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
if Context.updater.NewVersion() == "" {
|
||||||
|
log.Info("no updates available")
|
||||||
|
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = Context.updater.Update()
|
||||||
|
fatalOnError(err)
|
||||||
|
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
|
|
@ -47,6 +47,9 @@ type options struct {
|
||||||
// disableUpdate, if set, makes AdGuard Home not check for updates.
|
// disableUpdate, if set, makes AdGuard Home not check for updates.
|
||||||
disableUpdate bool
|
disableUpdate bool
|
||||||
|
|
||||||
|
// performUpdate, if set, updates AdGuard Home without GUI and exits.
|
||||||
|
performUpdate bool
|
||||||
|
|
||||||
// verbose shows if verbose logging is enabled.
|
// verbose shows if verbose logging is enabled.
|
||||||
verbose bool
|
verbose bool
|
||||||
|
|
||||||
|
@ -221,6 +224,14 @@ var cmdLineOpts = []cmdLineOpt{{
|
||||||
description: "Don't check for updates.",
|
description: "Don't check for updates.",
|
||||||
longName: "no-check-update",
|
longName: "no-check-update",
|
||||||
shortName: "",
|
shortName: "",
|
||||||
|
}, {
|
||||||
|
updateWithValue: nil,
|
||||||
|
updateNoValue: func(o options) (options, error) { o.performUpdate = true; return o, nil },
|
||||||
|
effect: nil,
|
||||||
|
serialize: func(o options) (val string, ok bool) { return "", o.performUpdate },
|
||||||
|
description: "Update application and exit.",
|
||||||
|
longName: "update",
|
||||||
|
shortName: "",
|
||||||
}, {
|
}, {
|
||||||
updateWithValue: nil,
|
updateWithValue: nil,
|
||||||
updateNoValue: nil,
|
updateNoValue: nil,
|
||||||
|
|
|
@ -103,6 +103,11 @@ func TestParseDisableUpdate(t *testing.T) {
|
||||||
assert.True(t, testParseOK(t, "--no-check-update").disableUpdate, "--no-check-update is disable update")
|
assert.True(t, testParseOK(t, "--no-check-update").disableUpdate, "--no-check-update is disable update")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestParsePerformUpdate(t *testing.T) {
|
||||||
|
assert.False(t, testParseOK(t).performUpdate, "empty is not perform update")
|
||||||
|
assert.True(t, testParseOK(t, "--update").performUpdate, "--update is perform update")
|
||||||
|
}
|
||||||
|
|
||||||
// TODO(e.burkov): Remove after v0.108.0.
|
// TODO(e.burkov): Remove after v0.108.0.
|
||||||
func TestParseDisableMemoryOptimization(t *testing.T) {
|
func TestParseDisableMemoryOptimization(t *testing.T) {
|
||||||
o, eff, err := parseCmdOpts("", []string{"--no-mem-optimization"})
|
o, eff, err := parseCmdOpts("", []string{"--no-mem-optimization"})
|
||||||
|
@ -169,6 +174,10 @@ func TestOptsToArgs(t *testing.T) {
|
||||||
name: "disable_update",
|
name: "disable_update",
|
||||||
args: []string{"--no-check-update"},
|
args: []string{"--no-check-update"},
|
||||||
opts: options{disableUpdate: true},
|
opts: options{disableUpdate: true},
|
||||||
|
}, {
|
||||||
|
name: "perform_update",
|
||||||
|
args: []string{"--update"},
|
||||||
|
opts: options{performUpdate: true},
|
||||||
}, {
|
}, {
|
||||||
name: "control_action",
|
name: "control_action",
|
||||||
args: []string{"-s", "run"},
|
args: []string{"-s", "run"},
|
||||||
|
|
Loading…
Reference in New Issue