2013-06-24 20:20:05 +00:00
|
|
|
# dupeGuru
|
2013-06-23 01:43:24 +00:00
|
|
|
|
2016-06-06 21:00:57 +00:00
|
|
|
[dupeGuru][dupeguru] is a cross-platform (Linux and OS X) GUI tool to find duplicate files in
|
2013-12-01 16:26:30 +00:00
|
|
|
a system. It's written mostly in Python 3 and has the peculiarity of using
|
|
|
|
[multiple GUI toolkits][cross-toolkit], all using the same core Python code. On OS X, the UI layer
|
2016-05-27 23:28:19 +00:00
|
|
|
is written in Objective-C and uses Cocoa. On Linux, it's written in Python and uses Qt5.
|
2013-12-01 16:26:30 +00:00
|
|
|
|
2016-06-06 21:00:57 +00:00
|
|
|
## Current status: People wanted
|
2015-04-12 19:31:01 +00:00
|
|
|
|
|
|
|
dupeGuru has currently only one maintainer, me. This is a dangerous situation that needs to be
|
|
|
|
corrected.
|
|
|
|
|
|
|
|
The goal is to eventually have another active maintainer, but before we can get there, the project
|
|
|
|
needs more contributors. It is very much lacking on that side right now.
|
|
|
|
|
|
|
|
Whatever your skills, if you are remotely interestested in being a contributor, I'm interested in
|
2015-04-12 19:34:29 +00:00
|
|
|
mentoring you. If that's the case, please refer to [the open ticket on the subject][contrib-issue]
|
2015-04-12 19:31:01 +00:00
|
|
|
and let's get started.
|
2013-12-01 16:26:30 +00:00
|
|
|
|
2016-06-06 21:00:57 +00:00
|
|
|
### Slowed development
|
2015-07-03 23:41:10 +00:00
|
|
|
|
|
|
|
Until I manage to find contributors, I'm slowing the development pace of dupeGuru. I'm not much
|
|
|
|
interested in maintaining it alone, I personally have no use for this app (it's been a *loooong*,
|
|
|
|
time since I had dupe problems :) )
|
|
|
|
|
|
|
|
I don't want to let it die, however, so I will still do normal maintainership, that is, issue
|
|
|
|
triaging, code review, critical bugfixes, releases management.
|
|
|
|
|
|
|
|
But anything non-critical, I'm not going to implement it myself because I see every issue as a
|
|
|
|
contribution opportunity.
|
|
|
|
|
2016-06-06 21:00:57 +00:00
|
|
|
### Windows maintainer wanted
|
2015-12-25 01:50:33 +00:00
|
|
|
|
|
|
|
As [described on my website][nowindows], v3.9.x/6.8.x/2.10.x series of dupeGuru are the last ones
|
|
|
|
to support Windows unless someone steps up to maintain it. If you're a Windows developer and are
|
|
|
|
interested in taking this task, [don't hesitate to let me know][contrib-issue].
|
|
|
|
|
2016-06-06 21:00:57 +00:00
|
|
|
### OS X maintainer wanted
|
2015-12-25 01:50:33 +00:00
|
|
|
|
|
|
|
My Mac Mini is already a couple of years old and is likely to be my last Apple purchase. When it
|
|
|
|
dies, I will be unable maintain the OS X version of moneyGuru. I've already stopped paying for the
|
|
|
|
Mac Developer membership so I can't sign the apps anymore (in the "official way" I mean. The
|
|
|
|
download is still PGP signed) If you're a Mac developer and are interested in taking this task,
|
|
|
|
[don't hesitate to let me know][contrib-issue].
|
|
|
|
|
2016-06-06 21:00:57 +00:00
|
|
|
## Contents of this folder
|
2013-12-01 16:26:30 +00:00
|
|
|
|
2015-04-12 19:31:01 +00:00
|
|
|
This folder contains the source for dupeGuru. Its documentation is in `help`, but is also
|
2013-12-01 16:26:30 +00:00
|
|
|
[available online][documentation] in its built form. Here's how this source tree is organised:
|
2013-06-23 01:43:24 +00:00
|
|
|
|
|
|
|
* core: Contains the core logic code for dupeGuru. It's Python code.
|
|
|
|
* cocoa: UI code for the Cocoa toolkit. It's Objective-C code.
|
|
|
|
* qt: UI code for the Qt toolkit. It's written in Python and uses PyQt.
|
|
|
|
* images: Images used by the different UI codebases.
|
2014-04-19 21:48:48 +00:00
|
|
|
* pkg: Skeleton files required to create different packages
|
2013-06-23 01:43:24 +00:00
|
|
|
* help: Help document, written for Sphinx.
|
2013-06-24 20:20:05 +00:00
|
|
|
* locale: .po files for localisation.
|
2013-06-23 01:43:24 +00:00
|
|
|
|
|
|
|
There are also other sub-folder that comes from external repositories and are part of this repo as
|
2016-05-26 01:07:30 +00:00
|
|
|
git submodules:
|
2013-06-23 01:43:24 +00:00
|
|
|
|
2016-07-01 19:36:15 +00:00
|
|
|
* Sparkle: An auto-update library for the OS X version.
|
2013-06-23 01:43:24 +00:00
|
|
|
* hscommon: A collection of helpers used across HS applications.
|
|
|
|
* cocoalib: A collection of helpers used across Cocoa UI codebases of HS applications.
|
|
|
|
* qtlib: A collection of helpers used across Qt UI codebases of HS applications.
|
|
|
|
|
2016-06-06 21:00:57 +00:00
|
|
|
## How to build dupeGuru from source
|
2013-06-23 01:43:24 +00:00
|
|
|
|
2016-08-16 02:38:47 +00:00
|
|
|
### make
|
|
|
|
|
|
|
|
If you're on linux, you can build the ap for local development with `make`:
|
|
|
|
|
|
|
|
$ make
|
|
|
|
$ make run
|
|
|
|
|
|
|
|
The `Makefile` is a recent addition, however. You might have to fallback to the legacy build
|
|
|
|
scripts.
|
|
|
|
|
|
|
|
### Legacy build
|
|
|
|
|
|
|
|
If you're on OS X or that if the `make` method didn't work, you can build dupeGuru with the
|
|
|
|
legacy scripts.
|
|
|
|
|
2016-06-06 21:00:57 +00:00
|
|
|
There's a bootstrap script that will make building very easy. There might be some things that you
|
|
|
|
need to install manually on your system, but the bootstrap script will tell you when what you need
|
|
|
|
to install. You can run the bootstrap with:
|
2013-08-04 19:57:39 +00:00
|
|
|
|
2016-08-16 02:38:47 +00:00
|
|
|
$ ./bootstrap.sh
|
2013-08-04 19:57:39 +00:00
|
|
|
|
2016-05-27 23:28:19 +00:00
|
|
|
and follow instructions from the script.
|
2013-08-04 19:57:39 +00:00
|
|
|
|
2016-06-06 21:00:57 +00:00
|
|
|
### Prerequisites installation
|
2013-06-23 01:43:24 +00:00
|
|
|
|
2013-08-04 19:57:39 +00:00
|
|
|
Prerequisites are installed through `pip`. However, some of them are not "pip installable" and have
|
|
|
|
to be installed manually.
|
2013-06-23 01:43:24 +00:00
|
|
|
|
2016-05-27 23:28:19 +00:00
|
|
|
* All systems: [Python 3.4+][python]
|
2016-07-01 19:36:15 +00:00
|
|
|
* Mac OS X: OS X 10.10+ with XCode command line tools.
|
2016-06-06 21:00:57 +00:00
|
|
|
* Linux: PyQt5
|
2013-06-23 01:43:24 +00:00
|
|
|
|
2014-04-19 16:17:26 +00:00
|
|
|
On Ubuntu (14.04+), the apt-get command to install all pre-requisites is:
|
2013-06-23 01:43:24 +00:00
|
|
|
|
2016-05-27 23:28:19 +00:00
|
|
|
$ apt-get install python3-dev python3-pyqt5 pyqt5-dev-tools python3-venv
|
2013-06-23 01:43:24 +00:00
|
|
|
|
2015-10-28 01:33:41 +00:00
|
|
|
### OS X and pyenv
|
|
|
|
|
|
|
|
[pyenv][pyenv] is a popular way to manage multiple python versions. However, be aware that dupeGuru
|
|
|
|
will not compile with a pyenv's python unless it's been built with `--enable-framework`. You can do
|
|
|
|
this with:
|
|
|
|
|
|
|
|
$ env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.4.3
|
|
|
|
|
2016-06-06 21:00:57 +00:00
|
|
|
### Setting up the virtual environment
|
2013-06-23 01:43:24 +00:00
|
|
|
|
2016-05-27 23:28:19 +00:00
|
|
|
*This is done automatically by the bootstrap script. This is a reference in case you need to do it
|
|
|
|
manually.*
|
|
|
|
|
2013-12-07 22:23:18 +00:00
|
|
|
Use Python's built-in `pyvenv` to create a virtual environment in which we're going to install our.
|
2016-05-27 23:28:19 +00:00
|
|
|
Python-related dependencies. In that environment, we then install our requirements with pip.
|
|
|
|
|
|
|
|
For Linux (`--system-site-packages` is to be able to import PyQt):
|
2013-06-23 01:43:24 +00:00
|
|
|
|
2013-12-07 22:23:18 +00:00
|
|
|
$ pyvenv --system-site-packages env
|
2013-06-23 01:43:24 +00:00
|
|
|
$ source env/bin/activate
|
2016-05-27 23:28:19 +00:00
|
|
|
$ pip install -r requirements.txt
|
2013-06-23 01:43:24 +00:00
|
|
|
|
2016-05-27 23:28:19 +00:00
|
|
|
For OS X:
|
2013-06-23 01:43:24 +00:00
|
|
|
|
2016-05-27 23:28:19 +00:00
|
|
|
$ pyvenv env
|
|
|
|
$ source env/bin/activate
|
|
|
|
$ pip install -r requirements-osx.txt
|
2013-06-23 01:43:24 +00:00
|
|
|
|
2016-06-06 21:00:57 +00:00
|
|
|
### Actual building and running
|
2013-06-23 01:43:24 +00:00
|
|
|
|
|
|
|
With your virtualenv activated, you can build and run dupeGuru with these commands:
|
|
|
|
|
|
|
|
$ python build.py
|
|
|
|
$ python run.py
|
|
|
|
|
|
|
|
You can also package dupeGuru into an installable package with:
|
2016-06-29 02:39:23 +00:00
|
|
|
|
2013-06-23 01:43:24 +00:00
|
|
|
$ python package.py
|
2013-06-24 20:20:05 +00:00
|
|
|
|
2016-06-29 02:39:23 +00:00
|
|
|
|
|
|
|
### Generate Ubuntu packages
|
|
|
|
|
|
|
|
$ bash -c "pyvenv --system-site-packages env && source env/bin/activate && pip install -r requirements.txt && python3 build.py --clean && python3 package.py"
|
|
|
|
|
2016-06-06 21:00:57 +00:00
|
|
|
### Running tests
|
2016-01-05 22:14:05 +00:00
|
|
|
|
|
|
|
The complete test suite is ran with [Tox 1.7+][tox]. If you have it installed system-wide, you
|
|
|
|
don't even need to set up a virtualenv. Just `cd` into the root project folder and run `tox`.
|
|
|
|
|
|
|
|
If you don't have Tox system-wide, install it in your virtualenv with `pip install tox` and then
|
|
|
|
run `tox`.
|
|
|
|
|
|
|
|
You can also run automated tests without Tox. Extra requirements for running tests are in
|
|
|
|
`requirements-extra.txt`. So, you can do `pip install -r requirements-extra.txt` inside your
|
|
|
|
virtualenv and then `py.test core hscommon`
|
|
|
|
|
2013-12-01 16:26:30 +00:00
|
|
|
[dupeguru]: http://www.hardcoded.net/dupeguru/
|
|
|
|
[cross-toolkit]: http://www.hardcoded.net/articles/cross-toolkit-software
|
2015-04-12 19:31:01 +00:00
|
|
|
[contrib-issue]: https://github.com/hsoft/dupeguru/issues/300
|
2015-12-25 01:50:33 +00:00
|
|
|
[nowindows]: https://www.hardcoded.net/archive2015#2015-11-01
|
2013-06-24 20:20:05 +00:00
|
|
|
[documentation]: http://www.hardcoded.net/dupeguru/help/en/
|
|
|
|
[python]: http://www.python.org/
|
|
|
|
[pyqt]: http://www.riverbankcomputing.com
|
2015-10-28 01:33:41 +00:00
|
|
|
[pyenv]: https://github.com/yyuu/pyenv
|
2016-01-05 22:14:05 +00:00
|
|
|
[tox]: https://tox.readthedocs.org/en/latest/
|
|
|
|
|