def cmd_args()

in pygenie/jobs/pig.py [0:0]


    def cmd_args(self):
        """
        The constructed command line arguments using the job's definition. If the
        command line arguments are set explicitly (by calling
        :py:meth:`command_arguments`) this will be the same.
        """

        if self._command_arguments is not None:
            return self._command_arguments

        filename = PigJob.DEFAULT_SCRIPT_NAME
        if is_file(self._script):
            filename = os.path.basename(self._script)
            self._add_dependency(self._script)
        elif self._script is not None:
            self._add_dependency({'name': filename, 'data': self._script})

        param_files_str = ' '.join([
            '-param_file {}'.format(os.path.basename(p)) \
            for p in self._parameter_files
        ])

        # put parameters into a parameter file and specify parameter file on command line
        # this is to get around weird quoting issues in parameter values, etc
        param_str = self._parameter_file
        if param_str:
            self._add_dependency({
                'name': '_pig_parameters.txt',
                'data': param_str
            })

        props_str = ' '.join([
            '-D{name}={value}'.format(name=k, value=v) \
            for k, v in self._command_options.get('-D', {}).items()
        ])

        prop_file_str = ' '.join(['-P {}'.format(os.path.basename(f)) for f in self._property_files]) \
            if self._property_files \
            else ''

        return '{props} {prop_file} {param_files} {params} -f {filename} {post_cmd_args}' \
            .format(prop_file=prop_file_str,
                    props=props_str,
                    filename=filename,
                    param_files=param_files_str,
                    params='-param_file _pig_parameters.txt' if param_str else '',
                    post_cmd_args=' '.join(self._post_cmd_args)) \
            .strip()