@@ -3,10 +3,11 @@ const Command = require('../../Command');
33const _ = require ( 'lodash' ) ;
44const CFError = require ( 'cf-errors' ) ;
55const { prepareKeyValueFromCLIEnvOption, crudFilenameOption } = require ( '../../helpers/general' ) ;
6- const ObjectID = require ( 'mongodb' ) . ObjectID ;
76const { workflow, pipeline, log } = require ( '../../../../logic' ) . api ;
87const authManager = require ( '../../../../logic' ) . auth . manager ;
98const Docker = require ( 'dockerode' ) ;
9+ const { validatePipelineYaml } = require ( '../../helpers/validation' ) ;
10+ const { printResult } = require ( '../root/validate.cmd' ) ;
1011
1112const regex = / # # [ 0 - 9 a - f ] { 24 } # # / i;
1213const imageName = 'codefresh/engine:master' ;
@@ -81,6 +82,13 @@ const run = new Command({
8182 describe : 'Set build variables from a file' ,
8283 } ) ;
8384
85+ crudFilenameOption ( yargs , {
86+ name : 'yaml' ,
87+ alias : 'y' ,
88+ raw : true ,
89+ describe : 'Override codefresh.yaml for this execution' ,
90+ } ) ;
91+
8492 return yargs ;
8593 } ,
8694 handler : async ( argv ) => {
@@ -92,6 +100,7 @@ const run = new Command({
92100 const resetVolume = argv [ 'reset-volume' ] ;
93101 const variablesFromFile = argv [ 'var-file' ] ;
94102 const contexts = argv [ 'context' ] ;
103+ const userYamlDescriptor = argv [ 'yaml' ] ;
95104 const local = argv . local ;
96105
97106 try {
@@ -101,6 +110,12 @@ const run = new Command({
101110 message : `Passed pipeline id: ${ pipelineName } does not exist` ,
102111 } ) ;
103112 }
113+
114+ if ( userYamlDescriptor ) {
115+ const result = await validatePipelineYaml ( undefined , userYamlDescriptor ) ;
116+ printResult ( result ) ;
117+ }
118+
104119 if ( local ) {
105120 const docker = new Docker ( ) ;
106121 docker . pull ( imageName , ( err , stream ) => {
@@ -110,9 +125,17 @@ const run = new Command({
110125 console . log ( '\nDone pulling.' ) ;
111126 const currentContext = authManager . getCurrentContext ( ) ;
112127 docker . run ( imageName , [ ] , [ ] , {
113- Env : [ `ACCESS_TOKEN=${ currentContext . token } ` , `PIPELINE_ID=${ pipelineName } ` , `BRANCH=${ branch } ` , `CF_HOST=${ currentContext . url } ` , 'DOCKER_SOCKET_PATH=/var/run/docker.sock' ] ,
128+ Env : [
129+ `ACCESS_TOKEN=${ currentContext . token } ` ,
130+ `PIPELINE_ID=${ pipelineName } ` , `BRANCH=${ branch } ` ,
131+ `CF_HOST=${ currentContext . url } ` ,
132+ 'DOCKER_SOCKET_PATH=/var/run/docker.sock' ,
133+ userYamlDescriptor && `OVERRIDE_WORKFLOW_YAML=${ userYamlDescriptor } ` ,
134+ ] ,
114135 Hostconfig : {
115- Binds : [ '/var/run/docker.sock:/var/run/docker.sock' ] ,
136+ Binds : [
137+ '/var/run/docker.sock:/var/run/docker.sock' ,
138+ ] ,
116139 } ,
117140 } , ( err , data ) => {
118141 if ( err ) {
@@ -149,6 +172,7 @@ const run = new Command({
149172 branch,
150173 sha,
151174 enableNotifications,
175+ userYamlDescriptor,
152176 } ,
153177 } ;
154178
0 commit comments