1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const fs = require("fs-extra");
|
4 | const TRAVIS_NODE_VERSIONS_1 = require("../../const/TRAVIS_NODE_VERSIONS");
|
5 | const PackageManager_1 = require("../../inc/PackageManager");
|
6 | const Git_1 = require("../Git");
|
7 | const Log_1 = require("../Log");
|
8 | const ObjectWriter_1 = require("../ObjectWriter");
|
9 | function handle(c) {
|
10 | if (fs.pathExistsSync(".travis.yml" )) {
|
11 | Log_1.Log.info('Skipping .travis.yml generation');
|
12 | return;
|
13 | }
|
14 | Log_1.Log.info('Generating .travis.yml');
|
15 | const isYarn = c.promptedPkgMgr() === PackageManager_1.PackageManager.YARN;
|
16 | const w = new ObjectWriter_1.ObjectWriter(".travis.yml" , 1 );
|
17 | w.set('language', 'node_js');
|
18 | w.set('node_js', TRAVIS_NODE_VERSIONS_1.TRAVIS_NODE_VERSIONS);
|
19 | const beforeInstall = [
|
20 | isYarn ? 'npm i -g yarn greenkeeper-lockfile' : 'npm i -g greenkeeper-lockfile',
|
21 | 'greenkeeper-lockfile-update'
|
22 | ];
|
23 | w.set('before_install', beforeInstall);
|
24 | w.set('install', isYarn ? 'yarn install --check-files' : 'npm install');
|
25 | w.set('script', [
|
26 | `${c.promptedPkgMgr()} run tslint`,
|
27 | `${c.promptedPkgMgr()} run typecheck`,
|
28 | `${c.promptedPkgMgr()} test${isYarn ? ' ' : ' -- '}--forbid-only --forbid-pending`
|
29 | ]);
|
30 | w.set('after_script', 'if [[ $GH_TOKEN ]]; then greenkeeper-lockfile-upload; fi;');
|
31 | w.set('after_success', 'cat ./coverage/lcov.info | coveralls');
|
32 | if (isYarn) {
|
33 | w.set('cache.yarn', true);
|
34 | }
|
35 | else {
|
36 | w.set('cache.directories', ['./node_modules']);
|
37 | }
|
38 | const shouldSkipRelease = process.env.RUNNING_PERSONAL_BUILD_TOOLS_TESTS ?
|
39 | !!process.env.TEST_SKIP_TRAVIS_RELEASE : c.get('skipTravisRelease');
|
40 | if (!shouldSkipRelease) {
|
41 | Log_1.Log.info('Generating release info @ .travis.yml');
|
42 | const bfi = [];
|
43 | if (isYarn) {
|
44 | bfi.unshift('npm i -g yarn');
|
45 | }
|
46 |
|
47 | w.set('stages', [
|
48 | 'Test',
|
49 | {
|
50 | name: 'Release',
|
51 | if: 'branch = master AND type = push AND (NOT tag IS present)'
|
52 | }
|
53 | ]);
|
54 | let finalReleaseBeforeInstall;
|
55 | switch (bfi.length) {
|
56 | case 0:
|
57 | finalReleaseBeforeInstall = [];
|
58 | break;
|
59 | case 1:
|
60 | finalReleaseBeforeInstall = bfi[0];
|
61 | break;
|
62 | default:
|
63 | finalReleaseBeforeInstall = bfi;
|
64 | }
|
65 | w.set('jobs.include', [{
|
66 | stage: 'Release',
|
67 | node_js: 'stable',
|
68 | before_install: finalReleaseBeforeInstall,
|
69 | before_script: [
|
70 | `${c.promptedPkgMgr()} run build`,
|
71 | 'alo copy-files'
|
72 | ],
|
73 | script: 'semantic-release',
|
74 | after_success: [],
|
75 | after_script: []
|
76 | }]);
|
77 |
|
78 | }
|
79 | else {
|
80 | Log_1.Log.info('Skipping release info @ .travis.yml');
|
81 | }
|
82 | w.save();
|
83 | Git_1.Git.add(".travis.yml" );
|
84 | Log_1.Log.success('Generated .travis.yml');
|
85 | }
|
86 | exports.handle = handle;
|