Skip to content
/ updoot Public

🎺 Unify the update process for your entire system

License

Notifications You must be signed in to change notification settings

b0o/updoot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

updoot status: alpha version license: MIT

updoot v0.0.1
https://github.com/b0o/updoot

Unify the update process for your entire system.

Usage:
  updoot [options] [--] [provider-spec ...]

  Where [provider-spec] is one of:
    ++provider   inclusive: enable this provider in addition to the default providers
     +provider

      provider   exclusive: enable this provider, disabling default providers

    --provider   ignore this provider from the default providers
     -provider   (after --, see below)

  A lone -- indicates the end of the options, thereafter allowing the use of a single leading - to
  ignore providers as described above.

Options:
  -h       show brief usage information
  -H       show detailed usage information
  -V       show program version
  -s       enable strict mode
  -v       enable verbose output

Screencast:
  https://asciinema.org/a/191154

Environment Variables:
  Global:
    $UPDOOT_PROVIDERS_ENABLED (string array)
      The providers to be enabled by default.

    $UPDOOT_LOG_MAXAGE (int) [30]
      Maximum age of log files in days

    $UPDOOT_STRICT (bool, 0 or 1) [1]
      If true, a failure in any part of any update will end the entire update process.
      If false, certain tolerable errors will be treated as warnings.

    $UPDOOT_VERBOSE (bool, 0 or 1) [0]
      If true, output additional status information to stderr.

    $UPDOOT_CACHE_DIR (directory) [$HOME/.cache/updoot]
      Directory to use for log/runtime/temp files.

