export async function activate()

in packages/core/src/awsService/cloudWatchLogs/activation.ts [33:151]


export async function activate(context: vscode.ExtensionContext, configuration: Settings): Promise<void> {
    const registry = LogDataRegistry.instance

    const documentProvider = new LogDataDocumentProvider(registry)
    const liveTailDocumentProvider = new LiveTailDocumentProvider()
    context.subscriptions.push(
        vscode.languages.registerCodeLensProvider(
            {
                language: 'log',
                scheme: CLOUDWATCH_LOGS_SCHEME,
            },
            new LogStreamCodeLensProvider(registry, documentProvider)
        )
    )

    context.subscriptions.push(
        vscode.workspace.registerTextDocumentContentProvider(CLOUDWATCH_LOGS_SCHEME, documentProvider)
    )

    context.subscriptions.push(
        vscode.languages.registerCodeLensProvider(
            {
                language: 'log',
                scheme: cloudwatchLogsLiveTailScheme,
            },
            liveTailCodeLensProvider
        )
    )

    context.subscriptions.push(
        vscode.workspace.registerTextDocumentContentProvider(cloudwatchLogsLiveTailScheme, liveTailDocumentProvider)
    )

    context.subscriptions.push(
        vscode.workspace.onDidCloseTextDocument((doc) => {
            if (doc.isClosed && doc.uri.scheme === CLOUDWATCH_LOGS_SCHEME) {
                registry.disposeRegistryData(doc.uri)
            }
        })
    )

    context.subscriptions.push(
        vscode.languages.registerCodeLensProvider(
            {
                language: 'log',
                scheme: CLOUDWATCH_LOGS_SCHEME,
            },
            new LogDataCodeLensProvider(registry)
        )
    )

    context.subscriptions.push(
        Commands.register('aws.loadLogStreamFile', async (uri: vscode.Uri, registry: LogDataRegistry) =>
            loadAndOpenInitialLogStreamFile(uri, registry)
        )
    )
    context.subscriptions.push(Commands.register('aws.copyLogResource', copyLogResource))
    context.subscriptions.push(
        Commands.register(
            'aws.addLogEvents',
            async (
                document: vscode.TextDocument,
                registry: LogDataRegistry,
                headOrTail: 'head' | 'tail',
                onDidChangeCodeLensEvent: vscode.EventEmitter<void>
            ) => addLogEvents(document, registry, headOrTail, onDidChangeCodeLensEvent)
        ),
        Commands.register('aws.saveCurrentLogDataContent', async () => await saveCurrentLogDataContent()),
        // AWS Explorer right-click action
        // Here instead of in ../awsexplorer/activation due to dependence on the registry.
        Commands.register('aws.cwl.viewLogStream', async (node: LogGroupNode) => await viewLogStream(node, registry)),

        Commands.register('aws.cwl.searchLogGroup', async (node: LogGroupNode | CloudWatchLogsNode) => {
            const logGroupInfo =
                node instanceof LogGroupNode
                    ? { regionName: node.regionCode, groupName: node.logGroup.logGroupName! }
                    : undefined
            const source = node ? (logGroupInfo ? 'ExplorerLogGroupNode' : 'ExplorerServiceNode') : 'Command'
            await searchLogGroup(registry, source, logGroupInfo)
        }),

        Commands.register('aws.cwl.changeFilterPattern', async () => changeLogSearchParams(registry, 'filterPattern')),

        Commands.register('aws.cwl.changeTimeFilter', async () => changeLogSearchParams(registry, 'timeFilter')),

        Commands.register('aws.cwl.tailLogGroup', async (node: LogGroupNode | CloudWatchLogsNode) => {
            const logGroupInfo =
                node instanceof LogGroupNode
                    ? { regionName: node.regionCode, groupName: node.logGroup.logGroupName! }
                    : undefined
            const source = node ? (logGroupInfo ? 'ExplorerLogGroupNode' : 'ExplorerServiceNode') : 'Command'
            await tailLogGroup(liveTailRegistry, source, liveTailCodeLensProvider, logGroupInfo)
        }),

        Commands.register('aws.cwl.stopTailingLogGroup', async (document: vscode.TextDocument, source: string) => {
            closeSession(document.uri, liveTailRegistry, source, liveTailCodeLensProvider)
        }),

        Commands.register('aws.cwl.clearDocument', async (document: vscode.TextDocument) => {
            await clearDocument(document)
        }),

        Commands.register('aws.appBuilder.searchLogs', async (node: DeployedResourceNode) => {
            try {
                const logGroupInfo = isTreeNode(node)
                    ? {
                          regionName: node.resource.regionCode,
                          groupName: getFunctionLogGroupName(node.resource.explorerNode.configuration),
                      }
                    : undefined
                const source: string = logGroupInfo ? 'AppBuilderSearchLogs' : 'CommandPaletteSearchLogs'
                await searchLogGroup(registry, source, logGroupInfo)
            } catch (err) {
                getLogger().error('Failed to search logs: %s', err)
                throw ToolkitError.chain(err, 'Failed to search logs')
            }
        })
    )
}