Skip to content
This repository has been archived by the owner on Dec 13, 2018. It is now read-only.

Commit

Permalink
Display busy spinner when running the indexing build
Browse files Browse the repository at this point in the history
  • Loading branch information
Xanewok committed Sep 14, 2018
1 parent 8797da0 commit 384c616
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 6 deletions.
31 changes: 26 additions & 5 deletions pkg/nuclide-rust/lib/BuckIntegration.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
* @format
*/

import type {BusySignalService, BusySignalOptions} from 'atom-ide-ui';
import type {TaskInfo} from '../../nuclide-buck/lib/types';
import type {
AtomLanguageService,
Expand All @@ -31,6 +32,7 @@ const logger = getLogger('nuclide-rust');
export async function updateRlsBuildForTask(
task: TaskInfo,
service: AtomLanguageService<LanguageService>,
busySignalService: ?BusySignalService,
) {
const buildTarget = normalizeNameForBuckQuery(task.buildTarget);

Expand Down Expand Up @@ -73,13 +75,19 @@ export async function updateRlsBuildForTask(
// can't just invoke that.
// Instead, we build now, copy paths to resulting .json analysis artifacts to
// a temp file and just use `cat $TMPFILE` as a dummy build command.
const analysisTargets = await getSaveAnalysisTargets(
task.buckRoot,
buildTarget,
const doSaveAnalysisBuild = () =>
getSaveAnalysisTargets(task.buckRoot, buildTarget).then(analysisTargets => {
logger.debug(`analysisTargets: ${analysisTargets.join('\n')}`);

return BuckService.build(task.buckRoot, analysisTargets);
});

const buildReport = await reportBusyWhile(
busySignalService,
'[nuclide-rust] Indexing...',
doSaveAnalysisBuild,
);
logger.debug(`analysisTargets: ${analysisTargets.join('\n')}`);

const buildReport = await BuckService.build(task.buckRoot, analysisTargets);
if (!buildReport.success) {
atom.notifications.addError('[nuclide-rust] save-analysis build failed');
return;
Expand Down Expand Up @@ -114,3 +122,16 @@ export async function updateRlsBuildForTask(
},
});
}

function reportBusyWhile<T>(
busySignalService: ?BusySignalService,
title: string,
f: () => Promise<T>,
options?: BusySignalOptions,
): Promise<T> {
if (busySignalService) {
return busySignalService.reportBusyWhile(title, f, options);
} else {
return f();
}
}
15 changes: 14 additions & 1 deletion pkg/nuclide-rust/lib/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
*/

import type {BuckTaskRunnerService} from '../../nuclide-buck/lib/types';
import type {BusySignalService} from 'atom-ide-ui';
import type {
AtomLanguageService,
LanguageService,
Expand All @@ -28,6 +29,7 @@ the target you plan on working using Buck toolbar.`;
class Activation {
_rustLanguageService: AtomLanguageService<LanguageService>;
_subscriptions: UniversalDisposable;
_busySignalService: ?BusySignalService;

constructor(rawState: ?Object) {
atom.notifications.addInfo(DISCLAIMER);
Expand All @@ -40,10 +42,21 @@ class Activation {

consumeBuckTaskRunner(service: BuckTaskRunnerService): IDisposable {
return service.onDidCompleteTask(task =>
updateRlsBuildForTask(task, this._rustLanguageService),
updateRlsBuildForTask(
task,
this._rustLanguageService,
this._busySignalService,
),
);
}

consumeBusySignal(busySignalService: BusySignalService): IDisposable {
this._busySignalService = busySignalService;
return new UniversalDisposable(() => {
this._busySignalService = null;
});
}

dispose(): void {
this._subscriptions.dispose();
}
Expand Down
5 changes: 5 additions & 0 deletions pkg/nuclide-rust/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@
"language-rust:grammar-used"
],
"consumedServices": {
"atom-ide-busy-signal": {
"versions": {
"0.1.0": "consumeBusySignal"
}
},
"nuclide.buck-task-runner": {
"versions": {
"0.0.0": "consumeBuckTaskRunner"
Expand Down

0 comments on commit 384c616

Please sign in to comment.