@@ -2,7 +2,7 @@ import * as vscode from 'vscode';
2
2
import fs = require( 'fs' ) ;
3
3
import path = require( 'path' ) ;
4
4
import { AtelierAPI } from '../api' ;
5
- import { outputChannel , mkdirSyncRecursive , currentWorkspaceFolder , notNull } from '../utils' ;
5
+ import { outputChannel , mkdirSyncRecursive , notNull , workspaceFolderUri , currentWorkspaceFolder } from '../utils' ;
6
6
import { PackageNode } from '../explorer/models/packageNode' ;
7
7
import { ClassNode } from '../explorer/models/classesNode' ;
8
8
import { RoutineNode } from '../explorer/models/routineNode' ;
@@ -19,7 +19,6 @@ const filesFilter = (file: any) => {
19
19
const getFileName = ( folder : string , name : string , split : boolean , addCategory : boolean ) : string => {
20
20
let fileNameArray : string [ ] = name . split ( '.' ) ;
21
21
let fileExt = fileNameArray . pop ( ) . toLowerCase ( ) ;
22
- const root = [ vscode . workspace . rootPath , currentWorkspaceFolder ( ) ] . join ( path . sep ) ;
23
22
const cat = addCategory
24
23
? fileExt === 'cls'
25
24
? 'CLS'
@@ -28,17 +27,18 @@ const getFileName = (folder: string, name: string, split: boolean, addCategory:
28
27
: 'OTH'
29
28
: null ;
30
29
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 ) ;
32
31
return [ fileName , fileExt ] . join ( '.' ) ;
33
32
}
34
- return [ root , folder , cat , name ] . filter ( notNull ) . join ( path . sep ) ;
33
+ return [ folder , cat , name ] . filter ( notNull ) . join ( path . sep ) ;
35
34
} ;
36
35
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 ) {
39
38
return ;
40
39
}
41
40
const api = new AtelierAPI ( ) ;
41
+ api . setConnection ( workspaceFolder ) ;
42
42
const log = status => outputChannel . appendLine ( `export "${ name } " as "${ fileName } " - ${ status } ` ) ;
43
43
const folders = path . dirname ( fileName ) ;
44
44
return mkdirSyncRecursive ( folders )
@@ -110,49 +110,51 @@ export async function exportFile(name: string, fileName: string): Promise<any> {
110
110
} ) ;
111
111
}
112
112
113
- export async function exportList ( files : string [ ] ) : Promise < any > {
113
+ export async function exportList ( files : string [ ] , workspaceFolder : string ) : Promise < any > {
114
114
if ( ! files || ! files . length ) {
115
115
vscode . window . showWarningMessage ( 'Nothing to export' ) ;
116
116
}
117
- const { atelier, folder, maxConcurrentConnections, addCategory } = config ( 'export' ) ;
117
+ const { atelier, folder, maxConcurrentConnections, addCategory } = config ( 'export' , workspaceFolder ) ;
118
118
119
+ const root = [ workspaceFolderUri ( workspaceFolder ) . fsPath , folder ] . join ( path . sep ) ;
119
120
if ( maxConcurrentConnections > 0 ) {
120
121
const limiter = new Bottleneck ( {
121
122
maxConcurrent : maxConcurrentConnections
122
123
} ) ;
123
124
const results = [ ] ;
124
125
for ( let i = 0 ; i < files . length ; i ++ ) {
125
126
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 ) )
127
128
) ;
128
129
results . push ( result ) ;
129
130
}
130
131
return results ;
131
132
}
132
133
return Promise . all (
133
134
files . map ( file => {
134
- exportFile ( file , getFileName ( folder , file , atelier , addCategory ) ) ;
135
+ exportFile ( workspaceFolder , file , getFileName ( root , file , atelier , addCategory ) ) ;
135
136
} )
136
137
) ;
137
138
}
138
139
139
140
export async function exportAll ( ) : Promise < any > {
140
- if ( ! config ( 'conn' ) . active ) {
141
+ const workspaceFolder = currentWorkspaceFolder ( ) ;
142
+ if ( ! config ( 'conn' , workspaceFolder ) . active ) {
141
143
return ;
142
144
}
143
145
const api = new AtelierAPI ( ) ;
144
146
outputChannel . show ( true ) ;
145
- const { category, generated, filter } = config ( 'export' ) ;
147
+ const { category, generated, filter } = config ( 'export' , workspaceFolder ) ;
146
148
const files = data => data . result . content . filter ( filesFilter ) . map ( file => file . name ) ;
147
149
return api . getDocNames ( { category, generated, filter } ) . then ( data => {
148
- return exportList ( files ( data ) ) ;
150
+ return exportList ( files ( data ) , workspaceFolder ) ;
149
151
} ) ;
150
152
}
151
153
152
154
export async function exportExplorerItem ( node : PackageNode | ClassNode | RoutineNode ) : Promise < any > {
153
- if ( ! config ( 'conn' ) . active ) {
155
+ if ( ! config ( 'conn' , node . workspaceFolder ) . active ) {
154
156
return ;
155
157
}
156
158
const items = node instanceof PackageNode ? node . getClasses ( ) : [ node . fullName ] ;
157
- return exportList ( items ) ;
159
+ return exportList ( items , node . workspaceFolder ) ;
158
160
}
0 commit comments