Module ploigos_step_runner.step_implementers.shared.npm_generic
Step Configuration
Step configuration expected as input to this step. Could come from: * static configuration * runtime configuration * previous step results
Configuration Key | Required? | Default | Description |
---|---|---|---|
package-file |
No | 'package.json' |
package.json file for reference app. |
npm-envs |
No | Environment vars to pass to NPM. | |
npm-args |
Yes | None |
Arguments to pass to the npm command. |
Classes
-
Abstract parent class for StepImplementers that use npm.
Expand source code
class NpmGeneric(StepImplementer): """Abstract parent class for StepImplementers that use npm. """ def __init__( # pylint: disable=too-many-arguments self, workflow_result, parent_work_dir_path, config, environment=None, npm_args=None, npm_envs=None ): self.__npm_args = npm_args self.__npm_envs = npm_envs super().__init__( workflow_result=workflow_result, parent_work_dir_path=parent_work_dir_path, config=config, environment=environment ) @staticmethod def step_implementer_config_defaults(): """Getter for the StepImplementer's configuration defaults. Returns ------- dict Default values to use for step configuration values. Notes ----- These are the lowest precedence configuration values. """ return DEFAULT_CONFIG @staticmethod def _required_config_or_result_keys(): """Getter for step configuration or previous step result artifacts that are required before running this step. See Also -------- _validate_required_config_or_previous_step_result_artifact_keys Returns ------- array_list Array of configuration keys or previous step result artifacts that are required before running the step. """ return REQUIRED_CONFIG_OR_PREVIOUS_STEP_RESULT_ARTIFACT_KEYS def _validate_required_config_or_previous_step_result_artifact_keys(self): """Validates that the required configuration keys or previous step result artifacts are set and have valid values. Validates that: * required configuration is given * given 'package-file' exists Raises ------ AssertionError If step configuration or previous step result artifacts have invalid required values """ super()._validate_required_config_or_previous_step_result_artifact_keys() # if package-file has value verify file exists # If it doesn't have value and is required function will have already failed package_file = self.get_value('package-file') if package_file is not None: assert os.path.exists(package_file), \ f'Given npm package file (package-file) does not exist: {package_file}' @property def npm_args(self): """Property for getting the npm arguments to be passed to the npm command. Returns ------- str npm arguments """ npm_args = None if self.__npm_args: npm_args = self.__npm_args else: npm_args = self.get_value('npm-args') return npm_args @npm_args.setter def npm_args(self, value): self.__npm_args = value @property def npm_envs(self): """Property for getting option environment variables that should be accessible to the npm command Returns ------- dict Key value pairs representing environment variables """ npm_envs = None if self.__npm_envs: npm_envs = self.__npm_envs else: npm_envs = self.get_value('npm-envs') return npm_envs def _run_npm_step( self, npm_output_file_path, step_implementer_additional_envs=None, npm_args=None, ): """Runs npm using the configuration given to this step runner. Parameters ---------- npm_output_file_path : str Path to file containing the npm stdout and stderr output. step_implementer_additional_envs : {} Additional environment variables injected by the step implementer. npm_args : str Arguments to pass to npm. Defaults to self.npm_args. Raises ------ StepRunnerException If npm returns a non 0 exit code. """ if not npm_args: npm_args = self.npm_args npm_envs = None if step_implementer_additional_envs: npm_envs = step_implementer_additional_envs if self.npm_envs: if npm_envs: npm_envs.update(self.npm_envs) else: npm_envs = self.npm_envs Shell().run( 'npm', output_file_path=npm_output_file_path, args=npm_args, envs=npm_envs ) def _run_step(self): """Runs the step implemented by this StepImplementer. Returns ------- StepResult Object containing the dictionary results of this step. """ step_result = StepResult.from_step_implementer(self) # package the artifacts npm_output_file_path = self.write_working_file('npm_output.txt') try: # execute npm step (params come from config) self._run_npm_step( npm_output_file_path=npm_output_file_path ) except StepRunnerException as error: step_result.success = False step_result.message = "Error running npm. " \ f"More details maybe found in 'npm-output' report artifact: {error}" finally: step_result.add_artifact( description="Standard out and standard error from npm.", name='npm-output', value=npm_output_file_path ) return step_result
Ancestors
- StepImplementer
- abc.ABC
Subclasses
Static methods
-
Getter for the StepImplementer's configuration defaults.
Returns
dict
- Default values to use for step configuration values.
Notes
These are the lowest precedence configuration values.
Instance variables
-
Property for getting the npm arguments to be passed to the npm command.
Returns
str
- npm arguments
Expand source code
@property def npm_args(self): """Property for getting the npm arguments to be passed to the npm command. Returns ------- str npm arguments """ npm_args = None if self.__npm_args: npm_args = self.__npm_args else: npm_args = self.get_value('npm-args') return npm_args
-
Property for getting option environment variables that should be accessible to the npm command
Returns
dict
- Key value pairs representing environment variables
Expand source code
@property def npm_envs(self): """Property for getting option environment variables that should be accessible to the npm command Returns ------- dict Key value pairs representing environment variables """ npm_envs = None if self.__npm_envs: npm_envs = self.__npm_envs else: npm_envs = self.get_value('npm-envs') return npm_envs
Inherited members
StepImplementer
:config
create_working_dir_sub_dir
environment
get_config_value
get_copy_of_runtime_step_config
get_result_value
get_value
global_config_defaults
global_environment_config_defaults
has_config_value
run_step
step_config
step_config_overrides
step_environment_config
step_name
sub_step_implementer_name
sub_step_name
work_dir_path
workflow_result
write_working_file