mirror of
https://github.com/microsoft/vscode-extension-samples.git
synced 2026-04-27 16:55:44 +08:00
Use standard tslint rules for source-control example
This commit is contained in:
@ -32,28 +32,28 @@ export function activate(context: vscode.ExtensionContext) {
|
||||
|
||||
context.subscriptions.push(vscode.commands.registerCommand("extension.source-control.refresh", async () => {
|
||||
let sourceControl = await pickSourceControl();
|
||||
if (sourceControl) sourceControl.refresh();
|
||||
if (sourceControl) { sourceControl.refresh(); }
|
||||
}));
|
||||
context.subscriptions.push(vscode.commands.registerCommand("extension.source-control.discard", async () => {
|
||||
let sourceControl = await pickSourceControl();
|
||||
if (sourceControl) sourceControl.resetFilesToCheckedOutVersion();
|
||||
if (sourceControl) { sourceControl.resetFilesToCheckedOutVersion(); }
|
||||
}));
|
||||
context.subscriptions.push(vscode.commands.registerCommand("extension.source-control.commit", async () => {
|
||||
let sourceControl = await pickSourceControl();
|
||||
if (sourceControl) sourceControl.commitAll();
|
||||
if (sourceControl) { sourceControl.commitAll(); }
|
||||
}));
|
||||
context.subscriptions.push(vscode.commands.registerCommand("extension.source-control.checkout",
|
||||
async (sourceControl: FiddleSourceControl, newVersion?: number) => {
|
||||
sourceControl = sourceControl || await pickSourceControl();
|
||||
if (sourceControl) sourceControl.tryCheckout(newVersion);
|
||||
if (sourceControl) { sourceControl.tryCheckout(newVersion); }
|
||||
}));
|
||||
}
|
||||
|
||||
async function pickSourceControl(): Promise<FiddleSourceControl | undefined> {
|
||||
// todo: when/if the SourceControl exposes a 'selected' property, use that instead
|
||||
|
||||
if (fiddleSourceControlRegister.size == 0) return undefined;
|
||||
else if (fiddleSourceControlRegister.size == 1) return [...fiddleSourceControlRegister.values()][0];
|
||||
if (fiddleSourceControlRegister.size === 0) { return undefined; }
|
||||
else if (fiddleSourceControlRegister.size === 1) { return [...fiddleSourceControlRegister.values()][0]; }
|
||||
else {
|
||||
|
||||
let picks = [...fiddleSourceControlRegister.values()].map(fsc => new RepositoryPick(fsc));
|
||||
@ -85,7 +85,7 @@ async function tryOpenFiddle(context: vscode.ExtensionContext, fiddleId?: string
|
||||
}
|
||||
|
||||
async function openFiddle(context: vscode.ExtensionContext, fiddleId?: string, workspaceUri?: vscode.Uri) {
|
||||
if (workspaceUri && fiddleSourceControlRegister.has(workspaceUri)) vscode.window.showErrorMessage("Another Fiddle was already open in this workspace. Open a new workspace first.");
|
||||
if (workspaceUri && fiddleSourceControlRegister.has(workspaceUri)) { vscode.window.showErrorMessage("Another Fiddle was already open in this workspace. Open a new workspace first."); }
|
||||
|
||||
if (!fiddleId) {
|
||||
fiddleId = (await vscode.window.showInputBox({ prompt: 'Paste JSFiddle ID and optionally version', placeHolder: 'slug or slug/version, e.g. u8B29/1', value: 'demo' })) || '';
|
||||
@ -97,7 +97,7 @@ async function openFiddle(context: vscode.ExtensionContext, fiddleId?: string, w
|
||||
await selectWorkspaceFolder(context, fiddleId);
|
||||
|
||||
workspaceFolder = await clearWorkspaceFolder(workspaceFolder);
|
||||
if (!workspaceFolder) return; // canceled by user
|
||||
if (!workspaceFolder) { return; } // canceled by user
|
||||
|
||||
// show the file explorer with the three new files
|
||||
vscode.commands.executeCommand("workbench.view.explorer");
|
||||
@ -132,14 +132,14 @@ function registerFiddleSourceControl(fiddleSourceControl: FiddleSourceControl, c
|
||||
}
|
||||
|
||||
function initializeFromConfigurationFile(context: vscode.ExtensionContext): void {
|
||||
if (!vscode.workspace.workspaceFolders) return;
|
||||
if (!vscode.workspace.workspaceFolders) { return; }
|
||||
|
||||
vscode.workspace.workspaceFolders.forEach(folder => {
|
||||
const configurationPath = path.join(folder.uri.fsPath, CONFIGURATION_FILE);
|
||||
exists(configurationPath, configFileExists => {
|
||||
if (configFileExists) {
|
||||
readFile(configurationPath, { flag: 'r' }, async (err, data) => {
|
||||
if (err) vscode.window.showErrorMessage(err.message);
|
||||
if (err) { vscode.window.showErrorMessage(err.message); }
|
||||
try {
|
||||
let fiddleSourceControl = await FiddleSourceControl.fromConfiguration(<FiddleConfiguration>JSON.parse(data.toString("utf-8")), folder, context, false);
|
||||
registerFiddleSourceControl(fiddleSourceControl, context);
|
||||
@ -161,7 +161,7 @@ async function selectWorkspaceFolder(context: vscode.ExtensionContext, fiddleId:
|
||||
|
||||
if (vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 1) {
|
||||
selectedFolder = await vscode.window.showWorkspaceFolderPick({ placeHolder: 'Pick workspace folder to create files in.' });
|
||||
if (!selectedFolder) return undefined;
|
||||
if (!selectedFolder) { return undefined; }
|
||||
|
||||
workspaceFolderIndex = selectedFolder.index;
|
||||
workspaceFolderUri = selectedFolder.uri;
|
||||
@ -186,7 +186,7 @@ async function selectWorkspaceFolder(context: vscode.ExtensionContext, fiddleId:
|
||||
}
|
||||
|
||||
let workSpacesToReplace = typeof workspaceFolderIndex === 'number' && workspaceFolderIndex > -1 ? 1 : 0;
|
||||
if (workspaceFolderIndex === undefined || workspaceFolderIndex < 0) workspaceFolderIndex = 0;
|
||||
if (workspaceFolderIndex === undefined || workspaceFolderIndex < 0) { workspaceFolderIndex = 0; }
|
||||
|
||||
// replace or insert the workspace
|
||||
if (workspaceFolderUri) {
|
||||
@ -198,14 +198,14 @@ async function selectWorkspaceFolder(context: vscode.ExtensionContext, fiddleId:
|
||||
|
||||
async function clearWorkspaceFolder(workspaceFolder?: vscode.WorkspaceFolder): Promise<vscode.WorkspaceFolder | undefined> {
|
||||
|
||||
if (!workspaceFolder) return undefined;
|
||||
if (!workspaceFolder) { return undefined; }
|
||||
|
||||
// check if the workspace is empty, or clear it
|
||||
let existingWorkspaceFiles = readdirSync(workspaceFolder.uri.fsPath);
|
||||
if (existingWorkspaceFiles.length > 0) {
|
||||
let answer = await vscode.window.showQuickPick(["Yes", "No"],
|
||||
{ placeHolder: `Remove ${existingWorkspaceFiles.length} file(s) from the workspace before cloning the remote repository?` });
|
||||
if (answer === undefined) return undefined;
|
||||
if (answer === undefined) { return undefined; }
|
||||
|
||||
if (answer === "Yes") {
|
||||
existingWorkspaceFiles
|
||||
|
||||
@ -28,7 +28,7 @@ export class JSFiddleDocumentContentProvider implements TextDocumentContentProvi
|
||||
}
|
||||
|
||||
provideTextDocumentContent(uri: Uri, token: CancellationToken): ProviderResult<string> {
|
||||
if (token.isCancellationRequested) return "Canceled";
|
||||
if (token.isCancellationRequested) { return "Canceled"; }
|
||||
|
||||
let fiddleSlug = basename(uri.fsPath);
|
||||
// strip off the file extension
|
||||
@ -36,7 +36,7 @@ export class JSFiddleDocumentContentProvider implements TextDocumentContentProvi
|
||||
let fiddlePart = toExtension(uri);
|
||||
|
||||
let fiddle = this.fiddles.get(fiddleSlug);
|
||||
if (!fiddle) return "Resource not found: " + uri.toString();
|
||||
if (!fiddle) { return "Resource not found: " + uri.toString(); }
|
||||
|
||||
return fiddle.data[fiddlePart];
|
||||
}
|
||||
|
||||
@ -15,9 +15,9 @@ export interface FiddleData {
|
||||
}
|
||||
|
||||
export function areIdentical(first: FiddleData, second: FiddleData): boolean {
|
||||
return first.html == second.html
|
||||
&& first.css == second.css
|
||||
&& first.js == second.js;
|
||||
return first.html === second.html
|
||||
&& first.css === second.css
|
||||
&& first.js === second.js;
|
||||
}
|
||||
|
||||
export const JSFIDDLE_SCHEME = 'jsfiddle';
|
||||
@ -69,10 +69,10 @@ export async function downloadFiddle(slug: string, version: number | undefined):
|
||||
|
||||
if (slug === "demo") {
|
||||
// use mock fiddle
|
||||
if (demoVersionOffset === undefined && version === undefined) version = 0;
|
||||
if (demoVersionOffset === undefined) demoVersionOffset = version;
|
||||
if (demoVersionOffset === undefined && version === undefined) { version = 0; }
|
||||
if (demoVersionOffset === undefined) { demoVersionOffset = version; }
|
||||
let maxDemoVersion = DEMO.length - 1 + demoVersionOffset;
|
||||
if (version === undefined) version = maxDemoVersion;
|
||||
if (version === undefined) { version = maxDemoVersion; }
|
||||
|
||||
if (version >= 0 && version <= maxDemoVersion) {
|
||||
// mock all versions committed in previous sessions by the first version
|
||||
@ -81,7 +81,7 @@ export async function downloadFiddle(slug: string, version: number | undefined):
|
||||
return new Fiddle(slug, version, fiddleData);
|
||||
}
|
||||
else {
|
||||
throw "Invalid demo fiddle version.";
|
||||
throw new Error("Invalid demo fiddle version.");
|
||||
}
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@ export async function downloadFiddle(slug: string, version: number | undefined):
|
||||
return new Promise<Fiddle>((resolve, reject) => {
|
||||
JSFiddle.getFiddle(id, (err: any, fiddleData: any) => {
|
||||
// handle error
|
||||
if (err) reject(err);
|
||||
if (err) { reject(err); }
|
||||
|
||||
let fiddle = new Fiddle(slug, version, fiddleData);
|
||||
|
||||
|
||||
@ -82,7 +82,7 @@ export class FiddleSourceControl implements vscode.Disposable {
|
||||
// here we assume nobody updated the Fiddle on the server since we refreshed the list of versions
|
||||
try {
|
||||
let newFiddle = await uploadFiddle(this.fiddle.slug, this.fiddle.version + 1, html, js, css);
|
||||
if (!newFiddle) return;
|
||||
if (!newFiddle) { return; }
|
||||
this.setFiddle(newFiddle, false);
|
||||
this.jsFiddleScm.inputBox.value = '';
|
||||
} catch (ex) {
|
||||
@ -112,11 +112,11 @@ export class FiddleSourceControl implements vscode.Disposable {
|
||||
}
|
||||
|
||||
async tryCheckout(newVersion: number | undefined): Promise<void> {
|
||||
if (!Number.isFinite(this.latestFiddleVersion)) return;
|
||||
if (!Number.isFinite(this.latestFiddleVersion)) { return; }
|
||||
|
||||
if (newVersion === undefined) {
|
||||
let allVersions = [...Array(this.latestFiddleVersion + 1).keys()]
|
||||
.map(ver => new VersionQuickPickItem(ver, ver == this.fiddle.version));
|
||||
.map(ver => new VersionQuickPickItem(ver, ver === this.fiddle.version));
|
||||
let newVersionPick = await vscode.window.showQuickPick(allVersions, { canPickMany: false, placeHolder: 'Select a version...' });
|
||||
if (newVersionPick) {
|
||||
newVersion = newVersionPick.version;
|
||||
@ -126,7 +126,7 @@ export class FiddleSourceControl implements vscode.Disposable {
|
||||
}
|
||||
}
|
||||
|
||||
if (newVersion === this.fiddle.version) return; // the same version was selected
|
||||
if (newVersion === this.fiddle.version) { return; } // the same version was selected
|
||||
|
||||
if (this.changedResources.resourceStates.length) {
|
||||
let changedResourcesCount = this.changedResources.resourceStates.length;
|
||||
@ -143,9 +143,9 @@ export class FiddleSourceControl implements vscode.Disposable {
|
||||
}
|
||||
|
||||
private setFiddle(newFiddle: Fiddle, overwrite: boolean) {
|
||||
if (newFiddle.version > this.latestFiddleVersion) this.latestFiddleVersion = newFiddle.version;
|
||||
if (newFiddle.version > this.latestFiddleVersion) { this.latestFiddleVersion = newFiddle.version; }
|
||||
this.fiddle = newFiddle;
|
||||
if (overwrite) this.resetFilesToCheckedOutVersion(); // overwrite local file content
|
||||
if (overwrite) { this.resetFilesToCheckedOutVersion(); } // overwrite local file content
|
||||
this._onRepositoryChange.fire(this.fiddle);
|
||||
this.refreshStatusBar();
|
||||
|
||||
@ -240,7 +240,7 @@ export class FiddleSourceControl implements vscode.Disposable {
|
||||
}
|
||||
|
||||
onResourceChange(_uri: vscode.Uri): void {
|
||||
if (this.timeout) clearTimeout(this.timeout);
|
||||
if (this.timeout) { clearTimeout(this.timeout); }
|
||||
this.timeout = setTimeout(() => this.tryUpdateChangedGroup(), 500);
|
||||
}
|
||||
|
||||
@ -285,7 +285,7 @@ export class FiddleSourceControl implements vscode.Disposable {
|
||||
/** Determines whether the resource is different, regardless of line endings. */
|
||||
isDirty(doc: vscode.TextDocument): boolean {
|
||||
let originalText = this.fiddle.data[toExtension(doc.uri)];
|
||||
return originalText.replace('\r', '') != doc.getText().replace('\r', '');
|
||||
return originalText.replace('\r', '') !== doc.getText().replace('\r', '');
|
||||
}
|
||||
|
||||
toSourceControlResourceState(docUri: vscode.Uri, deleted: boolean): vscode.SourceControlResourceState {
|
||||
|
||||
@ -1,12 +1,15 @@
|
||||
{
|
||||
"rules": {
|
||||
"indent": [
|
||||
true,
|
||||
"tabs"
|
||||
],
|
||||
"no-string-throw": true,
|
||||
"no-unused-expression": true,
|
||||
"no-duplicate-variable": true,
|
||||
"curly": true,
|
||||
"class-name": true,
|
||||
"semicolon": [
|
||||
true,
|
||||
"always"
|
||||
]
|
||||
}
|
||||
],
|
||||
"triple-equals": true
|
||||
},
|
||||
"defaultSeverity": "warning"
|
||||
}
|
||||
Reference in New Issue
Block a user