id = "onedrive-cli"
name = "OneDrive Client"
homepage = "https://github.com/abraunegg/onedrive"
description = "OneDrive Client for Linux."
executables = ["onedrive"]
platforms = ["linux"]
[dotfiles]
paths = ["[configHome]/onedrive/config"]
secret = ["[configHome]/onedrive/refresh_token"]
[commands]
format = 1
label = "Sync with OneDrive"
description = "Run a one-off synchronization or monitor mode, with the common sync filters. Authorization and one-shot file operations are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false }
[[commands.source]]
id = "man"
kind = "manual"
url = "https://manpages.debian.org/bookworm/onedrive/onedrive.1.en.html"
revision = "2.4.23-1"
evidence = '''
onedrive [OPTION] --synchronize
onedrive [OPTION] --monitor
--download-only
Replicate the OneDrive online state locally, by only downloading changes from OneDrive. Do not upload local changes to OneDrive.
--upload-only
Replicate the locally configured sync_dir state to OneDrive, by only uploading local changes to OneDrive. Do not download changes from OneDrive.
--dry-run
Perform a trial sync with no changes made. Can ONLY be used with --synchronize. Will be ignored for --monitor
--resync
Forget the last saved state, perform a full sync
--single-directory ARG
Specify a single local directory within the OneDrive root to sync.
--syncdir ARG
Set the directory used to sync the files that are synced
--skip-dot-files
Skip dot files and folders from syncing
--skip-symlinks
Skip syncing of symlinks
--confdir ARG
Set the directory used to store the configuration files
-v --verbose
Print more details, useful for debugging.
--monitor-interval ARG
The number of seconds by which each sync operation is undertaken when idle under monitor mode
--display-config
Display what options the client will use as currently configured - no sync will be performed.
--display-sync-status
Display the sync status of the client - no sync will be performed.
'''
[[commands.field]]
id = "synchronize"
label = "Synchronize once"
type = "boolean"
option = ["--synchronize"]
sources = ["man"]
[[commands.field]]
id = "monitor"
label = "Keep monitoring for changes"
type = "boolean"
option = ["--monitor"]
sources = ["man"]
[[commands.field]]
id = "dry_run"
label = "Dry run"
description = "Only with Synchronize once."
type = "boolean"
option = ["--dry-run"]
sources = ["man"]
[[commands.field]]
id = "download_only"
label = "Download only"
type = "boolean"
option = ["--download-only"]
sources = ["man"]
[[commands.field]]
id = "upload_only"
label = "Upload only"
type = "boolean"
option = ["--upload-only"]
sources = ["man"]
[[commands.field]]
id = "resync"
label = "Full resync"
description = "Forgets the last saved state and performs a full sync."
type = "boolean"
option = ["--resync"]
sources = ["man"]
[[commands.field]]
id = "single_directory"
label = "Only this directory"
type = "string"
option = ["--single-directory"]
sources = ["man"]
[[commands.field]]
id = "syncdir"
label = "Local sync directory"
type = "path"
option = ["--syncdir"]
path = { kind = "directory", role = "input", must_exist = false }
sources = ["man"]
[[commands.field]]
id = "confdir"
label = "Configuration directory"
type = "path"
option = ["--confdir"]
path = { kind = "directory", role = "input", must_exist = false }
sources = ["man"]
[[commands.field]]
id = "skip_dot_files"
label = "Skip dot files"
type = "boolean"
option = ["--skip-dot-files"]
sources = ["man"]
[[commands.field]]
id = "skip_symlinks"
label = "Skip symlinks"
type = "boolean"
option = ["--skip-symlinks"]
sources = ["man"]
[[commands.field]]
id = "monitor_interval"
label = "Monitor interval (seconds)"
type = "integer"
option = ["--monitor-interval"]
sources = ["man"]
[[commands.field]]
id = "verbose"
label = "Verbosity"
type = "count"
option = ["--verbose", "-v"]
sources = ["man"]
[[commands.field]]
id = "display_config"
label = "Show configuration"
type = "boolean"
option = ["--display-config"]
sources = ["man"]
[[commands.field]]
id = "display_sync_status"
label = "Show sync status"
type = "boolean"
option = ["--display-sync-status"]
sources = ["man"]
[[commands.task]]
id = "sync"
label = "Sync now"
fields = ["synchronize", "verbose", "single_directory", "download_only", "upload_only"]
required = ["synchronize"]
set = { synchronize = [true] }
[[commands.task]]
id = "preview"
label = "Preview a sync"
fields = ["synchronize", "dry_run", "verbose"]
required = ["synchronize", "dry_run"]
set = { synchronize = [true], dry_run = [true] }
[[commands.task]]
id = "monitor"
label = "Monitor continuously"
fields = ["monitor", "monitor_interval", "verbose"]
required = ["monitor"]
set = { monitor = [true] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["synchronize", "monitor", "dry_run", "download_only", "upload_only", "single_directory", "verbose"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["resync", "syncdir", "confdir", "skip_dot_files", "skip_symlinks", "monitor_interval", "display_config", "display_sync_status"]