Skip to content

Commit

Permalink
Merge pull request #46 from physumasso/develop
Browse files Browse the repository at this point in the history
Adding automatic bundle to github
  • Loading branch information
fgoudreault authored Aug 10, 2017
2 parents 74acdb7 + f0d5bd8 commit 2414f96
Show file tree
Hide file tree
Showing 7 changed files with 105 additions and 93 deletions.
14 changes: 10 additions & 4 deletions .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,13 @@ test_script:
# build is done in build_script
build: off
build_script:
- python build.py bdist_msi
# build exe file using pyinstaller from main run script
- IF "%PYTHON_VERSION%"=="3.5" (
pip install pyinstaller &&
pyinstaller --onefile --windowed --name=auxiclean_windows run.py
)
artifacts:
- path: auxiclean_windows.zip
- path: dist/auxiclean_windows.exe
name: auxiclean_windows

# deploy only when making a new release on master branch
Expand All @@ -35,7 +39,9 @@ deploy:
auth_token:
secure: x2ous7RX857j64h4DSkiEBCSU8kUQYCL31UBrPLUSgosixVS/XDXGA6TWr0DLPm9
artifact: auxiclean_windows
draft: true
on:
branch: master
branch:
- master
- test_deploy
appveyor_repo_tag: true
PYTHON_VERSION: 3.5
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
# Python files
##############
build
*.spec
dist
*.egg-info
.eggs
Expand Down
68 changes: 51 additions & 17 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,27 @@
fast_finish: true
env:
matrix:
- PYTHON_VERSION=3.5
- PYTHON_VERSION=3.6
language: generic # since we use miniconda everywhere
os:
- linux
- osx
## only launch CI on those branches
branches:
only:
- master
- develop
- test_deploy
language: python
# use matrix implementation for osx build
# this is needed to use the language:generic
env: DEPLOY_FILE="dist/auxiclean_linux"
matrix:
include:
- os: osx
language: generic
python: 3.5
env:
- TRAVIS_PYTHON_VERSION=3.5
- DEPLOY_FILE="dist/auxiclean_osx.zip"

- os: osx
language: generic
python: 3.6
env:
- TRAVIS_PYTHON_VERSION=3.6
- DEPLOY_FILE="dist/auxiclean_osx.zip"
os: linux
python:
- 3.5
- 3.6

