Skip to content

Adding a new updater system - Part 2 #39

@o355

Description

@o355

The PyWeather updater system sucks at the moment, and I'm going to change this in 0.6.4 beta.

Right now, the PyWeather updater uses Git to update, which has been notoriously unreliable across a half a dozen releases. Git only works on some platforms, and I'm sick of the updater breaking on each release.

Beginning with 0.6.3 beta, the Git updater will be entirely disabled, and I feel as if coding in a new updater will extend 0.6.3 beta's release time out too far into December 2017. A few configuration options will get removed as well.

From 0.6.3 beta to 0.6.4 beta, the .zip method will be the only way of downloading PyWeather within itself.

The new updater will encompass a few new tricks that I still need to learn, and here's how things will generally work:

  • The updater will check for new updates, and show to the user if they'd like to download the .zip, or update within PyWeather. The manual downloading of the .zip file will still be available.
  • If a user decides to run the automatic updater, the .zip will be unzipped in the base directory of PyWeather, replacing all files.
  • With the updated configupdate.py file, the script will run, and PyWeather will exit. Progress messages will get displayed throughout the process.

With this, I need to learn these skills:

  • Unzipping a .zip file properly with Python 3

Part 2 involves adding the actual updater code itself into 0.6.4 beta.

Checklist:

  • Creating v2 of the API
  • Figuring out how to download .zip files with a real progress bar (no spinny wheel)
  • Figuring out how to properly extract .zip files
  • Making a base updater UI to allow the user to check for updates (no downloading yet) and change to a different branch
  • Making the real "meat" of the updater
  • Adapting configupdate.py to accept RC packages
  • Redoing the update checker on boot

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions