async Task LaunchDesignerAndSubscribe(PreviewArguments args) { var client = await GetMessagingService(args); var projectId = ProjectIdComputer.IdFor(args.Project); var closed = SubscribeForProjectClosed(client, projectId); SubscribeForBuildStarted(client, projectId); SubscribeForLog(client, projectId); var openArgs = args.Project.ToString().Yield() .Concat(args.Defines.Select(d => "-D" + d)) .Concat(args.IsVerboseBuild ? Optional.Some("-v") : Optional.None()) .ToArray(); _fuse.Report.Info("Opening " + string.Join(",", openArgs.Select(a => "'" + a + "'")), ReportTo.LogAndUser); _fuse.StartFuse("open", openArgs); await closed; }