Compare commits
3 Commits
phase-3-gu
...
40a836afd8
| Author | SHA1 | Date | |
|---|---|---|---|
| 40a836afd8 | |||
| 15538fd68a | |||
| 08ebe0976c |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -41,3 +41,4 @@ Thumbs.db
|
||||
.env
|
||||
.env.*
|
||||
*.local
|
||||
.worktrees
|
||||
|
||||
25
Project-Description.json
Normal file
25
Project-Description.json
Normal 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
16
Project-Description.md
Normal 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.
|
||||
59
README.md
59
README.md
@@ -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
|
||||
|
||||
### 1. CLI Usage
|
||||
|
||||
Reference in New Issue
Block a user