Compare commits

..

3 Commits

4 changed files with 101 additions and 0 deletions

1
.gitignore vendored
View File

@@ -41,3 +41,4 @@ Thumbs.db
.env .env
.env.* .env.*
*.local *.local
.worktrees

25
Project-Description.json Normal file
View File

@@ -0,0 +1,25 @@
{
"nextcloud-upload-tool": {
"id": "nextcloud-upload-tool",
"title": "Nextcloud Upload Tool",
"description": "Cross-platform CLI and desktop GUI for uploading files to Nextcloud and generating direct-download or public share links.",
"docId": "Nextcloud-Upload-Tool",
"image": {
"url": "PROMPT: Clean product screenshot-style illustration of a cross-platform Nextcloud file upload tool, showing a modern desktop upload queue with progress bars, a terminal window with a share URL, subtle Nextcloud-inspired blue accents, crisp technical portfolio asset, no readable text, wide landscape composition",
"alt": "Nextcloud Upload Tool desktop GUI and CLI",
"prompt": "Clean product screenshot-style illustration of a cross-platform Nextcloud file upload tool, showing a modern desktop upload queue with progress bars, a terminal window with a share URL, subtle Nextcloud-inspired blue accents, crisp technical portfolio asset, no readable text, wide landscape composition",
"width": 1600,
"height": 900,
"backgroundClassName": "bg-surface"
},
"url": "/projects/nextcloud-upload-tool",
"tags": ["featured", "open-source"],
"source": {
"type": "github",
"url": "https://github.com/majinnaibu/nextcloud-upload-tool"
},
"feedback": {
"url": "https://github.com/majinnaibu/nextcloud-upload-tool/issues"
}
}
}

16
Project-Description.md Normal file
View File

@@ -0,0 +1,16 @@
# Nextcloud Upload Tool
Nextcloud Upload Tool (`nut`) is a fast, cross-platform command-line tool and desktop GUI for uploading files to Nextcloud and generating direct-download or public share links.
- Built as a Rust workspace with a shared `nextcloud_client` library, CLI, and Tauri desktop GUI.
- Streams uploads over WebDAV with progress reporting, standard-input support, `pv` integration, and Unix pipeline support.
- Uses the Nextcloud OCS Sharing API to create public share links and direct-download URLs, including optional password protection.
- Stores credentials in native operating-system keychains, with an encrypted file fallback.
- Supports multiple Nextcloud accounts and self-hosted instances across the CLI and GUI.
- Provides drag-and-drop uploads, per-file and total progress, retry handling, and browser-based Login Flow v2 in the GUI.
- Includes JSON, TSV, URL-only, and direct-URL-only output modes for automation, plus headless SSH and CI authentication.
- Generates shell completions for Bash, Zsh, Fish, PowerShell, and Elvish.
Repository: https://github.com/majinnaibu/nextcloud-upload-tool
The project is released under the MIT License.

View File

@@ -30,6 +30,65 @@ A fast, cross-platform CLI tool and desktop GUI application for uploading files
--- ---
## Build and Install
### Prerequisites
- Rust toolchain
- Node.js 20+ and npm
- macOS Xcode Command Line Tools: `xcode-select --install`
### Build the CLI
Build the optimized release binary:
```bash
cargo build --release -p nut
```
The binary is created at `target/release/nut`. To create a distributable archive, run:
```bash
./scripts/build-cli.sh
```
The archive is written to `dist-packages/`.
To install the CLI locally on macOS or Linux:
```bash
mkdir -p ~/.local/bin
install -m 755 target/release/nut ~/.local/bin/nut
```
Make sure `~/.local/bin` is included in your `PATH`.
### Build the GUI
Build the frontend and package the native desktop application:
```bash
cd gui
npm install
npm run tauri build
```
Alternatively, run the packaging helper from the repository root:
```bash
./scripts/build-gui.sh
```
Installers and application bundles are created in `gui/src-tauri/target/release/bundle/`. On macOS, open the generated `.dmg` and drag **Nextcloud Upload Tool.app** into `/Applications`:
```bash
open gui/src-tauri/target/release/bundle/dmg/*.dmg
```
See the [Installation Guide](docs/installation.md) for platform-specific prerequisites, installers, and source-build details.
---
## Quick Start ## Quick Start
### 1. CLI Usage ### 1. CLI Usage