1
1
Fork 0
mirror of https://github.com/pbatard/rufus.git synced 2024-08-14 23:57:05 +00:00

[pollock] update maintainer mode

* Also add maintenance script
This commit is contained in:
Pete Batard 2018-07-21 15:55:32 +01:00
parent 4483a6b17d
commit 91a18be258
3 changed files with 83 additions and 37 deletions

20
res/loc/po/!update.cmd Normal file
View file

@ -0,0 +1,20 @@
@echo off
if not exist pollock.exe curl https://rufus.ie/locale/pollock.exe --output pollock.exe
cls
:menu
echo 1 - Import .po into .loc
echo 2 - Create .po from .loc
echo 3 - Exit
choice /N /C:123%1
if ERRORLEVEL==3 goto exit
if ERRORLEVEL==2 (
pollock.exe -l
goto menu
)
if ERRORLEVEL==1 (
pollock.exe -i
goto menu
)
:exit
del *.pot
del *.mo

View file

@ -973,7 +973,7 @@ namespace pollock
if (Console.WindowWidth < 100) if (Console.WindowWidth < 100)
Console.SetWindowSize(100, Console.WindowHeight); Console.SetWindowSize(100, Console.WindowHeight);
bool use_local_loc = false; bool maintainer_mode = false;
Console.OutputEncoding = System.Text.Encoding.UTF8; Console.OutputEncoding = System.Text.Encoding.UTF8;
Console.CancelKeyPress += delegate (object sender, ConsoleCancelEventArgs e) { Console.CancelKeyPress += delegate (object sender, ConsoleCancelEventArgs e) {
e.Cancel = true; e.Cancel = true;
@ -981,14 +981,6 @@ namespace pollock
}; };
Console.WriteLine($"{app_name} {version_str} - Poedit to rufus.loc conversion utility"); Console.WriteLine($"{app_name} {version_str} - Poedit to rufus.loc conversion utility");
Console.WriteLine(); Console.WriteLine();
foreach (var arg in args)
{
if (arg.Contains("l"))
use_local_loc = true;
}
if (AppDomain.CurrentDomain.FriendlyName.Contains('m'))
goto Maintainer_Mode;
string loc_url = "https://github.com/pbatard/rufus/raw/master/res/loc/rufus.loc"; string loc_url = "https://github.com/pbatard/rufus/raw/master/res/loc/rufus.loc";
string ver_url = "https://rufus.ie/Loc.ver"; string ver_url = "https://rufus.ie/Loc.ver";
@ -996,17 +988,48 @@ namespace pollock
string rufus_file = null; string rufus_file = null;
string download_url = null; string download_url = null;
string po_file = null; string po_file = null;
string loc_file = null;
string id = "", name = "";
int[] update_version = new int[2] { 0, 0 }; int[] update_version = new int[2] { 0, 0 };
var list = new List<string[]>(); var list = new List<string[]>();
int index = -1; int index = -1;
// Parse parameters
foreach (var arg in args)
{
if (arg.Contains("i"))
{
maintainer_mode = true;
goto Import;
}
else if (arg.Contains("l"))
{
loc_file = @"..\rufus.loc";
foreach (var line in File.ReadAllLines(loc_file))
{
if (line.StartsWith("l "))
{
var el = line.Split('\"');
id = el[1];
name = el[3].Split('(')[0].Trim();
}
else if (line.StartsWith("v "))
{
list.Add(new string[] { name, id, line.Substring(2) });
}
}
maintainer_mode = true;
goto Menu;
}
}
// Check for updates of this application // Check for updates of this application
Console.Write("Downloading latest application data... "); Console.Write("Downloading latest application data... ");
var ver = DownloadString(ver_url); var ver = DownloadString(ver_url);
if (ver == null) if (ver == null)
{ {
Console.WriteLine("ERROR: Could not access application data."); Console.WriteLine("ERROR: Could not access application data.");
goto Error; goto Exit;
} }
foreach (var line in ver.Split('\n')) foreach (var line in ver.Split('\n'))
{ {
@ -1030,7 +1053,7 @@ namespace pollock
if ((download_url == null) || (rufus_url == null) || (update_version[0] == 0)) if ((download_url == null) || (rufus_url == null) || (update_version[0] == 0))
{ {
Console.WriteLine("FAILED"); Console.WriteLine("FAILED");
goto Error; goto Exit;
} }
Console.WriteLine("DONE"); Console.WriteLine("DONE");
@ -1043,7 +1066,7 @@ namespace pollock
if (DownloadFile(download_url)) if (DownloadFile(download_url))
{ {
Console.WriteLine("Now re-launch this program using the latest version."); Console.WriteLine("Now re-launch this program using the latest version.");
goto Error; goto Exit;
} }
Console.WriteLine("Download failed."); Console.WriteLine("Download failed.");
} }
@ -1071,12 +1094,12 @@ namespace pollock
} }
} }
if (!use_local_loc) if (!maintainer_mode)
{ {
// Download the latest loc file // Download the latest loc file
Console.Write("Downloading the latest loc file... "); Console.Write("Downloading the latest loc file... ");
if (!DownloadFile(loc_url)) if (!DownloadFile(loc_url))
goto Error; goto Exit;
} }
else else
{ {
@ -1085,10 +1108,9 @@ namespace pollock
File.Copy(local_loc, "rufus.loc", true); File.Copy(local_loc, "rufus.loc", true);
} }
var loc_file = loc_url.Split('/').Last(); loc_file = loc_url.Split('/').Last();
// Convert to CRLF and get all the language ids // Convert to CRLF and get all the language ids
var lines = File.ReadAllLines(loc_file); var lines = File.ReadAllLines(loc_file);
string id = "", name = "";
using (var writer = new StreamWriter(loc_file, false, encoding)) using (var writer = new StreamWriter(loc_file, false, encoding))
{ {
foreach (var line in lines) foreach (var line in lines)
@ -1141,10 +1163,13 @@ Retry:
Language old_en_US = null; Language old_en_US = null;
if (list[index][2] == list[0][2]) if (list[index][2] == list[0][2])
{
if (!maintainer_mode)
{ {
Console.WriteLine("Note: This language is already at the most recent version!"); Console.WriteLine("Note: This language is already at the most recent version!");
if (!PromptForQuestion("Do you still want to edit it?")) if (!PromptForQuestion("Do you still want to edit it?"))
goto Error; goto Exit;
}
} }
else else
{ {
@ -1162,34 +1187,37 @@ Retry:
var url = "https://github.com/pbatard/rufus/releases/tag/v" + list[index][2]; var url = "https://github.com/pbatard/rufus/releases/tag/v" + list[index][2];
var str = DownloadString(url); var str = DownloadString(url);
if (str == null) if (str == null)
goto Error; goto Exit;
var sha = str.Substring(str.IndexOf("/pbatard/rufus/commit/") + 22, 40); var sha = str.Substring(str.IndexOf("/pbatard/rufus/commit/") + 22, 40);
// TODO: Remove this once everyone has upgraded past 3.2 // TODO: Remove this once everyone has upgraded past 3.2
string loc_dir = ((list[index][2][0] == '2') || ((list[index][2][0] == '3') && (list[index][2][2] == '0'))) ? "localization" : "loc"; string loc_dir = ((list[index][2][0] == '2') || ((list[index][2][0] == '3') && (list[index][2][2] == '0'))) ? "localization" : "loc";
url = "https://github.com/pbatard/rufus/raw/" + sha + "/res/" + loc_dir + "/rufus.loc"; url = "https://github.com/pbatard/rufus/raw/" + sha + "/res/" + loc_dir + "/rufus.loc";
if (!DownloadFile(url, old_loc_file)) if (!DownloadFile(url, old_loc_file))
goto Error; goto Exit;
} }
var old_langs = ParseLocFile(old_loc_file, "en-US"); var old_langs = ParseLocFile(old_loc_file, "en-US");
if ((old_langs == null) || (old_langs.Count != 1)) if ((old_langs == null) || (old_langs.Count != 1))
{ {
Console.WriteLine("Error: Unable to get en-US data from previous loc file."); Console.WriteLine("Error: Unable to get en-US data from previous loc file.");
goto Error; goto Exit;
} }
old_en_US = old_langs[0]; old_en_US = old_langs[0];
} }
if (File.Exists(po_file)) if (File.Exists(po_file) && !maintainer_mode)
{ {
if (!PromptForQuestion($"A '{po_file}' file already exists. Do you want to overwrite it? (If unsure, say 'y')")) if (!PromptForQuestion($"A '{po_file}' file already exists. Do you want to overwrite it? (If unsure, say 'y')"))
goto Error; goto Exit;
} }
if (CreatePoFiles(ParseLocFile(loc_file, list[index][1]), old_en_US) < 1) if (CreatePoFiles(ParseLocFile(loc_file, list[index][1]), old_en_US) < 1)
{ {
Console.WriteLine("Failed to create PO file"); Console.WriteLine("Failed to create PO file");
goto Error; goto Exit;
} }
if (maintainer_mode)
goto Exit;
// Watch for file modifications // Watch for file modifications
FileSystemWatcher watcher = new FileSystemWatcher(); FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = app_dir; watcher.Path = app_dir;
@ -1242,7 +1270,6 @@ Retry:
Console.WriteLine($"'{po_file}' file manually."); Console.WriteLine($"'{po_file}' file manually.");
} }
Exit:
WaitForKey("Now press any key to launch your e-mail client and exit this application..."); WaitForKey("Now press any key to launch your e-mail client and exit this application...");
if ((list.Count >= 2) && (index >= 0)) if ((list.Count >= 2) && (index >= 0))
@ -1254,11 +1281,7 @@ Exit:
} }
return; return;
Error: Import:
WaitForKey("Press any key to exit...");
return;
Maintainer_Mode:
string file_name; string file_name;
OpenFileDialog file_dialog = new OpenFileDialog(); OpenFileDialog file_dialog = new OpenFileDialog();
file_dialog.InitialDirectory = app_dir; file_dialog.InitialDirectory = app_dir;
@ -1267,6 +1290,9 @@ Maintainer_Mode:
file_name = file_dialog.FileName; file_name = file_dialog.FileName;
Console.WriteLine(file_name); Console.WriteLine(file_name);
UpdateLocFile(ParsePoFile(file_name), app_dir + @"..\"); UpdateLocFile(ParsePoFile(file_name), app_dir + @"..\");
Exit:
if (!maintainer_mode)
WaitForKey("Press any key to exit..."); WaitForKey("Press any key to exit...");
} }
} }

