python ファイルの合体スクリプトはわざわざ目印を用意する必要無いと気が付いた。
class から始まっている行から最後までを読み込みすればいい。
一部書き換えが必要だったけど下記に落ち着いた。
#!/usr/bin/env python3
import os
HEAD = '''#!/usr/bin/env python3
import objc, os, shutil, zipfile, re, subprocess
from AppKit import *
from Quartz.CoreGraphics import *
PICEXT = '\.(jpe?g|png|gif)$'
'''
FOOT = 'main()\n'
lines = [HEAD]
begin = False
for filename in [s for s in os.listdir() if s.startswith('comipoli_')]:
    with open(filename) as f:
        lines.append('# {}\n'.format(filename))
        for l in f.read().split('\n'):
            if begin:
                lines.append(l)
            elif l.startswith('class'):
                begin = True
                lines.append(l)
    begin = False
lines.append(FOOT)
with open('Comipoli.py', 'w') as f:
    f.write('\n'.join(lines))
こうなった。
後は pip3 で py2app を導入、py2applet はセットで付いてくる。
pip3 install -U py2app
ビルドスクリプトの作成。
前回のコードで icns を作る。
上記コードでソースファイルを一つに合体。
後は py2applet にこう渡すだけでアイコン付きの app を作ってくれる。
最後に片付け。
#!/bin/sh # icns python3 make_icns.py iconutil -c icns comipoli.iconset # combine python3 make_combine.py # build py2applet --no-strip Comipoli.py comipoli.icns # clean rm -r comipoli.iconset rm comipoli.icns rm Comipoli.py
ただ
–no-strip オプションを付けているのは
Xcode インストール無しだとこんなダイアログが出るから。
気にせず [今はしない] を選んでも app は作れるけどね。
unrar はフルパス指定にしたらあっさり動いた。
そんなこんなでとっととサイト公開することに。
macOS アプリケーション – L’Isola di Niente
何か忘れている気がするけどまあいいや。