Dependencies:
  Global:
     - moment-cli (https://www.npmjs.com/package/moment-cli)
     - termcolors (https://gist.github.com/08007d77853fcea5ca669e6800844c06)
     - git (https://git-scm.com)

Available Providers: (* indicates provider is enabled by default)
  * yarn
    Fast, reliable, and secure dependency management for Node.js
    Dependencies:
      - yarn (arch-repo: yarn) (https://yarnpkg.com)

  * archlinux
    Updates Arch Linux & performs routine maintenence like updating mirrorlist & managing .pac{new,save} files
    Dependencies:
      Primary: (at least one; ordered by precedence)
        - yay (aur: yay) (https://github.com/Jguer/yay)
        - paru (aur: paru) (https://github.com/Morganamilo/paru)
      Required:
        - pacman
        - sudo (arch-repo: sudo) (https://www.sudo.ws)
      Optional:
        - archlinux-news
          Automatically check for unread RSS items from the archlinux.org news feed
          Dependencies:
            - curl (arch-repo: curl) (https://curl.haxx.se)
            - xmlstarlet (arch-repo: xmlstarlet) (https://xmlstar.sourceforge.net)
        - reflector (arch-repo: reflector) (https://xyne.archlinux.ca/projects/reflector)
          Finds the fastest mirrors and updates mirrorlist for pacman.
        - pacdiff (arch-repo: pacman-contrib) (https://git.archlinux.org/pacman-contrib.git/about)
          A simple program to merge or remove pacnew/pacsave files.

    Options:
      General:
      :h   display usage information
      :a   enable all tasks (default)

      Enable tasks exclusively:
      :n   archlinux-news
      :y   yay
      :u   paru
      :p   pacman
      :m   archlinux-mirrors
      :d   pacdiff

      Exclude tasks:
      :N   archlinux-news
      :Y   yay
      :U   paru
      :P   pacman
      :M   archlinux-mirrors
      :D   pacdiff

    Environment Variables:
      $UPDOOT_ARCHLINUX_MIRROR_COUNTRY (country name) [United States]
        Country to select mirrors from.
        Must match the format used in /etc/pacman.d/mirrorlist
      $UPDOOT_ARCHLINUX_PREFERRED_HELPER ("yay", "paru", "none", or "") [paru]

  * cabal
    A system for building and packaging Haskell libraries and programs
    Dependencies:
      - cabal-install (arch-repo: cabal-install) (https://github.com/haskell/cabal/blob/master/cabal-install/README.md)

  * nvim
    The Neovim text editor
    Dependencies:
      - nvim (arch-repo: neovim) (https://neovim.io)

    Note:
      Expects your neovim configuration to define the following functions:
        - PluginCleanHeadless()
        - PluginUpdateHeadless()
        - PluginInstallHeadless()

    Options:
      General:
      :h   display usage information
      :a   enable all tasks

      Enable tasks inclusively:
      :c   clean
      :i   install

      Enable tasks exclusively:
      :C   clean
      :u   update
      :I   install

      Exclude tasks:
      :U   update

  * pip
    A package manager for the Python programming language
    Dependencies:
      Primary:
        - pip (arch-repo: python-pip) (https://pip.pypa.io)
      Optional:
        - pipx (https://github.com/pipxproject/pipx)

  - dummy_user

  * nix
    A purely functional package manager
    Dependencies:
      Required:
        - nix (aur: nix) (https://nixos.org/nix)
        - sudo [if root is needed to manage nix] (arch-repo: sudo) (https://www.sudo.ws)
      Optional:
        - home-manager (https://github.com/rycee/home-manager)

  * asdf
    Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more
    Dependencies:
      - asdf (aur: asdf-vm) (https://github.com/asdf-vm/asdf)

  * gem
    A package manager for the Ruby programming language
    Dependencies:
      - gem (arch-repo: rubygems) (https://rubygems.org/)

  - cpan
    A repository of software modules written in the Perl programming language
    Dependencies:
      - cpan (arch-repo: perl) (https://www.perl.org)

  * tpm
    Tmux Plugin Manager
    Dependencies:
      - tmux (arch-repo: tmux) (https://github.com/tmux/tmux)
      - tpm (https://github.com/tmux-plugins/tpm)

    Environment Variables:
      $UPDOOT_TPM_PATH [$XDG_CONFIG_HOME/tmux/plugins//tpm]
      Path to the tpm plugin's directory
      If not set, the tpm provider will try to find your tpm directory.

  * opam
    A package manager for the OCaml programming language
    Dependencies:
      - opam (arch-repo: opam) (https://opam.ocaml.org/)

  * npm
    A package manager for Node.js / JavaScript
    Dependencies:
      - npm (arch-repo: npm) (https://npmjs.com)

  * zsh
    A very advanced and programmable command interpreter (shell) for UNIX
    Dependencies:
      Primary: (at least one)
        - oh-my-zsh (https://github.com/ohmyzsh/ohmyzsh)
        and/or
        - zinit (https://github.com/zdharma/zinit)
      Required:
        - zsh (arch-repo: zsh) (https://zsh.org)

  * gh
    GitHub CLI extensions.
    Dependencies:
      - gh (arch-repo: github-cli) (https://github.com/cli/cli)

  - go
    A package manager for the Go programming language
    Dependencies:
      Primary:
        - go (arch-repo: go) (https://golang.org/)
      Optional:
        - gobin (https://github.com/myitcv/gobin)
          The gobin command installs/runs main packages
          Required for path@version packages, as described in UPDOOT_GO_GOPACKAGES_PATH

    Environment Variables:
      $UPDOOT_GO_GOPACKAGES_PATH (directory) [$HOME/.gopackages]
        Path to a Bash script file exporting the following variables:

        - GO_BIN_PKGS (array) [required]
          Array items consist of a Go package path, optionally followed by an @, optionally followed by a version.
          A package followed by an @ with no version implies the latest version.
          A package not followed by an @ will be fetched with go get rather than gobin

        - GOBIN (path) [optional]
          See https://golang.org/cmd/go/#hdr-Environment_variables
          If unset,

        - GO_UPDATE_BEHAVIOR (string) [default: replace]
          One of the following values:

          - purge: All executables in GOBIN will be removed and new executables
                   will be moved in. This has the effect of only keeping
                   executables from packages that appear in GO_BIN_PKGS after an
                   update, so any executables from manually installed packages or
                   packages that are removed from the GO_BIN_PKGS array will be
                   removed.

          - replace: New executables will replace old ones in GOBIN

  * rust
    A multi-paradigm system programming language
    Dependencies:
      Primary: (at least one)
        - rustup (arch-repo: rustup) (https://rustup.rs/) (recommended)
          Rust toolchain installer
          Includes: cargo, rustup
        or
        - rust (arch-repo: rust) (https://www.rust-lang.org/)
          Rust toolchain
          Includes: cargo
      cargo crates:
        - cargo-update (https://github.com/nabijaczleweli/cargo-update)
          A cargo subcommand for checking and applying updates to installed executables


(c) 2019-2022 Maddison Hellstrom <https://github.com/b0o>

MIT License (https://mit-license.org)