async setFromFilePath(filePath, ext = '.json') {
        const redirectsFilePath = await this.getRedirectsFilePath();
        const content = await readRedirectsFile(filePath);
        const parsed = parseRedirectsFile(content, ext);
        this.validate(parsed);

        if (redirectsFilePath) {
            const backupRedirectsPath = this.getBackupFilePath(redirectsFilePath);

            const backupExists = await fs.pathExists(backupRedirectsPath);
            if (backupExists) {
                await fs.unlink(backupRedirectsPath);
            }

            await fs.move(redirectsFilePath, backupRedirectsPath);
        }

        if (ext === '.json') {
            await fs.writeFile(this.createRedirectsFilePath('.json'), JSON.stringify(parsed), 'utf-8');
        } else if (ext === '.yaml') {
            await fs.copy(filePath, this.createRedirectsFilePath('.yaml'));
        }

        this.redirectManager.removeAllRedirects();
        for (const redirect of parsed) {
            this.redirectManager.addRedirect(redirect.from, redirect.to, {permanent: redirect.permanent});
        }
    }
@param {string} filePath
@param {'.yaml'|'.json'} [ext]

@returns {Promise<>}