mirror of
https://github.com/abraunegg/onedrive
synced 2024-05-21 07:06:40 +02:00
clean up, move help function
This commit is contained in:
parent
a71b9bf789
commit
d49a598f4b
85
src/config.d
85
src/config.d
|
@ -1,5 +1,6 @@
|
|||
import core.stdc.stdlib: EXIT_SUCCESS, EXIT_FAILURE, exit;
|
||||
import std.file, std.string, std.regex, std.stdio, std.process, std.algorithm.searching, std.getopt, std.conv;
|
||||
import std.algorithm.sorting: sort;
|
||||
import selective;
|
||||
static import log;
|
||||
|
||||
|
@ -127,20 +128,20 @@ final class Config
|
|||
}
|
||||
|
||||
|
||||
Option[] update_from_args(string[] args)
|
||||
void update_from_args(string[] args)
|
||||
{
|
||||
|
||||
// Add additional options that are NOT configurable via config file
|
||||
stringValues["create-directory"] = "";
|
||||
stringValues["destination-directory"] = "";
|
||||
stringValues["get-o365-drive-id"] = "";
|
||||
stringValues["remove-directory"] = "";
|
||||
stringValues["single-directory"] = "";
|
||||
stringValues["source-directory"] = "";
|
||||
boolValues["display-config"] = false;
|
||||
boolValues["display-sync-status"] = false;
|
||||
stringValues["create_directory"] = "";
|
||||
stringValues["destination_directory"] = "";
|
||||
stringValues["get_o365_drive_id"] = "";
|
||||
stringValues["remove_directory"] = "";
|
||||
stringValues["single_directory"] = "";
|
||||
stringValues["source_directory"] = "";
|
||||
boolValues["display_config"] = false;
|
||||
boolValues["display_sync_status"] = false;
|
||||
boolValues["resync"] = false;
|
||||
boolValues["print-token"] = false;
|
||||
boolValues["print_token"] = false;
|
||||
boolValues["logout"] = false;
|
||||
boolValues["monitor"] = false;
|
||||
boolValues["synchronize"] = false;
|
||||
|
@ -148,11 +149,12 @@ final class Config
|
|||
|
||||
// Application Startup option validation
|
||||
try {
|
||||
string tmpStr;
|
||||
bool tmpBol;
|
||||
auto opt = getopt(
|
||||
args,
|
||||
std.getopt.config.bundling,
|
||||
std.getopt.config.caseSensitive,
|
||||
std.getopt.config.passThrough,
|
||||
"check-for-nomount",
|
||||
"Check for the presence of .nosync in the syncdir root. If found, do not perform sync.",
|
||||
&boolValues["check_for_nomount"],
|
||||
|
@ -209,7 +211,7 @@ final class Config
|
|||
&boolValues["display_sync_status"],
|
||||
"get-O365-drive-id",
|
||||
"Query and return the Office 365 Drive ID for a given Office 365 SharePoint Shared Library",
|
||||
&boolValues["get_o365_drive_id"],
|
||||
&stringValues["get_o365_drive_id"],
|
||||
"logout",
|
||||
"Logout the current user",
|
||||
&boolValues["logout"],
|
||||
|
@ -233,9 +235,20 @@ final class Config
|
|||
&stringValues["source_directory"],
|
||||
"synchronize",
|
||||
"Perform a synchronization",
|
||||
&boolValues["synchronize"]
|
||||
&boolValues["synchronize"],
|
||||
// duplicated from main.d to get full help output!
|
||||
"confdir",
|
||||
"Set the directory used to store the configuration files",
|
||||
&tmpStr,
|
||||
"version",
|
||||
"Print the version and exit",
|
||||
&tmpBol
|
||||
|
||||
);
|
||||
return opt.options;
|
||||
if (opt.helpWanted) {
|
||||
outputLongHelp(opt.options);
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
} catch (GetOptException e) {
|
||||
log.error(e.msg);
|
||||
log.error("Try 'onedrive -h' for more information");
|
||||
|
@ -246,7 +259,6 @@ final class Config
|
|||
log.error("Try 'onedrive -h' for more information");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
@ -337,9 +349,52 @@ final class Config
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void outputLongHelp(Option[] opt)
|
||||
{
|
||||
auto argsNeedingOptions = [
|
||||
"--confdir",
|
||||
"--create-directory",
|
||||
"--destination-directory",
|
||||
"--get-O365-drive-id",
|
||||
"--remove-directory",
|
||||
"--single-directory",
|
||||
"--source-directory",
|
||||
"--syncdir" ];
|
||||
writeln(`OneDrive - a client for OneDrive Cloud Services
|
||||
|
||||
Usage:
|
||||
onedrive [options] --synchronize
|
||||
Do a one time synchronization
|
||||
onedrive [options] --monitor
|
||||
Monitor filesystem and sync regularly
|
||||
onedrive [options] --display-config
|
||||
Display the currently used configuration
|
||||
onedrive [options] --display-sync-status
|
||||
Query OneDrive service and report on pending changes
|
||||
onedrive -h | --help
|
||||
Show this help screen
|
||||
onedrive --version
|
||||
Show version
|
||||
|
||||
Options:
|
||||
`);
|
||||
foreach (it; opt.sort!("a.optLong < b.optLong")) {
|
||||
if (it.optLong == "--help") continue;
|
||||
writefln(" %s%s%s%s\n %s",
|
||||
it.optLong,
|
||||
it.optShort == "" ? "" : " " ~ it.optShort,
|
||||
argsNeedingOptions.canFind(it.optLong) ? " ARG" : "",
|
||||
it.required ? " (required)" : "", it.help);
|
||||
}
|
||||
// write help last
|
||||
writefln(" --help -h\n This help information.");
|
||||
}
|
||||
|
||||
unittest
|
||||
{
|
||||
auto cfg = new Config("");
|
||||
cfg.load("config");
|
||||
assert(cfg.getValueString("sync_dir") == "~/OneDrive");
|
||||
}
|
||||
|
||||
|
|
49
src/main.d
49
src/main.d
|
@ -1,7 +1,6 @@
|
|||
import core.stdc.stdlib: EXIT_SUCCESS, EXIT_FAILURE, exit;
|
||||
import core.memory, core.time, core.thread;
|
||||
import std.getopt, std.file, std.path, std.process, std.stdio, std.conv, std.algorithm.searching, std.string;
|
||||
import std.algorithm.sorting: sort;
|
||||
import config, itemdb, monitor, onedrive, selective, sync, util;
|
||||
import std.net.curl: CurlException;
|
||||
import core.stdc.signal;
|
||||
|
@ -62,7 +61,7 @@ int main(string[] args)
|
|||
return EXIT_FAILURE;
|
||||
}
|
||||
// update configuration from command line args
|
||||
savedOpts ~= cfg.update_from_args(args);
|
||||
cfg.update_from_args(args);
|
||||
|
||||
|
||||
// Are we able to reach the OneDrive Service
|
||||
|
@ -203,7 +202,7 @@ int main(string[] args)
|
|||
|
||||
// create-directory, remove-directory, source-directory, destination-directory
|
||||
// are activities that dont perform a sync no error message for these items either
|
||||
if (((cfg.getValueString("create_directory") != "") || (cfg.getValueString("remove_directory") != "")) || ((cfg.getValueString("source_directory") != "") && (cfg.getValueString("destination_directory") != "")) || (cfg.getValueString("get-o365-drive-id") != "") || (cfg.getValueBool("display_sync_status") == true)) {
|
||||
if (((cfg.getValueString("create_directory") != "") || (cfg.getValueString("remove_directory") != "")) || ((cfg.getValueString("source_directory") != "") && (cfg.getValueString("destination_directory") != "")) || (cfg.getValueString("get_o365_drive_id") != "") || (cfg.getValueBool("display_sync_status") == true)) {
|
||||
performSyncOK = true;
|
||||
}
|
||||
|
||||
|
@ -294,8 +293,8 @@ int main(string[] args)
|
|||
}
|
||||
|
||||
// Are we obtaining the Office 365 Drive ID for a given Office 365 SharePoint Shared Library?
|
||||
if (cfg.getValueString("get-o365-drive-id") != ""){
|
||||
sync.querySiteCollectionForDriveID(cfg.getValueString("get-o365-drive-id"));
|
||||
if (cfg.getValueString("get_o365_drive_id") != ""){
|
||||
sync.querySiteCollectionForDriveID(cfg.getValueString("get_o365_drive_id"));
|
||||
}
|
||||
|
||||
// Are we displaying the sync status of the client?
|
||||
|
@ -553,44 +552,4 @@ extern(C) nothrow @nogc @system void exitHandler(int value) {
|
|||
} catch(Exception e) {}
|
||||
exit(0);
|
||||
}
|
||||
void outputLongHelp(Option[] opt)
|
||||
{
|
||||
auto argsNeedingOptions = [
|
||||
"--confdir",
|
||||
"--create-directory",
|
||||
"--destination-directory",
|
||||
"--get-O365-drive-id",
|
||||
"--remove-directory",
|
||||
"--single-directory",
|
||||
"--source-directory",
|
||||
"--syncdir" ];
|
||||
writeln(`OneDrive - a client for OneDrive Cloud Services
|
||||
|
||||
Usage:
|
||||
onedrive [options] --synchronize
|
||||
Do a one time synchronization
|
||||
onedrive [options] --monitor
|
||||
Monitor filesystem and sync regularly
|
||||
onedrive [options] --display-config
|
||||
Display the currently used configuration
|
||||
onedrive [options] --display-sync-status
|
||||
Query OneDrive service and report on pending changes
|
||||
onedrive -h | --help
|
||||
Show this help screen
|
||||
onedrive --version
|
||||
Show version
|
||||
|
||||
Options:
|
||||
`);
|
||||
foreach (it; opt.sort!("a.optLong < b.optLong")) {
|
||||
if (it.optLong == "--help") continue;
|
||||
writefln(" %s%s%s%s\n %s",
|
||||
it.optLong,
|
||||
it.optShort == "" ? "" : " " ~ it.optShort,
|
||||
argsNeedingOptions.canFind(it.optLong) ? " ARG" : "",
|
||||
it.required ? " (required)" : "", it.help);
|
||||
}
|
||||
// write help last
|
||||
writefln(" --help -h\n This help information.");
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue