UNPKG

9.42 kBJavaScriptView Raw
1"use strict";
2var command_run_1 = require("./command.run");
3var Immutable = require("immutable");
4var Rx = require("rx");
5var file = require("./file.utils");
6var path_1 = require("path");
7var reporter_resolve_1 = require("./reporter.resolve");
8var _ = require("../lodash.custom");
9var InitConfigFileErrorTypes;
10(function (InitConfigFileErrorTypes) {
11 InitConfigFileErrorTypes[InitConfigFileErrorTypes["InitInputFileExists"] = "InitInputFileExists"] = "InitInputFileExists";
12 InitConfigFileErrorTypes[InitConfigFileErrorTypes["InitInputFileTypeNotSupported"] = "InitInputFileTypeNotSupported"] = "InitInputFileTypeNotSupported";
13})(InitConfigFileErrorTypes = exports.InitConfigFileErrorTypes || (exports.InitConfigFileErrorTypes = {}));
14var 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 = {}));
21function 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}
123function 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}
133Object.defineProperty(exports, "__esModule", { value: true });
134exports.default = handleIncomingInitCommand;
135//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5pbml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1hbmQuaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNkNBQTJEO0FBRzNELHFDQUF3QztBQUN4Qyx1QkFBMEI7QUFDMUIsbUNBQXFDO0FBRXJDLDZCQUFpQztBQUNqQyx1REFBK0M7QUFNL0MsSUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFdEMsSUFBWSx3QkFHWDtBQUhELFdBQVksd0JBQXdCO0lBQ2hDLDJFQUEyQixxQkFBcUIseUJBQUEsQ0FBQTtJQUNoRCxxRkFBcUMsK0JBQStCLG1DQUFBLENBQUE7QUFDeEUsQ0FBQyxFQUhXLHdCQUF3QixHQUF4QixnQ0FBd0IsS0FBeEIsZ0NBQXdCLFFBR25DO0FBc0JELElBQVksbUJBS1g7QUFMRCxXQUFZLG1CQUFtQjtJQUMzQixrREFBWSxNQUFNLFVBQUEsQ0FBQTtJQUNsQixnREFBVSxJQUFJLFFBQUEsQ0FBQTtJQUNkLGtEQUFZLE1BQU0sVUFBQSxDQUFBO0lBQ2xCLG9EQUFjLFFBQVEsWUFBQSxDQUFBO0FBQzFCLENBQUMsRUFMVyxtQkFBbUIsR0FBbkIsMkJBQW1CLEtBQW5CLDJCQUFtQixRQUs5QjtBQUVELGlCQUFpQixPQUF1QjtJQUM3QixJQUFBLHVCQUFNLEVBQUUsMkJBQVEsQ0FBWTtJQUVuQyxJQUFNLFdBQVcsR0FBRyxXQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUV2RCxJQUFNLHVCQUF1QjtRQUN6QixHQUFDLG1CQUFtQixDQUFDLElBQUksSUFBRyxlQUFlO1FBQzNDLEdBQUMsbUJBQW1CLENBQUMsRUFBRSxJQUFHLGFBQWE7UUFDdkMsR0FBQyxtQkFBbUIsQ0FBQyxJQUFJLElBQUcsZUFBZTtRQUMzQyxHQUFDLG1CQUFtQixDQUFDLE1BQU0sSUFBRyxXQUFXO1dBQzVDLENBQUM7SUFFRixJQUFNLGNBQWMs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
\No newline at end of file