1 [](https://scrutinizer-ci.com/g/dupgit/versions/?branch=master) 2 [](https://scrutinizer-ci.com/g/dupgit/versions/build-status/master) 3 [](https://travis-ci.org/dupgit/versions) 4 [](https://scrutinizer-ci.com/g/dupgit/versions/?branch=master) 5 6 # Description 7 8 Versions is an open source (GPL v3) software that checks releases and 9 versions of your favourite programs through RSS or Atom feeds and tells 10 you which one has been released since last check. 11 12 It can check projects from : 13 * github.com 14 * sourceforge.net 15 * freshcode.club 16 * pypi.python.org 17 * savanah.gnu.org 18 * www.freshports.org (FreeBSD packages) 19 * fossies.org 20 * repo.continuum.io 21 * sourcehut forge 22 * gitlab forge 23 24 Projects must be added to a YAML file (named by default 25 `~/.config/versions/versions.yaml`). One can use `--file=FILENAME` 26 option to specify an alternative YAML file. The structure of this 27 YAML file is explained below. 28 29 Versions uses and produces text files. Those files are cache files 30 written into `~/.local/versions` directory. `*.cache` are cache 31 files containing the project list and their associated version (the latest). 32 `*.feed` are information feed cache files containing on each line 33 the latest parsed post of the feed. 34 35 36 # YAML file structure 37 38 ``` 39 sitename: 40 url: "https://the.url/to/theglobalfeed" 41 type: list 42 projects: 43 - list 44 - of 45 - projects 46 47 othersitename: 48 url: "https://by.projects.site/{}.atom" 49 type: byproject 50 projects: 51 - list 52 - name: of 53 regex: '([\d.]+)' 54 entry: last checked 55 - projects 56 ``` 57 58 There is two types of sites : 59 60 * 'list': The site has one feed with all projects in it such as 61 freshcode.club or fossies.org 62 * 'byproject": The site gives access to one feed per project. 63 brackets '{}' represents the name of the project as found in 64 the 'project' list. Those projects can be listed directly or 65 can take options. In the later case you have to name the 66 project and then you can specify either a regex or an entry 67 type option: regex is used to determine version number and 68 entry is used to determine if versions has to print the latest 69 entry (default behavior) or all entries from the "last checked" 70 time. 71 72 A real life example file is provided: [versions/versions.yaml](versions/versions.yaml) 73 74 75 # Installation 76 77 Installation of versions is not mandatory and you can invoke it 78 directly from the command line provided you have already installed 79 its requirements. 80 81 ## Pypi 82 83 In pypi the project is named program_versions but is still invoked 84 by the command `versions` : 85 86 ``` 87 $ sudo pip install program_versions 88 $ versions -v 89 ``` 90 91 ## From source 92 93 ``` 94 $ git clone https://github.com/dupgit/versions.git 95 $ cd versions 96 $ sudo pip install -r requirements.txt 97 $ sudo python setup.py install 98 $ versions -v 99 ``` 100 101 Tip : One may want to test versions without messing its installation and 102 may use [miniconda](https://conda.io/miniconda.html) to do so. 103 104 105 # Usage 106 107 `./version.py` should be enough to bring you the list of updated 108 programs since last run. To verify each day one can use the following 109 command in a persistent terminal (tmux, screen…): 110 111 ``` 112 $ watch -n 86400 ./versions.py 113 ``` 114 115 * Option `-h` or `--help` will give you some help. 116 * Option `-v` or `--version` will tell you the version you have. 117 * Option `-l` or `--list-cache` prints the content of the local cache 118 (ie latest known versions). 119 * Option `-f FILENAME` or `--file FILENAME` ease usage of different 120 YAML configuration files. 121 * Option `-d` or `--debug` runs doctests and prints information about 122 what's going on in the program. 123 124 125 # Links of interest 126 127 * [https://release-monitoring.org/](https://release-monitoring.org/) 128 * [https://wiki.debian.org/debian/watch](https://wiki.debian.org/debian/watch) 129 * [http://semver.org/](http://semver.org/)