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 | (function (InitConfigFileErrorTypes) {
|
10 | InitConfigFileErrorTypes[InitConfigFileErrorTypes["InitInputFileExists"] = "InitInputFileExists"] = "InitInputFileExists";
|
11 | InitConfigFileErrorTypes[InitConfigFileErrorTypes["InitInputFileTypeNotSupported"] = "InitInputFileTypeNotSupported"] = "InitInputFileTypeNotSupported";
|
12 | })(exports.InitConfigFileErrorTypes || (exports.InitConfigFileErrorTypes = {}));
|
13 | var 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 = {}));
|
20 | var 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 | );
|
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 | }
|
124 | function 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 | }
|
134 | Object.defineProperty(exports, "__esModule", { value: true });
|
135 | exports.default = handleIncomingInitCommand;
|
136 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5pbml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1hbmQuaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNEJBQTJDLGVBQWUsQ0FBQyxDQUFBO0FBRzNELElBQU8sU0FBUyxXQUFXLFdBQVcsQ0FBQyxDQUFDO0FBQ3hDLElBQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxDQUFDO0FBQzFCLElBQVksSUFBSSxXQUFNLGNBQWMsQ0FBQyxDQUFBO0FBRXJDLHFCQUEwQixNQUFNLENBQUMsQ0FBQTtBQUNqQyxpQ0FBMEIsb0JBQW9CLENBQUMsQ0FBQTtBQU0vQyxJQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUV0QyxXQUFZLHdCQUF3QjtJQUNoQywyRUFBMkIscUJBQXFCLHlCQUFBLENBQUE7SUFDaEQscUZBQXFDLCtCQUErQixtQ0FBQSxDQUFBO0FBQ3hFLENBQUMsRUFIVyxnQ0FBd0IsS0FBeEIsZ0NBQXdCLFFBR25DO0FBSEQsSUFBWSx3QkFBd0IsR0FBeEIsZ0NBR1gsQ0FBQTtBQXNCRCxXQUFZLG1CQUFtQjtJQUMzQixrREFBWSxNQUFNLFVBQUEsQ0FBQTtJQUNsQixnREFBVSxJQUFJLFFBQUEsQ0FBQTtJQUNkLGtEQUFZLE1BQU0sVUFBQSxDQUFBO0lBQ2xCLG9EQUFjLFFBQVEsWUFBQSxDQUFBO0FBQzFCLENBQUMsRUFMVywyQkFBbUIsS0FBbkIsMkJBQW1CLFFBSzlCO0FBTEQsSUFBWSxtQkFBbUIsR0FBbkIsMkJBS1gsQ0FBQTtBQUVELGlCQUFpQixPQUF1QjtJQUM3QiwyQkFBTSxFQUFFLDJCQUFRLENBQVk7SUFFbkMsSUFBTSxXQUFXLEdBQUcsV0FBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFdkQsSUFBTSx1QkFBdUIsR0FBRztRQUM1QixHQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFFLGVBQWU7UUFDM0MsR0FB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 |
\ | No newline at end of file |