# we use python from miniconda in order to be able to create virtual environments easily
before_install:
Expand All @@ -27,7 +36,7 @@ before_install:
- export PATH="$HOME/miniconda/bin:$PATH"
- source $HOME/miniconda/bin/activate
- conda update --yes conda
- conda create -q --yes -n test-environment python=$PYTHON_VERSION
- conda create -q --yes -n test-environment python=$TRAVIS_PYTHON_VERSION
- source activate test-environment
# install auxiclean package
install:
Expand All @@ -37,11 +46,36 @@ script:
- python tests.py
after_success:
# report coverage in coveralls only for linux build with python 3.6
- if ([[ "$PYTHON_VERSION" == "3.6" ]] &&
- if ([[ "$TRAVIS_PYTHON_VERSION" == "3.6" ]] &&
[[ "$TRAVIS_OS_NAME" == "linux" ]]); then
pip install coveralls;
fi
- if ([[ "$PYTHON_VERSION" == "3.6" ]] &&
- if ([[ "$TRAVIS_PYTHON_VERSION" == "3.6" ]] &&
[[ "$TRAVIS_OS_NAME" == "linux" ]]); then
coveralls;
fi

before_deploy:
- if [[ "$TRAVIS_PYTHON_VERSION" == "3.5" ]]; then pip install pyinstaller; fi
# for macos we compress the .app bundle to be able to upload it on github
- if [[ "$TRAVIS_PYTHON_VERSION" == "3.5" ]] && [[ "$TRAVIS_OS_NAME" == "osx" ]]; then pyinstaller --onefile --windowed --clean --name=auxiclean_osx run.py; fi
- if [[ "$TRAVIS_PYTHON_VERSION" == "3.5" ]] && [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cd dist; fi
- if [[ "$TRAVIS_PYTHON_VERSION" == "3.5" ]] && [[ "$TRAVIS_OS_NAME" == "osx" ]]; then zip -r auxiclean_osx.zip auxiclean_osx.app; fi
- if [[ "$TRAVIS_PYTHON_VERSION" == "3.5" ]] && [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cd ..; fi
- if [[ "$TRAVIS_PYTHON_VERSION" == "3.5" ]] && [[ "$TRAVIS_OS_NAME" == "linux" ]]; then pyinstaller --onefile --windowed --clean --name=auxiclean_linux run.py; fi

deploy:
- provider: releases
api_key:
secure: "a1HB75QQK1XKUCNjNdBv7ZT/vn4WV+9PAycEiOgBDWpyi8VqDzeOLIqkoZ6mmXgy7ORztTMYW5QbU/ztIptg+g58JV49rxr2oAFKHweeA3CykkcWuEx4h0/RgSmdHoFbsuZuIYswV5FPFjSaokyd0szcnPBS1Fuo4u4TiPo5xEmMhNVhIKZUmIlqmWZ18yElk2DyTA84zTY86HJaQPjYGKxS7EIZ1q7hfTgBFFRVD4hnoFeP5R1eXfR8TIU0/IgY46AXnrezfLowmsv1XOrS+81sLH7h6LBj/QGI4WujXXT9KWqxtFHiBB9ikapTmL1XSBLA3XeZGe160FyyRhvHUpO1lHrFxFieTYCgMyRgPbGkLrFKIRzy97pHFkSpASX9Jis4Zp1PF2hKvpNaXOn7AwcwD4Wu7Gt7NWLLsGRc7GYumIaVWnL8GT0ZqxaqR3NihXiG8ILytWzcEMF6gTsAvZjKcnio/1I9LFAYI5xti5npZjWMt0/T498UcFVdMIt5en5T+YPgW7rMrswG4WvDdvk3oHtk6ZKSUKibVvAzUfsEMD6BRngTXOEFH7pSUJo8N+leF+UeeuWYScCAVGHf9op0N6eJC4ETImXTtxGDYZ7Tyf0ZEfdesCtzL0rP5IUJbMSUg+DveflbHjm991dxDJQwedvka8TNwmsGeo2Z3kQ="
file: $DEPLOY_FILE
skip_cleanup: true
on:
tags: true
python: 3.5

file: $DEPLOY_FILE
skip_cleanup: true
on:
tags: true
python: 3.5
46 changes: 27 additions & 19 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,21 +25,22 @@ Ce projet fonctionne au moins sur Python version 3.5 et 3.6.
Il fonctionne possiblement pour d'autres versions plus grande ou égale à la version 3 de Python
mais ne sont pas testées. **Ne fonctionne pas pour Python 2.7 ou inférieur.**

Installation simple (Windows seulement)
---------------------------------------
Installation simple
-------------------

Pour les utilisateurs qui ne sont pas familier avec la programmation et la ligne de
commande, il est possible d'installer et utiliser ce projet sans installer d'interpréteur
Python. Simplement télécharger le fichier compressé sur la page de la `dernière version
disponible <https://github.com/physumasso/auxiclean/releases/latest>`__ sur GitHub.
Il faut télécharger le fichier zip correspondant à la plateforme (pour l'instant uniquement Windows).
Ensuite, décompresser le fichier compressé et le tour est joué! Pour exécuter le programme, il suffit
de cliquer sur le fichier exécutable nommé `auxiclean.exe` et le script s'exécutera tout seul.
Il faut télécharger le fichier correspondant à la plateforme souhaitée. Pour MacOS, le fichier à télécharger
est un fichier zip qu'il faut décompresser avant de pouvoir exécuter le .app.
Pour exécuter le programme, il suffit
de cliquer sur le fichier exécutable téléchargé et le tour est joué!

Installation pour Développement
-------------------------------

Pour installer le projet, il faut un interpréteur python 3.
Pour installer le projet de sorte à avoir accès à l'API, il faut un interpréteur python 3.
Un bon example est `Miniconda <https://conda.io/miniconda.html>`__
produit par Continuum Analytics.

Expand Down Expand Up @@ -153,21 +154,28 @@ Et pour exécuter les tests, il suffit d'exécuter le script ``tests.py``::

$ python tests.py

Pour recréer les fichiers exécutables comme sur la page des `releases <https://github.com/physumasso/auxiclean/releases/latest>`__ sur GitHub,
il faut installer **pyinstaller**::

Fichier Exécutables - Windows
-----------------------------
$ pip install pyinstaller

Il y a un script ``build.py`` qui permet de créer un fichier exécutable
windows pour le script python ``run.py`` (pour une exécution sans ligne de commande).
Il suffit d'exécuter ce script et l'exécutable ``auxiclean.exe`` sera crée sous le
répertoire ``build``. L'argument ``build`` doit être utilisé lorsque ce script est
appelé::

$ python build.py bdist_msi

Si tout s'est bien déroulé, l'exécutable sera crée et il sera possible de rouler
le code simplement en cliquant sur cet exécutable. Il sera possible aussi de créer un
raccourci vers ce fichier exécutable une foix qu'il est crée.
et exécuter la commande::
$ pyinstaller --onefile --windowed --clean --name=auxiclean_executable run.py

Cette commande compilera le fichier `run.py` sous une forme exécutable dépendamment de
la plateforme utilisée. Attention, pyinstaller ne fonctionne pas en python 3.6. Il faut donc exécuter
cette commande soit sous une version de python 3.5 ou inférieure ou soit dans un environnement
virtuel.

POUR LES ADMINS: lorsqu'un PR est fait, les tests sont roulés à la fois sur Windows (Appveyor) que
sur MacOS et linux (travis). Le code coverage est rapporté avec coveralls, ceci permet de toujours s'assurer
que le code fonctionne après chaque modification. Il est donc important d'écrire des tests en conséquence si
l'API change. De plus, les fichiers exécutables pour chaque release sont compilés et uploadés automatiquement
sur GitHub. Ainsi, dès qu'une nouvelle release est crée, Appveyor s'occupera de créer le fichier exécutable
pour Windows et travis pour MacOS et Linux, pas besoin de les créer manuellement (voir les fichiers
`.travis.yml <https://github.com/physumasso/auxiclean/blob/master/.travis.yml>`__ et
`.appveyor.yml <https://github.com/physumasso/auxiclean/blob/master/.appveyor.yml>`__ )

Contributeurs
-------------
Expand Down
15 changes: 14 additions & 1 deletion auxiclean/browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,20 @@
from .handler import TextHandler
from tkinter import filedialog, scrolledtext
from auxiclean import MAINLOGGER
import auxiclean
import tkinter as tk
import os
import logging
import webbrowser


class Browser:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
self.frame.grid(sticky=tk.E + tk.W)
self.master.title("Auxiclean - GUI")
self.master.title("Auxiclean - GUI - version: %s" %
auxiclean.__version__)
# browser logger
self.logger = logging.getLogger("auxiclean.browser")
self.createMainWindow()
Expand Down Expand Up @@ -56,6 +59,16 @@ def createMainWindow(self):

# Logging configuration
MAINLOGGER.addHandler(self.text_handler)
# bug report link (button)
self.bug_report = tk.Label(self.frame,
text="Il y a un bug? Écrivez le ici!",
fg="blue",
cursor="hand2")
self.bug_report.grid(column=0)
self.bug_report.bind("<Button-1>", self.bug_callback)

def bug_callback(self, event):
webbrowser.open_new(r"https://github.com/physumasso/auxiclean/issues")

def run_selector(self):
path = self.pathBox.get()
Expand Down
50 changes: 0 additions & 50 deletions build.py

This file was deleted.

4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ def win_pip_install(package, install_list):

# package required
install_packages = ["openpyxl", # to manage excel spreadsheets
"cx_freeze",
]


develop_packages = ["nose", "pep8", "coverage"]
print("Installing auxiclean, the following packages are required:",
install_packages)
Expand All @@ -28,7 +28,7 @@ def win_pip_install(package, install_list):

# if on windows, there is a bug when installing some packages with setuptools.
# installing them with pip before setup fixes this.
problematics = ("cx_freeze", "coverage")
problematics = ("coverage", )
if sys.platform == "win32":
for problematic in problematics:
win_pip_install(problematic, install_packages)
Expand Down

0 comments on commit 2414f96

Please sign in to comment.