UNPKG

2.64 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var fs_promise_1 = require("fs-promise");
4var oly_core_1 = require("oly-core");
5var path_1 = require("path");
6/**
7 * Provide a safe place to store files
8 */
9var WorkspaceProvider = (function () {
10 function WorkspaceProvider() {
11 this.directory = path_1.join(process.cwd(), "workspace");
12 this.tmp = ".tmp";
13 }
14 /**
15 * Generate a filepath. Useful for temp file or test.
16 *
17 * @return Random filepath
18 */
19 WorkspaceProvider.prototype.rand = function () {
20 return this.join(this.tmp, oly_core_1._.shortid());
21 };
22 /**
23 * Get absolute path of workspace file.
24 *
25 * @param entry
26 * @return {string}
27 */
28 WorkspaceProvider.prototype.join = function () {
29 var entry = [];
30 for (var _i = 0; _i < arguments.length; _i++) {
31 entry[_i] = arguments[_i];
32 }
33 return path_1.join.apply(void 0, [this.directory].concat(entry));
34 };
35 WorkspaceProvider.prototype.onStart = function () {
36 return __awaiter(this, void 0, void 0, function () {
37 return __generator(this, function (_a) {
38 switch (_a.label) {
39 case 0: return [4 /*yield*/, fs_promise_1.mkdirp(this.directory)];
40 case 1:
41 _a.sent();
42 return [4 /*yield*/, fs_promise_1.remove(this.join(this.tmp))];
43 case 2:
44 _a.sent();
45 return [4 /*yield*/, fs_promise_1.mkdirp(this.join(this.tmp))];
46 case 3:
47 _a.sent();
48 return [2 /*return*/];
49 }
50 });
51 });
52 };
53 WorkspaceProvider.prototype.onStop = function () {
54 return __awaiter(this, void 0, void 0, function () {
55 return __generator(this, function (_a) {
56 switch (_a.label) {
57 case 0: return [4 /*yield*/, fs_promise_1.remove(this.join(this.tmp))];
58 case 1:
59 _a.sent();
60 return [2 /*return*/];
61 }
62 });
63 });
64 };
65 return WorkspaceProvider;
66}());
67__decorate([
68 oly_core_1.env("WORKSPACE_DIRECTORY"),
69 __metadata("design:type", String)
70], WorkspaceProvider.prototype, "directory", void 0);
71__decorate([
72 oly_core_1.env("WORKSPACE_TMP"),
73 __metadata("design:type", String)
74], WorkspaceProvider.prototype, "tmp", void 0);
75exports.WorkspaceProvider = WorkspaceProvider;
76//# sourceMappingURL=WorkspaceProvider.js.map
\No newline at end of file