diff options
author | emkael <emkael@tlen.pl> | 2015-09-01 22:56:09 +0200 |
---|---|---|
committer | emkael <emkael@tlen.pl> | 2015-09-01 22:56:09 +0200 |
commit | fdb3aa6c1302f2bbb7c4ee384998088799193470 (patch) | |
tree | cfb159c095d8ea75a09ed46bfed6e799526351cf | |
parent | 337b6234d66a3e374ab33584c2927bce0a2c4692 (diff) |
* build tools and environment
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | BUILD.md | 96 | ||||
-rw-r--r-- | README.md | 19 | ||||
-rw-r--r-- | dist/virtual_table.exe | bin | 0 -> 6033276 bytes | |||
-rw-r--r-- | src/.gitignore | 1 | ||||
-rw-r--r-- | src/icon.ico | bin | 0 -> 67118 bytes | |||
-rw-r--r-- | src/icon.xcf | bin | 0 -> 9812 bytes | |||
-rw-r--r-- | src/version | 39 | ||||
-rw-r--r-- | src/virtual_table.py (renamed from virtual_table.py) | 0 | ||||
-rw-r--r-- | virtual_table.spec | 17 |
10 files changed, 170 insertions, 3 deletions
@@ -1 +0,0 @@ -*.pyc diff --git a/BUILD.md b/BUILD.md new file mode 100644 index 0000000..cb5a972 --- /dev/null +++ b/BUILD.md @@ -0,0 +1,96 @@ + +JFR Pary - wirtualne stoliki: Informacje dla programistów +========================================================= + +Struktura repozytorium kodu +--------------------------- + +Katalog [`src`](src) zawiera komponenty źródłowe programu: + +* [kod skryptu Pythona](src/virtual_table.py), który wykonuje całą robotę +* [ikonę programu](src/icon.ico) wraz ze [źródłami](src/icon.xcf) +* [metadane programu](src/version) dla PyInstallera + +Katalogi `dist` i `build` są domyślnie puste i są katalogami roboczymi +PyInstallera. + +W katalogu głównym znajdują się rozmaite README oraz skrypty budujące program. + +Od zera do bohatera - proces budowania programu +----------------------------------------------- + +Jedynym wymaganym do działania narzędzia elementem repozytorium jest źródłowy +skrypt [`virtual_table.py`](src/virtual_table.py). Cała reszta to tylko +fajerwerki i opakowanie w plik wykonywalny. + +Skrypt można uruchomić w dowolnym środowisku, w którym działa Python, a jego +wymagania wymienione są poniżej. `virtual_table.py` przyjmuje parametry +identycznie do wynikowego pliku wykonywalnego. + +--- + +Pliku źródłowego można użyć jako modułu, jeśli kogoś to kręci, importując go +do swojej aplikacji poprzez: +``` +from virtual_table import JFRVirtualTable +``` + +--- + +Skrypt można samodzielnie skompilować do pliku wykonywalnego, używając do tego +PyInstallera. Można to zrobić z pomocą dołączonego pliku [`virtual_table.spec`](virtual_table.spec): +``` +pyinstaller virtual_table.spec +``` +lub samodzielnie, podając odpowiednie parametry do PyInstallera: +``` +pyinstaller --onefile --version-file=src\version --icon=src\icon.ico src\virtual_table.py +``` +Zarówno metadane z pliku `src/version`, jak i ikona programu są w 100% opcjonalne. + +Wynik działania PyInstallera (pojedynczy plik wykonywalny) znajdzie się w katalogu `dist`. + +Wymagania systemowe +------------------- + +Skrypt [`virtual_table.py`](src/virtual_table.py): + +* python 2.x (testowane i tworzone w wersji 2.7.10) +* BeautifulSoup4 +* lxml (jako parser dla BS4) +* argparse + +Kompilacja do EXE: + +* [PyInstaller](http://pythonhosted.org/PyInstaller/) +* PyWin32 + +Kod żródłowy +------------ + +Kod źródłowy stara się, z grubsza: + +* zgadzać ze standardami [PEP8](https://www.python.org/dev/peps/pep-0008/) +* nie robić [głupich rzeczy](http://stackoverflow.com/a/1732454) +* nie psuć raz przekształconej strony przy próbie ponownego przekształcenia +* komentować rzeczy nieoczywiste + +Operacje na stronach JFR +------------------------ + +Ramowy algorytm działania programu: + +0. Jeśli na wejściu nie podano konkretnych numerów "wirtualnych" par, +skanowane są nagłówki plików historii (H-[PREFIKS]-[PARA].html). Puste +nazwiska przyjmowane są jako pary z wirtualnych stolików. +1. Z wyników ([PREFIKS]WYN.txt), pełnych wyników (W-[PREFIKS].html) +oraz zbiorówek (jeśli istnieją, [PREFIKS]zbior.html) usuwane są wiersze, +w których występują pary wirtualne. +2. Z listy historii (H-[PREFIKS]-lista.html) usuwane są linki do historii +par wirtualnych, a cała tabelka jest magicznie układana z powrotem w rządki. +3. Z protokołów usuwane są zapisy par wirtualnych, poza jednym, który dostaje +schludny nagłówek i przesuwany jest w dół protokołu. + +--- + +`It will end no other way.` @@ -20,23 +20,38 @@ Przykładowe efekty działania: Wymagania systemowe ------------------- +* system operacyjny MS Windows (testowane na Win7 i Win8.1) +* sterownik ODBC dla plików MS Access (zwykle obecny domyślnie z Windows, +weryfikowalny w Panelu Sterowania -> Narzędziach Administracyjnych -> +Żródła danych ODBC) + +LUB + * python 2.x (testowane i tworzone w wersji 2.7.10) * BeautifulSoup4 * lxml (jako parser dla BS4) * argparse +Kompilacja i praca z kodem narzędzia +------------------------------------ + +Patrz: [`BUILD.md`](BUILD.md) + Instalacja ---------- -Ściągnij zawartość tego repozytorium. +Ściągnij plik wykonywalny z katalogu [`dist`](dist) tego repozytorium. Już, gotowe. +Na nie-Windowsach wystarczy w analogiczny sposób ściągnąć skrypt źródłowy +Python: [`virtual_table.py`](src/virtual_table.py). + Użycie ------ ``` -python virtual_table.py [-t OPIS_STOLIKA] PLIK_TURNIEJU.html [NR_PARY NR_PARY ...] +virtual_table.exe [-t OPIS_STOLIKA] PLIK_TURNIEJU.html [NR_PARY NR_PARY ...] ``` Parametry wejściowe: diff --git a/dist/virtual_table.exe b/dist/virtual_table.exe Binary files differnew file mode 100644 index 0000000..071b4fd --- /dev/null +++ b/dist/virtual_table.exe diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 0000000..0d20b64 --- /dev/null +++ b/src/.gitignore @@ -0,0 +1 @@ +*.pyc diff --git a/src/icon.ico b/src/icon.ico Binary files differnew file mode 100644 index 0000000..4554f6f --- /dev/null +++ b/src/icon.ico diff --git a/src/icon.xcf b/src/icon.xcf Binary files differnew file mode 100644 index 0000000..46d7416 --- /dev/null +++ b/src/icon.xcf diff --git a/src/version b/src/version new file mode 100644 index 0000000..d72eb36 --- /dev/null +++ b/src/version @@ -0,0 +1,39 @@ +# UTF-8 +VSVersionInfo( + ffi=FixedFileInfo( + filevers=(1, 0, 0, 0), + prodvers=(1, 0, 0, 0), + # Contains a bitmask that specifies the valid bits 'flags' + mask=0x3f, + # Contains a bitmask that specifies the Boolean attributes of the file. + flags=0x0, + # The operating system for which this file was designed. + # 0x4 - NT and there is no need to change it. + OS=0x4, + # The general type of file. + # 0x1 - the file is an application. + fileType=0x1, + # The function of the file. + # 0x0 - the function is not defined for this fileType + subtype=0x0, + # Creation date and time stamp. + date=(0, 0) + ), + kids=[ + StringFileInfo( + [ + StringTable( + u'040904b0', # 0x0409 = 1033 = English, 0x04b0 = 1200 = UTF-8 + [StringStruct(u'CompanyName', u'emkael.info'), + StringStruct(u'ProductName', u'virtual_table'), + StringStruct(u'ProductVersion', u'1, 0, 0, 0'), + StringStruct(u'InternalName', u'virtual_table'), + StringStruct(u'OriginalFilename', u'virtual_table.exe'), + StringStruct(u'FileVersion', u'1, 0, 0, 0'), + StringStruct(u'FileDescription', u'Virtual table display for JFR Pary result pages'), + StringStruct(u'LegalCopyright', u'© 2015 mkl (Michał Klichowicz)'), + StringStruct(u'LegalTrademarks', u''),]) + ]), + VarFileInfo([VarStruct(u'Translation', [1033, 1200])]) + ] +) diff --git a/virtual_table.py b/src/virtual_table.py index 74a99b6..74a99b6 100644 --- a/virtual_table.py +++ b/src/virtual_table.py diff --git a/virtual_table.spec b/virtual_table.spec new file mode 100644 index 0000000..bca9843 --- /dev/null +++ b/virtual_table.spec @@ -0,0 +1,17 @@ +import os +a = Analysis(['src\\virtual_table.py'], + pathex=[os.path.abspath('.')], + hiddenimports=[], + hookspath=None, + runtime_hooks=None) +pyz = PYZ(a.pure) +exe = EXE(pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + name='virtual_table.exe', + debug=False, + strip=None, + upx=True, + console=True , version='src\\version', icon='src\\icon.ico') |