Created
October 5, 2017 03:10
-
-
Save ywarnier/905747cfb21322267da733ff98a01cfc to your computer and use it in GitHub Desktop.
Rebuild Firefox's profiles.ini from the profile cache directories
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* This script provide a way to rebuild the profiles.ini file | |
* in your ~/.mozilla/firefox/ directory in case, like me, the | |
* update to Firefox 56 on Ubuntu wiped your profiles.ini out | |
* and placed a fresh "default" profile instead, but luckily | |
* left all the profiles directories in place. | |
* To use it, you need php-cli and you need to place this file | |
* inside the ~/.mozilla/firefox/ directory. | |
* Execute it with "php firefox-profiles-ini-rebuild.php" and | |
* it will generate a "profiles.ini.new" file that you can later | |
* (after a manual check) add at the bottom of your virgin | |
* profiles.ini with "cat profiles.ini.new >> profiles.ini". | |
* Make sure you delete the first block (default) if it's not | |
* the right default profile. | |
* @author Yannick Warnier <y at beeznest dot com> | |
* @license GNU/LGPLv2+ | |
*/ | |
$list = scandir(__DIR__); | |
$i = 1; | |
$string = ''; | |
$block = "[ProfileX_X]\nName=Y_Y\nIsRelative=1\nPath=Z_Z\nDefault=0\n\n"; | |
$file = 'profiles.ini.new'; | |
foreach ($list as $entry) { | |
if (substr($entry, 0, 1) == '.') { | |
continue; | |
} | |
if (!preg_match('/\w+\.\w+/', $entry)) { | |
echo "$entry does not match pattern".PHP_EOL; | |
continue; | |
} | |
$split = preg_split('/\./', $entry); | |
print_r($split, 1); | |
$name = $split[1]; | |
$find = ['X_X', 'Y_Y', 'Z_Z']; | |
$replace = [$i, $name, $entry]; | |
$string .= str_replace($find, $replace, $block); | |
$i++; | |
} | |
file_put_contents(__DIR__.'/'.$file, $string); | |
echo "Done! Make sure you check $file before adding it to profiles.ini".PHP_EOL; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment