def setup_command(self, encoding, options, personal_dict, file_name=None):
        """Setup command."""

        cmd = [
            self.binary,
            '-l'
        ]

        if encoding:
            cmd.extend(['-i', encoding])

        if personal_dict:
            cmd.extend(['-p', personal_dict])

        allowed = {
            'check-apostrophe', 'check-url',
            'd', 'H', 'i', 'n', 'O', 'r', 't', 'X'
        }

        for k, v in options.items():
            if k in allowed:
                key = ('-%s' if len(k) == 1 else '--%s') % k
                if isinstance(v, bool) and v is True:
                    cmd.append(key)
                elif isinstance(v, str):
                    cmd.extend([key, v])
                elif isinstance(v, int):
                    cmd.extend([key, str(v)])
                elif isinstance(v, list):
                    for value in v:
                        cmd.extend([key, str(value)])

        if file_name is not None:
            cmd.append(file_name)

        return cmd
Setup command.