Skip to content

Commit 7b3efa2

Browse files
committed
export without category solve #7
1 parent 1d65078 commit 7b3efa2

File tree

5 files changed

+32
-11
lines changed

5 files changed

+32
-11
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Change Log
22

3+
## [0.7.11]
4+
5+
- added export setting "objectscript.export.addCategory" if enabled uses previous behavior, adds category folder to export folder, disabled by default
6+
37
## [0.7.10]
48

59
- New logo

commands/export.ts

Lines changed: 18 additions & 10 deletions
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 } from '../utils';
5+
import { outputChannel, mkdirSyncRecursive, currentWorkspaceFolder, notNull } from '../utils';
66
import { PackageNode } from '../explorer/models/packageNode';
77
import { ClassNode } from '../explorer/models/classesNode';
88
import { RoutineNode } from '../explorer/models/routineNode';
@@ -16,16 +16,22 @@ const filesFilter = (file: any) => {
1616
return true;
1717
};
1818

19-
const getFileName = (folder: string, name: string, split: boolean): string => {
19+
const getFileName = (folder: string, name: string, split: boolean, addCategory: boolean): string => {
2020
let fileNameArray: string[] = name.split('.');
2121
let fileExt = fileNameArray.pop().toLowerCase();
2222
const root = [vscode.workspace.rootPath, currentWorkspaceFolder()].join(path.sep);
23-
const cat = fileExt === 'cls' ? 'CLS' : ['int', 'mac', 'inc'].includes(fileExt) ? 'RTN' : 'OTH';
23+
const cat = addCategory
24+
? fileExt === 'cls'
25+
? 'CLS'
26+
: ['int', 'mac', 'inc'].includes(fileExt)
27+
? 'RTN'
28+
: 'OTH'
29+
: null;
2430
if (split) {
25-
let fileName = [root, folder, cat, ...fileNameArray].join(path.sep);
31+
let fileName = [root, folder, cat, ...fileNameArray].filter(notNull).join(path.sep);
2632
return [fileName, fileExt].join('.');
2733
}
28-
return [root, folder, cat, name].join(path.sep);
34+
return [root, folder, cat, name].filter(notNull).join(path.sep);
2935
};
3036

3137
export async function exportFile(name: string, fileName: string): Promise<any> {
@@ -42,7 +48,7 @@ export async function exportFile(name: string, fileName: string): Promise<any> {
4248
throw new Error('Something wrong happened');
4349
}
4450
const content = data.result.content;
45-
const { noStorage, dontExportIfNoChanges } = config().get('export');
51+
const { noStorage, dontExportIfNoChanges } = config('export');
4652

4753
const promise = new Promise((resolve, reject) => {
4854
if (noStorage) {
@@ -108,22 +114,24 @@ export async function exportList(files: string[]): Promise<any> {
108114
if (!files || !files.length) {
109115
vscode.window.showWarningMessage('Nothing to export');
110116
}
111-
const { atelier, folder, maxConcurrentConnections } = config().get('export');
117+
const { atelier, folder, maxConcurrentConnections, addCategory } = config('export');
112118

113119
if (maxConcurrentConnections > 0) {
114120
const limiter = new Bottleneck({
115121
maxConcurrent: maxConcurrentConnections
116122
});
117123
const results = [];
118124
for (let i = 0; i < files.length; i++) {
119-
const result = await limiter.schedule(() => exportFile(files[i], getFileName(folder, files[i], atelier)));
125+
const result = await limiter.schedule(() =>
126+
exportFile(files[i], getFileName(folder, files[i], atelier, addCategory))
127+
);
120128
results.push(result);
121129
}
122130
return results;
123131
}
124132
return Promise.all(
125133
files.map(file => {
126-
exportFile(file, getFileName(folder, file, atelier));
134+
exportFile(file, getFileName(folder, file, atelier, addCategory));
127135
})
128136
);
129137
}
@@ -134,7 +142,7 @@ export async function exportAll(): Promise<any> {
134142
}
135143
const api = new AtelierAPI();
136144
outputChannel.show(true);
137-
const { category, generated, filter } = config().get('export');
145+
const { category, generated, filter } = config('export');
138146
const files = data => data.result.content.filter(filesFilter).map(file => file.name);
139147
return api.getDocNames({ category, generated, filter }).then(data => {
140148
return exportList(files(data));

extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export var extensionContext: vscode.ExtensionContext;
3434
export const config = (config?: string, workspaceFolderName?: string): any => {
3535
workspaceFolderName = workspaceFolderName || currentWorkspaceFolder();
3636

37-
if (['conn'].includes(config)) {
37+
if (['conn', 'export'].includes(config)) {
3838
if (workspaceFolderName !== '') {
3939
const workspaceFolder = vscode.workspace.workspaceFolders.find(
4040
el => el.name.toLowerCase() === workspaceFolderName.toLowerCase()

package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,11 @@
386386
"type": "string",
387387
"default": "src"
388388
},
389+
"objectscript.export.addCategory": {
390+
"description": "add category folder to the export path",
391+
"type": "boolean",
392+
"default": false
393+
},
389394
"objectscript.export.atelier": {
390395
"description": "export source code as Atelier it does ( packages to subfolders )",
391396
"type": "boolean",

utils/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,7 @@ export function onlyUnique(value: any, index: number, self: any) {
9696
}
9797
return self.indexOf(value) === index;
9898
}
99+
100+
export function notNull(el: any) {
101+
return el !== null;
102+
}

0 commit comments

Comments
 (0)