Skip to content

Commit 37ec647

Browse files
committed
better way to solve #18
1 parent 60cfefb commit 37ec647

File tree

5 files changed

+30
-16
lines changed

5 files changed

+30
-16
lines changed

Diff for: commands/export.ts

+17-15
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import * as vscode from 'vscode';
22
import fs = require('fs');
33
import path = require('path');
44
import { AtelierAPI } from '../api';
5-
import { outputChannel, mkdirSyncRecursive, currentWorkspaceFolder, notNull } from '../utils';
5+
import { outputChannel, mkdirSyncRecursive, notNull, workspaceFolderUri, currentWorkspaceFolder } from '../utils';
66
import { PackageNode } from '../explorer/models/packageNode';
77
import { ClassNode } from '../explorer/models/classesNode';
88
import { RoutineNode } from '../explorer/models/routineNode';
@@ -19,7 +19,6 @@ const filesFilter = (file: any) => {
1919
const getFileName = (folder: string, name: string, split: boolean, addCategory: boolean): string => {
2020
let fileNameArray: string[] = name.split('.');
2121
let fileExt = fileNameArray.pop().toLowerCase();
22-
const root = [vscode.workspace.rootPath, currentWorkspaceFolder()].join(path.sep);
2322
const cat = addCategory
2423
? fileExt === 'cls'
2524
? 'CLS'
@@ -28,17 +27,18 @@ const getFileName = (folder: string, name: string, split: boolean, addCategory:
2827
: 'OTH'
2928
: null;
3029
if (split) {
31-
let fileName = [root, folder, cat, ...fileNameArray].filter(notNull).join(path.sep);
30+
let fileName = [folder, cat, ...fileNameArray].filter(notNull).join(path.sep);
3231
return [fileName, fileExt].join('.');
3332
}
34-
return [root, folder, cat, name].filter(notNull).join(path.sep);
33+
return [folder, cat, name].filter(notNull).join(path.sep);
3534
};
3635

37-
export async function exportFile(name: string, fileName: string): Promise<any> {
38-
if (!config('conn').active) {
36+
export async function exportFile(workspaceFolder: string, name: string, fileName: string): Promise<any> {
37+
if (!config('conn', workspaceFolder).active) {
3938
return;
4039
}
4140
const api = new AtelierAPI();
41+
api.setConnection(workspaceFolder);
4242
const log = status => outputChannel.appendLine(`export "${name}" as "${fileName}" - ${status}`);
4343
const folders = path.dirname(fileName);
4444
return mkdirSyncRecursive(folders)
@@ -110,49 +110,51 @@ export async function exportFile(name: string, fileName: string): Promise<any> {
110110
});
111111
}
112112

113-
export async function exportList(files: string[]): Promise<any> {
113+
export async function exportList(files: string[], workspaceFolder: string): Promise<any> {
114114
if (!files || !files.length) {
115115
vscode.window.showWarningMessage('Nothing to export');
116116
}
117-
const { atelier, folder, maxConcurrentConnections, addCategory } = config('export');
117+
const { atelier, folder, maxConcurrentConnections, addCategory } = config('export', workspaceFolder);
118118

119+
const root = [workspaceFolderUri(workspaceFolder).fsPath, folder].join(path.sep);
119120
if (maxConcurrentConnections > 0) {
120121
const limiter = new Bottleneck({
121122
maxConcurrent: maxConcurrentConnections
122123
});
123124
const results = [];
124125
for (let i = 0; i < files.length; i++) {
125126
const result = await limiter.schedule(() =>
126-
exportFile(files[i], getFileName(folder, files[i], atelier, addCategory))
127+
exportFile(workspaceFolder, files[i], getFileName(root, files[i], atelier, addCategory))
127128
);
128129
results.push(result);
129130
}
130131
return results;
131132
}
132133
return Promise.all(
133134
files.map(file => {
134-
exportFile(file, getFileName(folder, file, atelier, addCategory));
135+
exportFile(workspaceFolder, file, getFileName(root, file, atelier, addCategory));
135136
})
136137
);
137138
}
138139

139140
export async function exportAll(): Promise<any> {
140-
if (!config('conn').active) {
141+
const workspaceFolder = currentWorkspaceFolder();
142+
if (!config('conn', workspaceFolder).active) {
141143
return;
142144
}
143145
const api = new AtelierAPI();
144146
outputChannel.show(true);
145-
const { category, generated, filter } = config('export');
147+
const { category, generated, filter } = config('export', workspaceFolder);
146148
const files = data => data.result.content.filter(filesFilter).map(file => file.name);
147149
return api.getDocNames({ category, generated, filter }).then(data => {
148-
return exportList(files(data));
150+
return exportList(files(data), workspaceFolder);
149151
});
150152
}
151153

152154
export async function exportExplorerItem(node: PackageNode | ClassNode | RoutineNode): Promise<any> {
153-
if (!config('conn').active) {
155+
if (!config('conn', node.workspaceFolder).active) {
154156
return;
155157
}
156158
const items = node instanceof PackageNode ? node.getClasses() : [node.fullName];
157-
return exportList(items);
159+
return exportList(items, node.workspaceFolder);
158160
}

Diff for: explorer/models/classesNode.ts

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ export class ClassNode extends NodeBase {
1313
super(label);
1414
}
1515

16+
get workspaceFolder(): string {
17+
return this._workspaceFolder;
18+
}
19+
1620
getTreeItem(): vscode.TreeItem {
1721
let displayName: string = this.label;
1822

Diff for: explorer/models/packageNode.ts

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ export class PackageNode extends NodeBase {
1313
super(label);
1414
}
1515

16+
get workspaceFolder(): string {
17+
return this._workspaceFolder;
18+
}
19+
1620
getTreeItem(): vscode.TreeItem {
1721
let displayName: string = this.label;
1822

Diff for: explorer/models/routineNode.ts

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ export class RoutineNode extends NodeBase {
1313
super(label);
1414
}
1515

16+
get workspaceFolder(): string {
17+
return this._workspaceFolder;
18+
}
19+
1620
getTreeItem(): vscode.TreeItem {
1721
let displayName: string = this.label;
1822

Diff for: utils/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ export function currentWorkspaceFolder(): string {
8686
return workspaceFolder || workspaceState.get<string>('workspaceFolder');
8787
}
8888

89-
export function workspaceFolderUri(workspaceFolder: string): vscode.Uri {
89+
export function workspaceFolderUri(workspaceFolder: string = currentWorkspaceFolder()): vscode.Uri {
9090
return vscode.workspace.workspaceFolders.find(el => el.name.toLowerCase() === workspaceFolder.toLowerCase()).uri;
9191
}
9292

0 commit comments

Comments
 (0)