Files
Kenneth Skovhede 910c56b3c4 Reworked the use of scopes.
Instead of requesting all scopes up front, each sub-section of the backup/restore will request the permissions that are relevant for the operation.

The effect is that it is not required to grant all permissions to get a backup running. If permissions are failing, that part of the backup will generate warnings for items that are excluded.
2026-02-15 22:03:57 +01:00

60 lines
4.3 KiB
C#

// Copyright (c) 2026 Duplicati Inc. All rights reserved.
using Duplicati.Library.Localization.Short;
namespace Duplicati.Proprietary.GoogleWorkspace;
internal static class Strings
{
internal static class Options
{
public static string GoogleClientIdShort => LC.L("The Google Client ID");
public static string GoogleClientIdLong => LC.L("The Client ID for the Google App.");
public static string GoogleClientSecretShort => LC.L("The Google Client Secret");
public static string GoogleClientSecretLong => LC.L("The Client Secret for the Google App.");
public static string GoogleRefreshTokenShort => LC.L("The Google Refresh Token");
public static string GoogleRefreshTokenLong => LC.L("The Refresh Token for the Google App.");
public static string GoogleServiceAccountJsonShort => LC.L("The Google Service Account JSON");
public static string GoogleServiceAccountJsonLong => LC.L("The Google Service Account JSON content.");
public static string GoogleServiceAccountFileShort => LC.L("The Google Service Account File");
public static string GoogleServiceAccountFileLong => LC.L("The path to the Google Service Account JSON file.");
public static string GoogleAdminEmailShort => LC.L("The Google Admin Email");
public static string GoogleAdminEmailLong => LC.L("The email of the Google Admin user to impersonate.");
public static string GoogleIncludedRootTypesShort => LC.L("Included Root Types");
public static string GoogleIncludedRootTypesLong => LC.L("Comma-separated list of root types to include (e.g. Users, Groups, SharedDrives).");
public static string GoogleIncludedUserTypesShort => LC.L("Included User Types");
public static string GoogleIncludedUserTypesLong => LC.L("Comma-separated list of user types to include (e.g. Gmail, Drive, Calendar).");
public static string GoogleIgnoreExistingOptionShort => LC.L("Ignore existing items");
public static string GoogleIgnoreExistingOptionLong => LC.L("If set, existing items in the destination will not be overwritten.");
public static string GoogleAvoidCalendarAclOptionShort => LC.L("Avoid reading calendar ACLs");
public static string GoogleAvoidCalendarAclOptionLong => LC.L("Calendar ACLs require write permissions to be able to read them. If the account does not have write permissions, this option can be used to avoid reading them.");
}
internal static class Common
{
public static string DisplayName => LC.L("Google Workspace");
public static string Description => LC.L("Backup and restore Google Workspace data.");
public static string WebModuleDisplayName => LC.L("Google Workspace Web Module");
public static string WebModuleDescription => LC.L("Web module for Google Workspace.");
public static string WebModuleOperationShort => LC.L("Operation");
public static string WebModuleOperationLong => LC.L("The operation to perform.");
public static string WebModuleURLShort => LC.L("URL");
public static string WebModuleURLLong => LC.L("The URL to connect to.");
public static string WebModulePathShort => LC.L("Path");
public static string WebModulePathLong => LC.L("The path to list.");
}
internal static class CalendarAclSourceEntry
{
public static string ForbiddenAccessError(string optionname, string scopename) => LC.L($"Access to calendar ACLs was denied. Use the --{optionname} option to avoid reading them or grant the scope {scopename}.");
}
public static string MetadataStorageNotEnabled(string optionname) => LC.L(
$"Storing metadata content in the database must be enabled to use the Google Workspace source provider. Use the option: --{optionname}");
public static string RestoreTargetMissingOverwriteOption(string originalOptionName, string alternateOptionName) => LC.L($"The Google Workspace restore target must have the --{originalOptionName} option set to true. Use the provider specific option --{alternateOptionName} to avoid overwriting existing items.");
public static string InvalidRestoreTargetType(string? type) => LC.L($"Invalid restore target type: {type}");
public static string RestoreTargetNotFound(string path) => LC.L($"Restore target path not found: {path}");
}