minio / mc

Unix like utilities for object store
https://min.io/download
GNU Affero General Public License v3.0
2.88k stars 552 forks source link

Add string/json output string mc pipe #5065

Closed fennm closed 1 month ago

fennm commented 1 month ago

This commit adds a string message and json output to mc pipe. The implementation is heavily inspired by the one in mc cp, just adapted to the different semantics of pipe.

Community Contribution License

All community contributions in this pull request are licensed to the project maintainers under the terms of the Apache 2 license. By creating this pull request I represent that I have the right to license the contributions to the project maintainers under the Apache 2 license.

Description

The mc pipe command doesn't currently do anything with the --json global flag, and this PR implements that. Feel free to suggest any changes to make this more conformant with project style or other requirements.

Motivation and Context

Comparing the number of bytes copied with the number of bytes expected is do a simple end-to-end check that an upload went as expected.

How to test this PR?

Pass --json to mc pipe and observe the output:

$ cat /tmp/zero.tar.gz | mc pipe --json localhost/test/zero.tar.gz
{
 "status": "success",
 "target": "localhost/test/zero.tar.gz",
 "size": 197
}

It also adds a plain text message due to the requirements of printMsg:

$ cat /tmp/zero.tar.gz | mc pipe  localhost/test/zero.tar.gz
 0 B / ? ┃░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓┃197 bytes -> `localhost/test/zero.tar.gz`

Types of changes

Checklist:

harshavardhana commented 1 month ago

Looks great thanks for the contribution

fennm commented 1 month ago

Great, thank you!