Skip to main content

CLI tool for discovering and installing Linux rice profiles

Project description

RiceShare CLI

Discover and install Linux rice profiles with ease.

RiceShare is a production-grade CLI tool for discovering, installing, and managing Linux rice profiles (desktop environment configurations). Built with modern Python tooling, it provides a clean interface for browsing available profiles and safely installing them with automatic backups.

Features

  • Search profiles: Browse available rice profiles from the community index
  • Profile info: View detailed information about any profile
  • Safe installation: Install profiles with automatic backups and dry-run support
  • Rollback support: Easily restore previous configurations from backups
  • Distro detection: Automatically selects the right package manager and packages for your system
  • Production-ready: Full type hints, comprehensive tests, and CI/CD workflow

Installation

Install from source:

git clone https://github.com/AxonInnova/RiceShare.git
cd RiceShare
pip install -e .

Or install from PyPI (recomended):

pip install riceshare

Usage

Search for profiles

riceshare search

Displays all available profiles in a formatted table with ID, name, author, description, and supported distributions.

View profile details

riceshare info <profile-id>

Shows detailed information about a specific profile including description, author, supported distributions, and preview URL (if available).

Install a profile

riceshare install <profile-id> [--dry-run] [--yes]

Installs a profile:

  • --dry-run: Preview changes without applying them
  • --yes: Skip confirmation prompts

The tool automatically:

  • Detects your Linux distribution
  • Selects appropriate packages
  • Backs up affected files
  • Displays package installation commands for you to run manually
  • Creates a timestamped backup for easy rollback

Restore from backup

riceshare rollback [backup-id]

Restores files from a previous backup. Run without a backup ID to list all available backups.

Export profile as install script

riceshare export <profile-id> --output <filename>

Generates a standalone POSIX shell script for installing a profile on another machine:

riceshare export neon-i3 --output neon-i3-install.sh

Review the generated script:

cat neon-i3-install.sh

Run it to install:

sh ./neon-i3-install.sh

The script includes:

  • Automatic backup of existing files to ~/.riceshare/backups/
  • Package manager commands for your distro (apt/pacman/dnf)
  • File placement logic with atomic writes
  • Error handling with rollback info

Use --dry-run to preview without writing:

riceshare export neon-i3 --output neon-i3-install.sh --dry-run

Development

Setup

# Create virtual environment
python -m venv .venv
source .venv/bin/activate

# Install in editable mode with dev dependencies
pip install -e ".[dev]"

Testing

pytest -q
pytest --cov=riceshare           # with coverage

Code quality

ruff check riceshare tests       # linting
black riceshare tests            # formatting
mypy riceshare                   # type checking

Build

python -m build

Project Structure

  • riceshare/ — Main package
    • cli.py — Typer CLI application
    • github.py — GitHub integration for fetching profiles
    • installer.py — Installation logic and YAML validation
    • backup.py — Backup creation and rollback functionality
    • packages.py — Package manager integration
    • config.py — Configuration and constants
    • utils.py — HTTP, file, and error utilities
  • tests/ — Unit and integration tests
  • .github/workflows/ci.yaml — GitHub Actions CI pipeline

License

MIT License - see LICENSE for details.

Contributing

See CONTRIBUTING.md for guidelines.

Changelog

See CHANGELOG.md for release notes.

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

riceshare-0.1.2.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

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

riceshare-0.1.2-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file riceshare-0.1.2.tar.gz.

File metadata

  • Download URL: riceshare-0.1.2.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for riceshare-0.1.2.tar.gz
Algorithm Hash digest
SHA256 4f9b95a95c77ed7bb9e9a4a67eb27d352a3847b4164fc1e9e3f296a3f79d1b32
MD5 851d4503f3f424c22b56c27b7db4e622
BLAKE2b-256 1d1a25075154ca10c544258bf97072da40d71182eb7ccdbc557df13d550ed007

See more details on using hashes here.

File details

Details for the file riceshare-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: riceshare-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 16.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for riceshare-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8d4a435b726921faa23ec2066bcf8aec5966a0b40a8261f8b83134b6595b3f6d
MD5 a3a954f8b2703992281bedba1511594a
BLAKE2b-256 803b3348d4a48eeb958a51c739a7103551a9133da5a6807c4752c6b0d947d448

See more details on using hashes here.

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