1 | ;
|
2 | var command_run_1 = require("./command.run");
|
3 | var Immutable = require("immutable");
|
4 | var Rx = require("rx");
|
5 | var file = require("./file.utils");
|
6 | var path_1 = require("path");
|
7 | var reporter_resolve_1 = require("./reporter.resolve");
|
8 | var _ = require("../lodash.custom");
|
9 | var InitConfigFileErrorTypes;
|
10 | (function (InitConfigFileErrorTypes) {
|
11 | InitConfigFileErrorTypes[InitConfigFileErrorTypes["InitInputFileExists"] = "InitInputFileExists"] = "InitInputFileExists";
|
12 | InitConfigFileErrorTypes[InitConfigFileErrorTypes["InitInputFileTypeNotSupported"] = "InitInputFileTypeNotSupported"] = "InitInputFileTypeNotSupported";
|
13 | })(InitConfigFileErrorTypes = exports.InitConfigFileErrorTypes || (exports.InitConfigFileErrorTypes = {}));
|
14 | var InitConfigFileTypes;
|
15 | (function (InitConfigFileTypes) {
|
16 | InitConfigFileTypes[InitConfigFileTypes["yaml"] = "yaml"] = "yaml";
|
17 | InitConfigFileTypes[InitConfigFileTypes["js"] = "js"] = "js";
|
18 | InitConfigFileTypes[InitConfigFileTypes["json"] = "json"] = "json";
|
19 | InitConfigFileTypes[InitConfigFileTypes["cbfile"] = "cbfile"] = "cbfile";
|
20 | })(InitConfigFileTypes = exports.InitConfigFileTypes || (exports.InitConfigFileTypes = {}));
|
21 | function execute(trigger) {
|
22 | var config = trigger.config, reporter = trigger.reporter;
|
23 | var templateDir = path_1.join(__dirname, "..", "templates");
|
24 | var maybeExistingFileInputs = (_a = {},
|
25 | _a[InitConfigFileTypes.yaml] = "crossbow.yaml",
|
26 | _a[InitConfigFileTypes.js] = "crossbow.js",
|
27 | _a[InitConfigFileTypes.json] = "crossbow.json",
|
28 | _a[InitConfigFileTypes.cbfile] = "cbfile.js",
|
29 | _a);
|
30 | var outputFileName = maybeExistingFileInputs[config.type];
|
31 | if (outputFileName === undefined) {
|
32 | var errors_1 = [{
|
33 | type: InitConfigFileErrorTypes.InitInputFileTypeNotSupported,
|
34 | providedType: config.type,
|
35 | supportedTypes: maybeExistingFileInputs
|
36 | }];
|
37 | if (!config.handoff) {
|
38 | reporter({
|
39 | type: reporter_resolve_1.ReportTypes.InitInputFileTypeNotSupported,
|
40 | data: {
|
41 | error: errors_1[0]
|
42 | }
|
43 | });
|
44 | }
|
45 | return Rx.Observable.just({
|
46 | setup: {
|
47 | existingFilesInCwd: [],
|
48 | matchingFiles: [],
|
49 | errors: errors_1
|
50 | }
|
51 | });
|
52 | }
|
53 | /**
|
54 | * Attempt to load existing config files from the CWD
|
55 | * @type {ExternalFile[]}
|
56 | */
|
57 | var existingFilesInCwd = file.readFilesFromDisk(_.values(maybeExistingFileInputs), config.cwd);
|
58 | /**
|
59 | * Now check if any of the existing files match the one the user
|
60 | * is attempting to create.
|
61 | *
|
62 | * eg:
|
63 | * crossbow init --type js
|
64 | * -> crossbow.js already exists in cwd -> error
|
65 | *
|
66 | * eg:
|
67 | * crossbow init --type yaml
|
68 | * -> crossbow.js already exists in cwd, which is ok because they want a .yaml file -> success
|
69 | *
|
70 | * @type {ExternalFile[]}
|
71 | */
|
72 | var matchingFiles = existingFilesInCwd
|
73 | .filter(function (x) { return x.errors.length === 0; })
|
74 | .filter(function (file) { return outputFileName === file.parsed.base; });
|
75 | var errors = (function () {
|
76 | if (matchingFiles.length) {
|
77 | return matchingFiles.map(function (file) {
|
78 | return { type: InitConfigFileErrorTypes.InitInputFileExists, file: file };
|
79 | });
|
80 | }
|
81 | return [];
|
82 | })();
|
83 | // /**
|
84 | // * Allow consumer to handle executions
|
85 | // */
|
86 | // if (config.handoff) {
|
87 | // return Rx.Ob{existingFilesInCwd, matchingFiles, errors};
|
88 | // }
|
89 | if (errors.length) {
|
90 | reporter({
|
91 | type: reporter_resolve_1.ReportTypes.DuplicateInputFile,
|
92 | data: {
|
93 | error: errors[0]
|
94 | }
|
95 | });
|
96 | return Rx.Observable.just({
|
97 | setup: {
|
98 | existingFilesInCwd: existingFilesInCwd,
|
99 | matchingFiles: matchingFiles,
|
100 | errors: errors
|
101 | }
|
102 | });
|
103 | }
|
104 | var templateFilePath = path_1.join(templateDir, outputFileName);
|
105 | var outputFilePath = path_1.join(config.cwd, outputFileName);
|
106 | var output = {
|
107 | existingFilesInCwd: existingFilesInCwd,
|
108 | matchingFiles: matchingFiles,
|
109 | errors: errors,
|
110 | outputFilePath: outputFilePath,
|
111 | outputFileName: outputFileName,
|
112 | templateFilePath: templateFilePath
|
113 | };
|
114 | reporter({
|
115 | type: reporter_resolve_1.ReportTypes.InputFileCreated,
|
116 | data: {
|
117 | parsed: path_1.parse(outputFilePath)
|
118 | }
|
119 | });
|
120 | return Rx.Observable.just({ setup: output });
|
121 | var _a;
|
122 | }
|
123 | function handleIncomingInitCommand(cli, input, config, reporter) {
|
124 | return execute({
|
125 | shared: new Rx.BehaviorSubject(Immutable.Map({})),
|
126 | cli: cli,
|
127 | input: input,
|
128 | config: config,
|
129 | reporter: reporter,
|
130 | type: command_run_1.TriggerTypes.command
|
131 | });
|
132 | }
|
133 | Object.defineProperty(exports, "__esModule", { value: true });
|
134 | exports.default = handleIncomingInitCommand;
|
135 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5pbml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1hbmQuaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNkNBQTJEO0FBRzNELHFDQUF3QztBQUN4Qyx1QkFBMEI7QUFDMUIsbUNBQXFDO0FBRXJDLDZCQUFpQztBQUNqQyx1REFBK0M7QUFNL0MsSUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFdEMsSUFBWSx3QkFHWDtBQUhELFdBQVksd0JBQXdCO0lBQ2hDLDJFQUEyQixxQkFBcUIseUJBQUEsQ0FBQTtJQUNoRCxxRkFBcUMsK0JBQStCLG1DQUFBLENBQUE7QUFDeEUsQ0FBQyxFQUhXLHdCQUF3QixHQUF4QixnQ0FBd0IsS0FBeEIsZ0NBQXdCLFFBR25DO0FBc0JELElBQVksbUJBS1g7QUFMRCxXQUFZLG1CQUFtQjtJQUMzQixrREFBWSxNQUFNLFVBQUEsQ0FBQTtJQUNsQixnREFBVSxJQUFJLFFBQUEsQ0FBQTtJQUNkLGtEQUFZLE1BQU0sVUFBQSxDQUFBO0lBQ2xCLG9EQUFjLFFBQVEsWUFBQSxDQUFBO0FBQzFCLENBQUMsRUFMVyxtQkFBbUIsR0FBbkIsMkJBQW1CLEtBQW5CLDJCQUFtQixRQUs5QjtBQUVELGlCQUFpQixPQUF1QjtJQUM3QixJQUFBLHVCQUFNLEVBQUUsMkJBQVEsQ0FBWTtJQUVuQyxJQUFNLFdBQVcsR0FBRyxXQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUV2RCxJQUFNLHVCQUF1QjtRQUN6QixHQUFDLG1CQUFtQixDQUFDLElBQUksSUFBRyxlQUFlO1FBQzNDLEdBQUMsbUJBQW1CLENBQUMsRUFBRSxJQUFHLGFBQWE7UUFDdkMsR0FBQyxtQkFBbUIsQ0FBQyxJQUFJLElBQUcsZUFBZTtRQUMzQyxHQUFDLG1CQUFtQixDQUFDLE1BQU0sSUFBRyxXQUFXO1dBQzVDLENBQUM7SUFFRixJQUFNLGNBQWMs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 |
\ | No newline at end of file |