TelemetryReporter buffers counter updates and periodically
invokes a go program (vscgo) that writes the counter to the
disk.
installVCSGO in goInstallTools.ts installs vscgo.
If vscgo installation fails, TelemetryReporter will keep
holding the counter in memory. The buffer is a set keyed
by the counter and we expect there is a finite set of counters.
That installs the vscgo binary in the extension path.
The location was chosen so that when users update the
extension, a new version can be installed. VS Code will
manage the extension path and delete the directory when
the extension is uninstalled or the version is no
longer used.
The extension operates in four different modes
and we need to choose how to build the vscgo.
The extension includes the vscgo main package source
file in it.
1) golang.go, stable/rc releases: PRODUCTION mode. try to
install from the remote source (proxy) so its checksum
is verified and build version and telemetry counter file
matches the extension version. The source repo needs
to be tagged. In case of failure, we attempt to fallback to the
build with the source code included in the extension.
2) golang.go-nightly, preview release: PRODUCTION mode.
Nightly is released daily automatically. Tagging the repo
everyday is not practical. Moreover, the nightly extension
does not use semver but encodes the release timestamp,
so it is not compatible with go commands.
Installing from @master or @latest isn't ideal either since
vscgo functionality is tied with the extension version.
The telemetry data will be labeled with `devel` version.
3) golang.go, preview release: PRODUCTION mode. Used for
local testing during development (e.g. npm run package &
code --install-extension). The version will include `-dev`.
We want to build from the local source included in the
extension since there is no usable tag in the remote origin.
The telemetry data will be labeled with `devel` version.
4) golang.go, preview release: DEVELOPMENT mode. Used for
local testing using the launch.json configuration.
VS Code will use the project source code as the extension
path. Build vscgo from the project repo on disk. The
telemetry data will be labeled with `devel` version.
5) golang.go, preview release: TEST mode. Currently same
as 4. No telemetry data is materialized. Tests
that are designed for telemetry testing write test data in
temporary text file for inspection during tests.
For golang/vscode-go#3023
Change-Id: Ic408e7b296fdcb9ed33b68293ea82f5e29a81515
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/549244
Commit-Queue: Hyang-Ah Hana Kim <hyangah@gmail.com>
Reviewed-by: Suzy Mueller <suzmue@golang.org>
TryBot-Result: kokoro <noreply+kokoro@google.com>
The delveConfig user settings applied in settings.json, should be applied
to the debug configuration. Test that these are correctly applied.
Additionally, testFlags and buildFlags do not currently affect the debug
configuration, so we also test that to document that behavior. This behavior
is likely to change and the test should be updated when it does.
This change also reintroduces the --user-data-dir= argument to the launch
configuration for running the integration tests. This starts the test with
the default user settings, so running the tests should not be affected by
the user settings.
Update golang/vscode-go#43
Change-Id: I99c9d7f17892e6766fae731c9288880b109ba3fd
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/267217
Trust: Suzy Mueller <suzmue@golang.org>
Trust: Hyang-Ah Hana Kim <hyangah@gmail.com>
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
We are using the go logo.
Also, skip .github directory from vsce packaging.
Change-Id: If3acde40ba4e46ec1dd398e147c01bdfb32cb33d
Change-Id: If3acde40ba4e46ec1dd398e147c01bdfb32cb33d
GitHub-Last-Rev: f6bc80201b
GitHub-Pull-Request: golang/vscode-go#80
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/234662
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
* fix for #934
* fix travis build, forgot to tsc
* ignore DS_Store and some clean up on env consolidation
* precedence: launch env -> file env -> process env