Giter Site home page Giter Site logo

topgrade's Introduction

Topgrade

Travis AppVeyor GitHub release Crates.io AUR homebrew

Alt Text

Keeping your system up to date mostly involves invoking more than a single package manager. This usually results in big shell one-liners saved in your shell history. Topgrade tries to solve this problem by detecting which tools you use and run their appropriate package managers.

Supported Platforms

Topgrade should probably work on whichever platform it can be build. The real question is whether Topgrade knows that platform and can utilize its unique features, such as the operating system's package manager. Topgrade is tested on and knows the following platforms:

  • Linux
    • Arch based
    • Red Hat based
    • Debian based
    • Clear Linux
    • Gentoo
    • NixOS
    • openSUSE
    • Void
  • DragonFly BSD
  • FreeBSD
  • macOS
  • Windows

Installation

Arch Linux users can use the AUR package.

On NixOS, use the topgrade package in nixpkgs:

nix-env -iA topgrade

macOS users can install topgrade via Homebrew.

Other systems users can either use cargo install or use the compiled binaries from the release page. The compiled binaries contain a self-upgrading feature.

Topgrade isn't guaranteed to work on Rust versions older than the latest stable release. If you intend to install Topgrade using Cargo then you should either install Rust using rustup or use a distribution which ships the latest version of Rust, such as Arch Linux.

Upgrading Topgrade

The precompiled binaries supplied in the Github releases page are compiled with a self upgrade feature. Topgrade will try to upgrade itself before attempting anything else and will respawn itself when an update is downloaded. If you choose to install Topgrade in this method it is recommended that you place the binary in some place which is writable by your user account, such as ~/.local/bin.

If you prefer to have Topgrade installed in system-wide manner then it's recommended to either install it using the OS package manager or cargo install. Topgrade will not have the self upgrade feature but it will keep itself up to date by calling the operating system's package manager.

Usage

Just run topgrade. It will run the following steps:

  • Try to self-upgrade if compiled with this feature. Topgrade will respawn itself if it was upgraded.
  • Linux: Run the system package manager:
    • Arch based: Run yay or fall back to pacman
    • Redhat based: Run yum upgrade (or dnf if present)
    • Debian based: Run apt update && apt dist-upgrade
    • Clear Linux: Run swupd update
    • Gentoo: Run layman -s ALL && emerge --sync -q && eix-update && emerge -uDNa world
    • openSUSE: Run zypper refresh && zypper dist-upgrade
    • Void: Run xbps-install -Su
  • Linux: Run etc-update:
  • DragonFly BSD: Upgrade and audit packages
  • FreeBSD: Upgrade and audit packages
  • Unix: Run brew update && brew upgrade. This should handle both Homebrew and Linuxbrew
  • Unix: Run nix upgrade-nix && nix --upgrade.
  • Unix: Run Pearl pearl update.
  • Windows: Run Topgrade inside WSL.
  • Windows: Upgrade Powershell modules
  • Windows: Upgrade all Chocolatey packages
  • Windows: Upgrade all Scoop packages
  • Check if the following paths are tracked by Git. If so, pull them:
    • ~/.emacs.d (Should work whether you use Spacemacs or a custom configuration)
    • ~/.zshrc
    • ~/.tmux
    • ~/.config/fish
    • ~/.config/nvim
    • ~/.vim
    • ~/.config/openbox
    • ~/.config/bspwm
    • ~/.config/i3
    • ~/.config/sway
    • Powershell Profile
    • Microsoft Terminal configuration
    • Custom defined paths
  • Unix: Run zr update
  • Unix: Run zplug update
  • Unix: Run oh-my-zsh update
  • Unix: Run antigen update
  • Unix: Run fisher
  • Unix: Upgrade tmux plugins with TPM. Note: Do not use the -b flag in your configuration as suggested by the TPM readme.
  • Update Rustup by running rustup update. This will also attempt to run rustup self update when Rustup is installed inside the home directory.
  • Run Cargo install-update
  • Upgrade Emacs packages (You'll get a better output if you have Paradox installed)
  • Upgrade Go packages
  • Upgrade OCaml packages
  • Upgrade vcpkg globally installed packages
  • Upgrade myrepos managed sourcecode repositories
  • Upgrade Python packages installed using pipx
  • Upgrade R globally installed packages
  • Upgrade stack
  • Upgrade Vim/Neovim packages. Works with the following plugin frameworks:
  • Node
    • Run yarn global update if yarn is installed.
    • Run npm update -g if NPM is installed and npm root -g is a path inside your home directory.
  • Run composer global update if Composer's home directory is inside the home directory of the user. Run valet install after.
  • Upgrade Atom packages
  • Run gem upgrade --user-install if ~/.gem exists
  • Linux: Update Flatpak packages
  • Linux: Update snap packages
  • Linux: Run fwupdmgr to show firmware upgrade. (View only. No upgrades will actually be performed)
  • Linux: Run rpi-update to update Raspberry Pi Firmware
  • Linux: Run pihole updater
  • Run custom defined commands
  • Final stage
    • Linux: Run needrestart
    • Windows: Run Windows Update (You'll have to install PSWindowsUpdate)
    • macOS: Upgrade App Store applications
    • FreeBSD: Run freebsd-upgrade

Customization

See config.example.toml for an example configuration file.

Configuration path

The configuration should be placed in the following paths depending by the operating system:

  • macOS - ~/Library/Preferences/topgrade.toml
  • Windows - %APPDATA%/topgrade.toml
  • Other Unix systems - ~/.config/topgrade.toml

Remote execution

You can specify a key called remote_topgrades in the configuration file. This key should contain a list of hostnames that have topgrade installed on them. Topgrade will execute Topgrades on these remote hosts.

topgrade's People

Contributors

ayalash avatar bors[bot] avatar br1ght0ne avatar byron avatar christopherjmedlin avatar claui avatar davemachado avatar derphilipp avatar drrlvn avatar ericmarkmartin avatar fredmorcos avatar fsquillace avatar hugoh avatar idanski avatar igor-petruk avatar jake-shadle avatar jasikpark avatar jcgruenhage avatar jedahan avatar jorgebucaran avatar jrgarcia avatar keruspe avatar kmcopper avatar l1a avatar ncrazed avatar r-darwish avatar severinkaderli avatar smcavoy avatar witti avatar woohgit avatar

Stargazers

 avatar

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.