id = "boto" name = "boto" homepage = "https://github.com/boto/boto" description = "A Python package that provides interfaces to Amazon Web Services." # boto is a library, but it installs command-line tools of its own; these are # from the `scripts` list in its setup.py. executables = ["s3put", "lss3", "sdbadmin", "elbadmin", "cfadmin", "cwutil"] [dotfiles] # https://boto.cloudhackers.com/en/latest/boto_config_tut.html ("Boto Config"): # boto reads, in order, /etc/boto.cfg for site-wide settings, then # ~/.aws/credentials, then ~/.boto for user-specific settings. Only the # user-level file is this entry's business — /etc/boto.cfg is system-wide, and # ~/.aws/credentials belongs to the `aws` entry. On Windows the tutorial says # to create the file anywhere and point $BOTO_CONFIG at it, so there is no # fixed Windows spelling to list. # # boto has been superseded by boto3, which reads ~/.aws/config instead; ~/.boto # is still the file gsutil and older code use. paths = ["~/.boto"] exclude = [] # Not a credential end to end: the same INI file carries the [Boto] section's # proxy, retry and certificate settings. Only the credential entries are # lifted out. secret = [] side_effect = false # "ca_certificates_file: Location of CA certificates or the keyword 'system'" # (same page) — an absolute path into this machine's disk when it is not the # keyword. Spelling anything but `system` is the user overriding the platform's # own bundle with one they were handed, so the value belongs to this device # rather than to its class, and is kept for a rebuild: backup. [[dotfiles.machine_lines]] file = "~/.boto" match = { prefix = ["ca_certificates_file"] } scope = "backup" # "The Credentials section is used to specify the AWS credentials used for all # boto requests" — aws_access_key_id, aws_secret_access_key, and # aws_security_token for a profile using temporary credentials. The file is # INI, so each is written as ` = ` on its own line, in # [Credentials] and in any [profile ] section. [[dotfiles.secret_paths]] file = "~/.boto" match = { prefix = ["aws_access_key_id", "aws_secret_access_key", "aws_security_token"] } [commands] format = 1 label = "Upload files to S3 (s3put)" description = "Upload files or directories to an S3 bucket with boto's s3put. Other boto tools, multipart upload and extra headers are not covered." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "help" kind = "help" url = "https://raw.githubusercontent.com/boto/boto/develop/bin/s3put" revision = "develop" evidence = """ s3put [-a/--access_key ] [-s/--secret_key ] -b/--bucket [-c/--callback ] [-d/--debug ] [-i/--ignore ] [-n/--no_op] [-p/--prefix ] [-k/--key_prefix ] [-q/--quiet] [-g/--grant grant] [-w/--no_overwrite] [-r/--reduced] [--header] [--region ] [--host ] path [path...] """ [[commands.field]] id = "paths" label = "Files or directories" type = "path" position = 0 multiple = true min = 1 path = { kind = "any", role = "input" } sources = ["help"] [[commands.field]] id = "bucket" label = "Bucket" type = "string" option = ["--bucket", "-b"] sources = ["help"] [[commands.field]] id = "prefix" label = "Strip path prefix" description = "A local path prefix removed when building the key name." type = "string" option = ["--prefix", "-p"] sources = ["help"] [[commands.field]] id = "key_prefix" label = "Key prefix" description = "Prefix added to every S3 key." type = "string" option = ["--key_prefix", "-k"] sources = ["help"] [[commands.field]] id = "grant" label = "Canned ACL" type = "enum" option = ["--grant", "-g"] choices = [{ value = "private", label = "private" }, { value = "public-read", label = "public-read" }, { value = "public-read-write", label = "public-read-write" }, { value = "authenticated-read", label = "authenticated-read" }] sources = ["help"] [[commands.field]] id = "region" label = "Region" type = "string" option = ["--region"] sources = ["help"] [[commands.field]] id = "host" label = "S3 host override" type = "string" option = ["--host"] sources = ["help"] [[commands.field]] id = "ignore" label = "Ignore directories" description = "Comma-separated directory names to skip." type = "string" option = ["--ignore", "-i"] sources = ["help"] [[commands.field]] id = "no_op" label = "Dry run" type = "boolean" option = ["--no_op", "-n"] sources = ["help"] [[commands.field]] id = "no_overwrite" label = "Keep existing keys" type = "boolean" option = ["--no_overwrite", "-w"] sources = ["help"] [[commands.field]] id = "reduced" label = "Reduced redundancy storage" type = "boolean" option = ["--reduced", "-r"] sources = ["help"] [[commands.field]] id = "quiet" label = "Quiet" type = "boolean" option = ["--quiet", "-q"] sources = ["help"] [[commands.task]] id = "upload" label = "Upload to a bucket" fields = ["paths", "bucket", "prefix", "key_prefix", "grant"] required = ["paths", "bucket"] [[commands.task]] id = "dry-run" label = "Preview an upload" set = { no_op = [true] } lock = ["no_op"] fields = ["paths", "bucket", "prefix", "key_prefix", "no_op"] required = ["paths", "bucket"] [[commands.group]] id = "basic" label = "Basic" fields = ["paths", "bucket", "prefix", "key_prefix", "grant", "no_op"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["region", "host", "ignore", "no_overwrite", "reduced", "quiet"]