README.md in upm-0.0.0 vs README.md in upm-0.1.0
- old
+ new
@@ -1,44 +1,51 @@
# upm: Universal Package Manager
+## Concept:
+
+Wraps all known package managers to provide a consistent and pretty interface, along with advanced features not supported by all tools, such as rollback and pinning.
+
+All tools will give you modern, pretty, colourful, piped-to-less output, and you'll only have to remember one consistent set of commands. It'll also prompt you with a text UI whenever faced with ambiguity.
+
## Usage:
```
upm <command> <pkg>
up <command> <pkg>
u <command> <pkg>
```
-## Commands
+## Commands:
-* list
-* search
-* install
-* sync/update
-* upgrade
-* log - show history of package installs
-* pin
-* rollback
-* packagers - detect package systems, and enable/disable them
-* sources/mirrors - select remote repositories and mirrors
-* verfiy - verifies integrity of installed packages
-* remove
-* clean
-* build
-* monitor - ad-hoc package manager for custom installations (like instmon)
-* keys - keyrings and package authentication
-* default - configurable default action (defaults to update only the OS)
+* `install`
+* `remove`
+* `build` - compile a package from source and install it
+* `search` - using the fastest known API or service
+* `list` - show all packages, or the contents of a specific package
+* `info` - show metadata about a package
+* `sync`/`update` - retrieve the latest package list or manifest
+* `upgrade` - install new versions of all packages
+* `pin` - pinning a package means it won't be automatically upgraded
+* `rollback` - revert to an earlier version of a package (including its dependencies)
+* `log` - show history of package installs
+* `packagers` - detect installed package managers, and pick which ones upm should wrap
+* `sources`/`mirrors` - select remote repositories and mirrors
+* `verfiy` - verifies the integrity of installed files
+* `clean` - clear out the local package cache
+* `monitor` - ad-hoc package manager for custom installations (like instmon)
+* `keys` - keyrings and package authentication
+* `default` - configure the action to take when no arguments are passed to "upm" (defaults to "os:update")
-### All searches and package names can be prefixed with their namespace:
+### Any command that takes a package name can be prefixed with the package tool's namespace:
```
-ruby:<pkg> (or r:)
-deb:<pkg> (or d:)
-rpm:<pkg>
-python:<pkg>
-py:<pkg>
-pip:<pkg>
+os:<pkg> -- automatically select the package manager for the current unix distribution
+deb:<pkg> (or d: u:)
+rpm:<pkg> (or yum: y:)
+bsd:<pkg> (or b:)
+ruby:<pkg> (or r: gem:)
+python:<pkg>,<pkg> (or py: p: pip:)
```
### ...or suffixed with its file extension:
```
@@ -46,27 +53,54 @@
<pkg>.deb
<pkg>.rpm
<pkg>.pip
```
-## Supported packagers:
+## Package tools to wrap:
-* OpenBSD: pkg_add
-* FreeBSD: pkg
-* RedHat/Fedora/Centos: yum/rpm
-* Debian/Ubuntu: apt-get/dpkg (+ curated list of ppa's)
-* Windows: apt-cyg/nuget/"winget" (new package manager)
-* Arch: pacman/aur/abs (svn mirror)
-* Mac OSX: brew/fink
-* Python: pip/easy_install
-* Ruby: rubygems
-* Haskell: cabal
-* Perl: cpan
-* go: go-get
-* Java: ?
+* Arch: `pacman`/`aur`/`abs` (svn mirror)
+* Debian/Ubuntu: `apt-get`/`dpkg` (+ curated list of ppa's)
+* RedHat/Fedora/Centos: `yum`/`rpm`
+* Mac OSX: `brew`/`fink`/`ports`
+* FreeBSD: `pkg`/`ports`
+* OpenBSD: `pkg_add`/`ports`
+* NetBSD: `pkgin`/`ports`
+* SmartOS/Illumos: `pkgin`
+* Windows: `apt-cyg`/`mingw-get`/`nuget`/`Windows Update`/(as-yet-not-created package manager, "winget")
+* Wine: `winetricks`
+* Ruby: `rubygems`
+* Python: `pip`/`easy_install`
+* Javascript: `npm`
+* Clojure: `leiningen`
+* Java: `gradle`
+* Erlang: `rebar`
+* Scala: `sbt`
+* Rust: `cargo`
+* R: `cran`
+* Lua: `rocks`
+* Julia: `Pkg`
+* Haskell: `cabal`
+* Perl: `cpan`
+* go: `go-get`
+...[and many more!](https://en.wikipedia.org/wiki/List_of_software_package_management_systems)
+
+## What it might look like:
+
+Info:
+
+![acs](https://raw.githubusercontent.com/epitron/scripts/master/screenshots/acs.png)
+
+Log:
+
+![paclog](https://raw.githubusercontent.com/epitron/scripts/master/screenshots/paclog.png)
+
+Rollback:
+
+![pacman-rollback](https://raw.githubusercontent.com/epitron/scripts/master/screenshots/pacman-rollback.png)
+
## TODOs:
-* Build using the pretty text-mode UI that passenger-install uses
+* Use the pretty text-mode UI that passenger-install uses
* Context-dependent operation
- * if you're in a ruby project, prioritize the 'ruby' namespace
+ * eg: if you're in a ruby project's directory, set the 'ruby' namespace to highest priority