Skip to main content

Cross-platform command-line client for dShare — type-to-share files and text between devices.

Project description

dshare-cli

A cross-platform command-line client for dShare — the same 10-second "public share" flow as typing divya / moti on the web UI, from a terminal on Linux, macOS, or Windows.

It talks to your dShare server's existing public endpoints (/upload/, /download/, /api/share/clear/) — no server changes required, and it doesn't touch private/login-based sharing.

Install

Requires Python 3.9+ (any OS). pipx is recommended since it keeps the CLI's dependencies isolated:

pipx install dshare-cli

Or with plain pip:

pip install dshare-cli

Until the first release is published, install straight from GitHub instead:

pipx install "git+https://github.com/motiedivya/dshare.git#subdirectory=cli"

For local development (from a clone of this repo):

cd cli
pip install -e .

All of these work identically on Windows (PowerShell/cmd), macOS, and Linux — the CLI has no shell scripts and no OS-specific setup steps.

Releasing (maintainers)

Publishing to PyPI is fully automated via GitHub Actions + PyPI Trusted Publishing (OIDC) — no API tokens stored anywhere. The version number is derived from the git tag itself (via hatch-vcs), so there's nothing to bump by hand. To ship a release:

git tag cli-v0.1.0
git push origin cli-v0.1.0

That triggers .github/workflows/publish-cli.yml, which builds the package and publishes dshare-cli==0.1.0 to PyPI. See that workflow's comments / the main repo README for the one-time PyPI Trusted Publisher setup this depends on.

Setup

Point the CLI at your dShare server once:

dshare config https://your-dshare-host.example.com

This is saved to a per-OS config file (~/.config/dshare/config.json on Linux, ~/Library/Application Support/dshare/config.json on macOS, %APPDATA%\dshare\config.json on Windows). You can override it per-command with --server, or via the DSHARE_SERVER environment variable — handy for CI or scripting.

Usage

Upload a file (same as typing divya and picking a file):

dshare send report.pdf

Upload text (same as /paste):

dshare send --text "some text to move between devices"
echo "some text" | dshare send      # piping works too

Download the latest shared file or text (same as typing moti):

dshare receive
  • If the slot holds a file, it's saved to the current directory (or -o/--output).
  • If the slot holds text, it's printed to stdout — so dshare receive > out.txt or dshare receive | pbcopy / | clip works.
  • If stdout isn't a terminal, file bytes stream straight to stdout too (like curl).

Clear the slot (same as /clear):

dshare clear

Check what server you're pointed at and whether it's reachable:

dshare status

divya and moti also work as aliases for send/receive, matching the web UI's keywords:

dshare divya report.pdf
dshare moti

Notes

  • This CLI only uses the public lane (the same one anonymous visitors to the web UI get) — it does not log in or touch private per-user slots.
  • Self-signed/local server? Pass --insecure to skip TLS verification.
  • Exit codes: 0 success, 1 error, 2 the slot was empty on receive.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dshare_cli-0.1.1.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dshare_cli-0.1.1-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file dshare_cli-0.1.1.tar.gz.

File metadata

  • Download URL: dshare_cli-0.1.1.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for dshare_cli-0.1.1.tar.gz
Algorithm Hash digest
SHA256 010ab25b2371abc95091d6616b8888e624d731a9ed8c00d2903bf1c7dc84243a
MD5 cac69a01b1dea802ebfe9ed1d90dafa0
BLAKE2b-256 47ed1e777b08a70011c75c28bb400c8824da643e2bad05c9960410f2335a85dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for dshare_cli-0.1.1.tar.gz:

Publisher: publish-cli.yml on motiedivya/dshare

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dshare_cli-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: dshare_cli-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for dshare_cli-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 eafa1095791db72d8ed639ef44dc09294d6285d4e4a2cb6756c03cbf47219056
MD5 98421d62ab8df9e24a3c4a4cef6abd28
BLAKE2b-256 ac563334135e0ccece615efaecdef8067dcfa0421def160344d0a419fb631b71

See more details on using hashes here.

Provenance

The following attestation bundles were made for dshare_cli-0.1.1-py3-none-any.whl:

Publisher: publish-cli.yml on motiedivya/dshare

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page