Flowscripter IO CLI is a command-line interface tool designed to manage file operations and data transfers across various protocols using a pluggable architecture. It works with provider plugins to interact with different storage systems, such as local files and cloud services.
Key Features:
Supports multiple protocols (e.g., file) through plugin-based architecture, enabling interaction with various data sources.
Uses dynamic-cli-framework for real-time argument prompting and validation, enhancing usability without compromising flexibility.
Available on macOS, Linux, and Windows. Install via Winget on Windows to streamline deployment and integration into automated workflows.
Includes commands like list (to enumerate files), get-properties (to retrieve file metadata), set-properties (to modify attributes), delete, copy, move, and hash (for checksum verification).
Allows users to add or remove provider plugins using built-in CLI commands, extending functionality without modifying the core application.
Target Audience and Benefits:
Ideal for developers, system administrators, and IT professionals who need reliable file management across diverse environments. Users benefit from a unified interface that simplifies data operations across different protocols, reducing complexity and improving efficiency. Whether automating tasks or managing complex workflows, Flowscripter IO CLI provides the tools to handle data transfer and manipulation with precision.
Available via Winget, this application is easy to deploy in enterprise settings, ensuring quick setup and integration into existing infrastructure.
You can download and extract the binary zip files from the
releases page.
Locations
Every command addresses data through a location argument: --source and
--dest for copy/move, and --location for the other commands. A
location has a protocol and one group of fields per installed protocol:
--location.protocol=file selects the protocol. The allowed values are
the protocols of the installed provider plugins.
--location.file.path=/data and the other fields of the selected protocol
are taken from that protocol's provider plugin, and are validated against
it.
For file (and other protocols with folders), a location with a
filename addresses one file, one with a pattern (a glob such as
*.txt) addresses the matching files in path, and one with neither
addresses the whole path folder.
flowscripter-io-cli --help lists the fields of every installed
protocol.
Commands
list --location [--recursive] [--regex] - list a folder, or the files
matching a pattern location, one JSON line per item
get-properties --location - print a file or folder's properties as JSON
set-properties --location [--last-modified] [--content-type] [--properties..] - set properties: last modified time and
content type apply to every protocol, and --properties holds one group
per protocol for its own settable properties (e.g.
--properties.file.mode=384)
delete --location - delete a file or folder
copy --source --dest [--payload-kind] - copy a file, a folder, or the
files matching a pattern, using a direct provider copy when possible, with
a progress bar for a single file. Prints the negotiated transfer path,
e.g. path: file/js -> file/js, direct
move --source --dest [--payload-kind] - move, with the same behaviour as
copy
hash --location [--algorithm] [--payload-kind] - hash a file by reading
its stream directly, outside the framework's transfer path. --algorithm
is one of sha1, sha256 (the default, using a native hasher), sha384,
sha512 or md5
Common behaviour:
--payload-kind is auto (the default, letting the registry choose),
js or native. An unavailable kind fails with the kinds that are
installed.
During list, copy, move or hash, the first Ctrl-C stops gracefully and
reports the result as stopped, and a second Ctrl-C cancels.
Operations a protocol does not support (e.g. list over https) fail with
a "not supported by protocol" error.
Any required argument omitted on the command line is prompted for
interactively, via
dynamic-cli-framework's
ArgumentPrompterService.
Provider Plugins
This package has no dependency on any provider plugin. Install one or more
through the CLI's own plugin management (provided by
dynamic-cli-framework's
plugin commands). They are discovered at startup through
dynamic-plugin-framework's
NpmPluginRepository, and several protocols, or several implementations of
one protocol, can be installed side by side: