DriveSoftwarePublisher | Software Publisher using Google Drive | Developement update #3

in #utopian-io6 years ago (edited)

Repository:

https://github.com/adsau59/DriveSoftwarePublisher
Commit1
Commit2
Commit3
Commit4
Commit5

What is DriveSoftwarePublisher?

DriveSoftwarePublisher (DriveSP) is a software publishing software that uses Google Drive.

Ever wanted to send your software your client but you can't afford a to hire a server? with DriveSP you can use google drive to version your software.

Objectives

  • Help programmers and software developers who have very low budget publish their software easily.
  • Help open source developers to publish their software without any investment at all.
  • Quick way to publish software.

Demo video

Release

You can download an alpha release from here, put the SP.exe inside environment variables file path for ease of use.

Installation Instruction

Windows:

  • Extract
  • Add the extracted binaries into environment path

Linux:

  • Extract
  • run, gedit ~/.profile
  • add this in the end of the file
    export PATH=$PATH:<path_to_publisher>
  • save and reboot

Technology Stack

DriveSP is made using

  • C#, .NET Core
  • Drive REST API
  • Docopt (Command Line API)
  • Newtonsoft Json (JSON framework for .NET)

New Features

Upgraded dotnet version to 2.1.5 (thread)

Why?

  • Using dotnet v2.0 the program was not working properly in linux os, so the dotnet version was upgraded

How?

  • Changed dotnet core version from 2.0 to 2.1 in all the .csproject files

Added os option in getupdater command

Why?

  • As DriveSP now supports linux, a way to get updater link for different operating system was needed, so even if you are using DriveSP in windows you can actually get the link for the updater for linux

How?

  • Added (--win|--linux) option in getupdater command in Publisher.
  • The option is passed into Publisher.GetUpdate method as a parameter which uses it to select the correct folder to copy the files from.

Added file name parsing using regex

Why?

  • After adding support for multiple os, updater zip file had to be named differently.
  • matching the updater file with simple == wasnt enough now as the strings got more complicated hence now regex is used instead.

How?

  • In DriveUtils.GetVersions, now it uses regex instead of equating strings

Added support for large files

Why?

  • when uploading large files, the program used to get crashed as it didn't support it.
  • By adding multipart upload now large files can be uploaded.

How?

  • Changed the DriveUtils.UploadFileToCloud method, to use multipart upload instead of simple upload.
  • Changed the DriveUtils.DownloadFIle method to use multipart download instead of simple download.

Added progression bar for feedback (thanks to DanielSWolf's ProgressionBar)
Screenshot (4).png

Why?

  • Uploading and Downloading large files can take alot of time to complete.
  • Which makes the program look unresponsive.
  • Hence to fix it, an ascii progression bar was added during file upload and download.

How?

  • Added ProgressionBar Script which takes in double and displays a progression bar
  • During download and upload, an event is created which is called which updates the progression bar

Added feedback for Publisher getupdater and Updater install

Why?

  • Lack of feedback messages made the command feel unresponsive.

How?

  • Wrote appropriate messages in console using Console.WriteLine

Roadmap

Development plans of DriveSP can be viewed on the Trello Board.

Phase 1: (COMPLETED)

  • Create DriveSP Prototype with basic Publisher and Updater commands

Phase 2: (COMPLETED)

  • Port to .NET Core
  • Add Features:
    • pushnow commnd in Publisher, increase version and push with one command
    • drop command in Publisher, delete a version from the drive
    • showversions command, show versions on the drive
    • target install version with either version code or version name
    • checkupdate command, check if new version is available

Phase 3: (COMPLETED)

  • Add Features:
    • Multi OS Support (Linux and Windows)
    • Support for large files

Phase 4:

  • Error reporting system, report errors using google drive.
  • Add Feature:
    • Add ability for 3rd party application to check updated and perform update automatically.

How to contribute?

You can contribute this project by,

  • Using the the software and creating issue when any bug is encountered.
  • Helping me in the development by bug squashing or developing new features. (If you want to do this, contact me so that we can collaborate.)
  • Let me know if you have any good feature ideas.

Before creating issues for bugs, or suggesting new feature ideas, check out the Trello Board if it is already been found/suggested.

Contact

If you have any problems or you want to contact me for feature ideas or want to collaborate in development you can contact me on DefineX Community discord server

GitHub Account

https://github.com/adsau59

Sort:  

Thank you for your contribution. It is nice to see continuous development since last time.

I would suggest you branch before you do the development and then create a PR and approve for it - it might seem bringing extra work but it is totally worth it - as you are grouping your commits in a PR and makes your master branch history much cleaner.

It is nice to see you start to use var but obviously there are inconsistency. And I would expect to see the unit tests as the project is growing....

Overall, Nice work!

Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post, click here.


Need help? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]

Thanks for the review,

to create PR I would need to fork my own repo, but thats not possible

Thank you for your review, @justyy! Keep up the good work!

Congratulations @adam-saudagar! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You received more than 250 upvotes. Your next target is to reach 500 upvotes.

Click here to view your Board of Honor
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

SteemitBoard notifications improved

Support SteemitBoard's project! Vote for its witness and get one more award!

Hi @adam-saudagar!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your post is eligible for our upvote, thanks to our collaboration with @utopian-io!
Feel free to join our @steem-ua Discord server