1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const tslib_1 = require("tslib");
|
4 | const process = tslib_1.__importStar(require("process"));
|
5 | const fsx = tslib_1.__importStar(require("fs-extra"));
|
6 | const fsTreeUtils = tslib_1.__importStar(require("fs-tree-utils"));
|
7 | const unique_temp_path_1 = tslib_1.__importDefault(require("unique-temp-path"));
|
8 | var base;
|
9 | (function (base) {
|
10 | function createFactory({ setup, teardown }) {
|
11 | const forAsync = (fn) => async () => {
|
12 | const sm = await setup();
|
13 | const mt = await fn(sm);
|
14 | await teardown(mt);
|
15 | };
|
16 | const forSync = (fn) => forAsync(async (sm) => fn(sm));
|
17 | return Object.assign(forAsync, {
|
18 | forAsync,
|
19 | forSync
|
20 | });
|
21 | }
|
22 | base.createFactory = createFactory;
|
23 | })(base = exports.base || (exports.base = {}));
|
24 | exports.createFactory = base.createFactory;
|
25 | var virtualEnvironment;
|
26 | (function (virtualEnvironment) {
|
27 | function createFactory(tree, container = unique_temp_path_1.default()) {
|
28 | const previousWorkingDirectory = process.cwd();
|
29 | const info = { tree, container, previousWorkingDirectory };
|
30 | async function populate() {
|
31 | await depopulate();
|
32 | await fsTreeUtils.create(tree, container);
|
33 | return info;
|
34 | }
|
35 | async function depopulate() {
|
36 | await fsx.remove(container);
|
37 | return info;
|
38 | }
|
39 | const setup = async () => {
|
40 | await populate();
|
41 | process.chdir(container);
|
42 | return info;
|
43 | };
|
44 | const teardown = async () => {
|
45 | process.chdir(previousWorkingDirectory);
|
46 | await depopulate();
|
47 | };
|
48 | const apply = base.createFactory({ setup, teardown });
|
49 | return { info, apply };
|
50 | }
|
51 | virtualEnvironment.createFactory = createFactory;
|
52 | })(virtualEnvironment = exports.virtualEnvironment || (exports.virtualEnvironment = {}));
|
53 | exports.default = exports.createFactory;
|
54 |
|
\ | No newline at end of file |