Skip to content

Commit e7c8784

Browse files
authored
Merge #6033 from justinmk3/morebeta
2 parents 041e30d + 79b5204 commit e7c8784

File tree

5 files changed

+52
-6
lines changed

5 files changed

+52
-6
lines changed

packages/core/src/dev/beta.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ import { telemetry } from '../shared/telemetry/telemetry'
1919
import { cast } from '../shared/utilities/typeConstructors'
2020
import { CancellationError } from '../shared/utilities/timeoutUtils'
2121
import { isAmazonQ, isCloud9, productName } from '../shared/extensionUtilities'
22-
import * as config from './config'
22+
import * as devConfig from './config'
2323
import { isReleaseVersion } from '../shared/vscode/env'
2424
import { getRelativeDate } from '../shared/datetime'
2525

2626
const localize = nls.loadMessageBundle()
2727
const logger = getLogger('dev/beta')
2828

29-
const downloadIntervalMs = 1000 * 60 * 60 * 24 // A day in milliseconds
29+
const downloadIntervalMs = 1000 * 60 * 60 * 3 // 3 hours (8 times/day).
3030

3131
interface BetaToolkit {
3232
readonly needUpdate: boolean
@@ -48,7 +48,7 @@ async function updateBetaToolkitData(vsixUrl: string, data: BetaToolkit) {
4848
* Set up "beta" update monitoring.
4949
*/
5050
export async function activate(ctx: vscode.ExtensionContext) {
51-
const betaUrl = isAmazonQ() ? config.betaUrl.amazonq : config.betaUrl.toolkit
51+
const betaUrl = isAmazonQ() ? devConfig.betaUrl.amazonq : devConfig.betaUrl.toolkit
5252
if (!isCloud9() && !isReleaseVersion() && betaUrl) {
5353
ctx.subscriptions.push(watchBetaVSIX(betaUrl))
5454
}

packages/core/src/shared/logger/activation.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { resolvePath } from '../utilities/pathUtils'
1313
import fs from '../../shared/fs/fs'
1414
import { isWeb } from '../extensionGlobals'
1515
import { getUserAgent } from '../telemetry/util'
16+
import { isBeta } from '../vscode/env'
1617

1718
/**
1819
* Activate Logger functionality for the extension.
@@ -80,7 +81,7 @@ export function makeLogger(opts: {
8081
outputChannels?: vscode.OutputChannel[]
8182
useConsoleLog?: boolean
8283
}): Logger {
83-
const logger = new ToolkitLogger(opts.logLevel)
84+
const logger = new ToolkitLogger(opts.logLevel, isBeta())
8485
if (opts.logFile) {
8586
logger.logToFile(opts.logFile)
8687
logger.logFile = opts.logFile

packages/core/src/shared/logger/toolkitLogger.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ export class ToolkitLogger extends BaseLogger implements vscode.Disposable {
2424
private idCounter: number = 0
2525
private logMap: { [logID: number]: { [filePath: string]: string } } = {}
2626

27-
public constructor(logLevel: LogLevel) {
27+
public constructor(
28+
logLevel: LogLevel,
29+
private readonly isBeta: boolean = false
30+
) {
2831
super()
2932
this.logger = winston.createLogger({
3033
format: winston.format.combine(
@@ -120,6 +123,9 @@ export class ToolkitLogger extends BaseLogger implements vscode.Disposable {
120123
}
121124

122125
override sendToLog(level: LogLevel, message: string | Error, ...meta: any[]): number {
126+
// XXX: force debug/verbose logs for Beta users.
127+
level = this.isBeta && compareLogLevel(level, 'info') > 0 ? 'info' : level
128+
123129
if (this.disposed) {
124130
throw new Error('Cannot write to disposed logger')
125131
}

packages/core/src/shared/vscode/env.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { getLogger } from '../logger'
1111
import { onceChanged } from '../utilities/functionUtils'
1212
import { ChildProcess } from '../utilities/processUtils'
1313
import globals, { isWeb } from '../extensionGlobals'
14+
import * as devConfig from '../../dev/config'
1415

1516
/**
1617
* Returns true if the current build is running on CI (build server).
@@ -31,12 +32,31 @@ try {
3132

3233
/**
3334
* Returns true if the current build is a production build (as opposed to a
34-
* prerelease/test/nightly build)
35+
* prerelease/test/nightly build).
36+
*
37+
* Note: `isBeta()` is treated separately.
3538
*/
3639
export function isReleaseVersion(prereleaseOk: boolean = false): boolean {
3740
return (prereleaseOk || !semver.prerelease(extensionVersion)) && extensionVersion !== testVersion
3841
}
3942

43+
/**
44+
* Returns true if the current build is a "beta" build.
45+
*/
46+
export function isBeta(): boolean {
47+
const testing = extensionVersion === testVersion
48+
for (const url of Object.values(devConfig.betaUrl)) {
49+
if (url && url.length > 0) {
50+
if (!testing && semver.lt(extensionVersion, '99.0.0')) {
51+
throw Error('beta build must set version=99.0.0 in package.json')
52+
}
53+
54+
return true
55+
}
56+
}
57+
return false
58+
}
59+
4060
/**
4161
* Returns true when source mapping is available
4262
*/

packages/core/src/test/shared/vscode/env.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@
44
*/
55

66
import assert from 'assert'
7+
import path from 'path'
78
import {
89
isCloudDesktop,
910
getEnvVars,
1011
getServiceEnvVarConfig,
1112
isAmazonInternalOs as isAmazonInternalOS,
13+
isBeta,
1214
} from '../../../shared/vscode/env'
1315
import { ChildProcess } from '../../../shared/utilities/processUtils'
1416
import * as sinon from 'sinon'
1517
import os from 'os'
18+
import fs from '../../../shared/fs/fs'
1619
import vscode from 'vscode'
1720
import { getComputeEnvType } from '../../../shared/telemetry/util'
1821

@@ -82,6 +85,22 @@ describe('env', function () {
8285
return sandbox.stub(os, 'release').returns(verson)
8386
}
8487

88+
it('isBeta', async () => {
89+
// HACK: read each package.json because env.ts thinks version is "testPluginVersion" during testing.
90+
const toolkitPath = path.join(__dirname, '../../../../../../toolkit/package.json')
91+
const amazonqPath = path.join(__dirname, '../../../../../../amazonq/package.json')
92+
const toolkit = JSON.parse(await fs.readFileText(toolkitPath))
93+
const amazonq = JSON.parse(await fs.readFileText(amazonqPath))
94+
const toolkitVer = toolkit.version as string
95+
const amazonqVer = amazonq.version as string
96+
const toolkitBeta = toolkitVer.startsWith('99.')
97+
const amazonqBeta = amazonqVer.startsWith('99.')
98+
99+
assert(toolkitBeta === amazonqBeta)
100+
const expected = toolkitBeta
101+
assert.strictEqual(isBeta(), expected)
102+
})
103+
85104
it('isAmazonInternalOS', function () {
86105
sandbox.stub(process, 'platform').value('linux')
87106
const versionStub = stubOsVersion('5.10.220-188.869.amzn2int.x86_64')

0 commit comments

Comments
 (0)