func reportProgress()

in internal/langserver/handlers/command/aztfmigrate_command.go [350:396]


func reportProgress(ctx context.Context, message string, percentage uint32) {
	clientCaller, err := context2.ClientCaller(ctx)
	if err != nil {
		log.Printf("[ERROR] failed to get client caller: %+v", err)
		return
	}

	clientNotifier, err := context2.ClientNotifier(ctx)
	if err != nil {
		log.Printf("[ERROR] failed to get client notifier: %+v", err)
		return
	}
	switch percentage {
	case 0:
		_, _ = clientCaller.Callback(ctx, "window/workDoneProgress/create", lsp.WorkDoneProgressCreateParams{
			Token: "aztfmigrate",
		})
		_ = clientNotifier.Notify(ctx, "$/progress", map[string]interface{}{
			"token": "aztfmigrate",
			"value": lsp.WorkDoneProgressBegin{
				Kind:        "begin",
				Title:       "Azure providers migration",
				Cancellable: false,
				Message:     message,
				Percentage:  0,
			},
		})
	case 100:
		_ = clientNotifier.Notify(ctx, "$/progress", map[string]interface{}{
			"token": "aztfmigrate",
			"value": lsp.WorkDoneProgressEnd{
				Kind:    "end",
				Message: message,
			},
		})
	default:
		_ = clientNotifier.Notify(ctx, "$/progress", map[string]interface{}{
			"token": "aztfmigrate",
			"value": lsp.WorkDoneProgressReport{
				Kind:        "report",
				Cancellable: false,
				Message:     message,
				Percentage:  percentage,
			},
		})
	}
}