UNPKG

3.27 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const fs = require("fs-extra");
4const TRAVIS_NODE_VERSIONS_1 = require("../../const/TRAVIS_NODE_VERSIONS");
5const PackageManager_1 = require("../../inc/PackageManager");
6const Git_1 = require("../Git");
7const Log_1 = require("../Log");
8const ObjectWriter_1 = require("../ObjectWriter");
9function handle(c) {
10 if (fs.pathExistsSync(".travis.yml" /* 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" /* TRAVIS_YML */, 1 /* YAML */);
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 //tslint:disable:object-literal-sort-keys
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 //tslint:disable:object-literal-sort-keys
78 }
79 else {
80 Log_1.Log.info('Skipping release info @ .travis.yml');
81 }
82 w.save();
83 Git_1.Git.add(".travis.yml" /* TRAVIS_YML */);
84 Log_1.Log.success('Generated .travis.yml');
85}
86exports.handle = handle;