UNPKG

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