Giter Club home page Giter Club logo

dcspkg's Introduction

dcspkg

GitHub Workflow Status (with branch)

dcspkg is a simple package manager, designed for used on DCS systems, or any system where packages cannot be installed as root. It fetches packages containing precompiled binaries from a server, and then installs them under your home directory.

Documentation

This repo is a cargo workspace containing three crates:

  • dcspkg, the CLI package manager
  • dcspkg_server, the package server
  • dcspkg_create, a helper tool for creating .dcspkg archives

See the tech team wiki page for full documentation: https://techteam.uwcs.co.uk/en/apps/dcspkg

Contributing

Contributions are welcome and encouraged. Check out the issues for things that we've noted need working on.

dcspkg's People

Contributors

joeyh021 avatar ericthelemur avatar telf-dev avatar jasoncubed132 avatar

Stargazers

Moody Liu avatar  avatar  avatar Tomás Fernandes avatar

Watchers

 avatar  avatar  avatar

dcspkg's Issues

Handle adding new versions better

Ideally, when a user installs a new version of a package they already have, then it should remove all traces of the old one (symlinks, registry, folders). This is currently not handled at all.

Progress Bars

A progress bar when downloading would be nice, as would one when unpacking. The former can be accomplished using indicatif and the streams API of reqwest. Not sure about the latter with tar.

Nicer UI/UX

The CLI user interface is a bit shit. Could do with printing some nicer progress messages (instead of just logs), maybe a download progress bar, maybe even with some colour.

Streaming/lazy reading of JSON from registry file

Currently, when reading the local package registry, the entire file is loaded and parsed as a Vec<Package> before being operated (searched/printed). This won't scale, and could do with being re-written to use iterators or streams or something that will not load the entire file at once.

Make seperate package 'name' from title

The full title of a game should be seperate from the name of the game the package contains. ie, the game Baba is You should be seperate from the package name baba

Compressions Speed & Ratios

I left all the compression stuff as basic and default as possible to start with. A more detailed look at the compression speed and ratios would be nice, to maybe speed up downloads

Add `~/.dcspkg/bin` directory to path

The directrory that is meant to be on path is not added to path at any point. On first run, the CLI should read PATH, check if it is there, and modify .bashrc/.zshrc if it is not.

Timeouts on larger downloads

Using the blocking client for reqwest means that if a large file takes too long to download the request will just timeout. We need to transition to using the async client and tracking download progress. Would fix #5 also

Unit/integration tests

This has been completely hacked together with limited testing. Some automated tests to run in CI to detect regressions would be very helpful

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.