Source code for ievv_opensource.utils.ievvbuildstatic.npmrun

from ievv_opensource.utils.ievvbuildstatic import pluginbase
from ievv_opensource.utils.logmixin import Logger
from ievv_opensource.utils.shellcommandmixin import ShellCommandError
from ievv_opensource.utils.shellcommandmixin import ShellCommandMixin


[docs]class Plugin(pluginbase.Plugin, ShellCommandMixin): """ Run a script from package.json (I.E.: ``npm run <something>``. Examples: Lets say you have the following in your package.json:: { "scripts": { "myscript": "echo 'hello'" } } You can then make this script run with:: IEVVTASKS_BUILDSTATIC_APPS = ievvbuildstatic.config.Apps( ievvbuildstatic.config.App( appname='demoapp', version='1.0.0', plugins=[ ievvbuildstatic.npmrun.Plugin(script='myscript'), ] ) ) """ name = 'npmrun' def __init__(self, script, script_args=None, **kwargs): """ Args: script (str): The name of the key for the script in the ``scripts`` object in ``package.json``. script_args (list): Arguments for the script as a list of strings. **kwargs: Kwargs for :class:`ievv_opensource.utils.ievvbuildstatic.pluginbase.Plugin`. """ self.script = script self.script_args = script_args super(Plugin, self).__init__(**kwargs)
[docs] def run(self): name = '"{script}" package.json script'.format(script=self.script) self.get_logger().command_start('Running the {name} for {appname}'.format( name=name, appname=self.app.appname)) try: self.app.get_installer('npm').run_packagejson_script( script=self.script, args=self.script_args or []) except ShellCommandError: self.get_logger().command_error('{name} FAILED!'.format(name=name)) raise SystemExit() else: self.get_logger().command_success('{name} succeeded :)'.format(name=name))