GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — feat: warn when src-cli is older than the instance's recommended version by marcleblanc2 · Pull Request #1403 · sourcegraph/src-cli Conversation
|
| Run | Result |
|---|---|
src version (6.4.1) |
Prints Recommended version: 7.6.0 or later, then one warning on stderr |
src version (7.6.0) |
No warning |
src version -client-only (6.4.1) |
No warning |
src repos list -first 1 (6.4.1, legacy command) |
One warning on stderr; the command succeeds |
src api -query '...' (6.4.1, urfave/cli command) |
One warning on stderr; the command succeeds |
src search -json '...' (6.4.1) |
One warning on stderr; stdout is still valid JSON |
SRC_SKIP_VERSION_CHECK=1 src repos list -first 1 (6.4.1) |
No warning |
src repos list -first 1 (7.6.0, same cache file) |
No warning |
src repos list -h (6.4.1) |
No warning |
SRC_ENDPOINT set to a dead endpoint, src -endpoint=<instance> repos list -first 1 (6.4.1) |
One warning that names the -endpoint instance; the command succeeds |
Local fake instance, only for what the real instance cannot show: request counts, a changing answer, an untrusted certificate, and an instance that hangs. Built as 6.4.1; the fake recommends 6.5.0:
| Run | Result |
|---|---|
src repos list, then src users list |
One request to /.api/src-cli/version, from the first command |
src version on an empty cache |
One version request |
src version -client-only |
No version request |
Fake changes its answer to 99.0.0, then src repos list |
Still warns about the cached 6.5.0; no version request |
Then src version, then src repos list |
Both warn about 99.0.0; one version request, from src version |
Self-signed instance, src users list -insecure-skip-verify |
One warning |
Self-signed instance, src users list |
Certificate error from the command, no warning |
Instance that never answers the version lookup, src users list twice |
3.02 s the first time, 0.02 s the second |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Before running a command, src does a best-effort check of the running version against the version recommended by the configured instance (/.api/src-cli/version) and prints a single stderr warning when behind. Fail-open, 3s timeout, stderr only so --json is unaffected. Skips version/help/no-arg, dev builds, and SRC_SKIP_VERSION_CHECK. Compares major/minor/patch only. Adds unit tests. Closes #930. Supersedes #1339, #1343.
- Fix a nil pointer panic on every command in release builds: the check built its API client from a zero-value api.Flags. - Run the check after flags and config are resolved, so -endpoint and -config are honored and the right instance is asked. - Ask the instance at most once every 24 hours per endpoint, caching the answer, including a failed lookup, under the user cache directory, so an instance that does not answer cannot delay every command. - Compare versions with Masterminds/semver, which is already linked into the binary, instead of a hand-written parser. - Skip 'src version' by its parsed subcommand instead of scanning every argument for the word. - Test the check end to end against a fake instance. Amp-Thread-ID: https://ampcode.com/threads/T-01a1c29c-9f51-7761-a4ba-4d4f46dcd4ef Co-authored-by: Amp <[email protected]>
There was an error while loading. Please reload this page.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
The check ran before the subcommand's flags were parsed, so it ignored -insecure-skip-verify and never warned on instances with an untrusted certificate. It also ran twice for nested legacy commands such as 'src repos list', which printed the warning twice. Run it once per process from config.apiClient instead, using the client the command asked for. Commands that never talk to the instance, such as 'src search -h', no longer trigger a lookup. Amp-Thread-ID: https://ampcode.com/threads/T-01a1c29c-9f51-7761-a4ba-4d4f46dcd4ef Co-authored-by: Amp <[email protected]>
'src version' was the one command that never warned. It now prints the warning from the answer it just got from the instance, and caches that answer, so the commands that follow warn about the same version. It still makes a single request, and 'src version -client-only' still makes none: the check that other commands get from config.apiClient keeps skipping 'src version'. Amp-Thread-ID: https://ampcode.com/threads/T-01a1c29c-9f51-7761-a4ba-4d4f46dcd4ef Co-authored-by: Amp <[email protected]>
The warning already names SRC_SKIP_VERSION_CHECK and links to the upgrade instructions, and CHANGELOG.md describes the feature. This reverts commit 71363c8. Amp-Thread-ID: https://ampcode.com/threads/T-01a1c29c-9f51-7761-a4ba-4d4f46dcd4ef Co-authored-by: Amp <[email protected]>
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
Warn on any command if not on latest version
There was an error while loading. Please reload this page.