View file

@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDD_DIALOG DIALOGEX 12, 12, 232, 326 IDD_DIALOG DIALOGEX 12, 12, 232, 326
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_ACCEPTFILES EXSTYLE WS_EX_ACCEPTFILES
CAPTION "Rufus 3.2.1349" CAPTION "Rufus 3.2.1350"
FONT 9, "Segoe UI Symbol", 400, 0, 0x0 FONT 9, "Segoe UI Symbol", 400, 0, 0x0
BEGIN BEGIN
LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP
@ -392,8 +392,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 3,2,1349,0 FILEVERSION 3,2,1350,0
PRODUCTVERSION 3,2,1349,0 PRODUCTVERSION 3,2,1350,0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -411,13 +411,13 @@ BEGIN
VALUE "Comments", "https://akeo.ie" VALUE "Comments", "https://akeo.ie"
VALUE "CompanyName", "Akeo Consulting" VALUE "CompanyName", "Akeo Consulting"
VALUE "FileDescription", "Rufus" VALUE "FileDescription", "Rufus"
VALUE "FileVersion", "3.2.1349" VALUE "FileVersion", "3.2.1350"
VALUE "InternalName", "Rufus" VALUE "InternalName", "Rufus"
VALUE "LegalCopyright", "© 2011-2018 Pete Batard (GPL v3)" VALUE "LegalCopyright", "© 2011-2018 Pete Batard (GPL v3)"
VALUE "LegalTrademarks", "https://www.gnu.org/copyleft/gpl.html" VALUE "LegalTrademarks", "https://www.gnu.org/copyleft/gpl.html"
VALUE "OriginalFilename", "rufus-3.2.exe" VALUE "OriginalFilename", "rufus-3.2.exe"
VALUE "ProductName", "Rufus" VALUE "ProductName", "Rufus"
VALUE "ProductVersion", "3.2.1349" VALUE "ProductVersion", "3.2.1350"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"