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)
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