Skip to content

Commit

Permalink
refactor: move plist gen into setup.py
Browse files Browse the repository at this point in the history
Signed-off-by: Rachel Powers <[email protected]>
  • Loading branch information
Ryex committed Jan 9, 2023
1 parent b7e7a08 commit 1a9dd1f
Show file tree
Hide file tree
Showing 9 changed files with 138 additions and 169 deletions.
15 changes: 5 additions & 10 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,22 +76,17 @@ jobs:
- name: Build (macOS)
if: runner.os == 'macOS'
run: |
./macos/build.sh
./setup/macos/build.sh
##
# UPLOAD BUILDS
##

- name: Upload binary zip (macOS)
- name: Upload binary zip / dmg (macOS)
if: runner.os == 'macOS'
uses: actions/upload-artifact@v3
with:
name: novelWriter-${{ matrix.name }}-${{ env.VERSION }}.app.zip
path: novelWriter.app.zip

- name: Upload dmg (macOS)
if: runner.os == 'macOS'
uses: actions/upload-artifact@v3
with:
name: novelWriter-${{ matrix.name }}-${{ env.VERSION }}.dmg
path: novelWriter-${{ env.VERSION }}.dmg
path: |
build_macos/novelWriter-${{ env.VERSION }}.zip
build_macos/novelWriter-${{ env.VERSION }}.dmg
60 changes: 0 additions & 60 deletions macos/Info.plist

This file was deleted.

60 changes: 0 additions & 60 deletions macos/Info.plist.in

This file was deleted.

26 changes: 0 additions & 26 deletions macos/generate_plist.py

This file was deleted.

116 changes: 116 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,25 @@ def getValue(theString):

return numVers, hexVers, relDate

def extractCopyright():
"""Extract the novelWriter copyright notice without having to import
anything else from the main package.
"""
copyright = "Unknown"
initFile = os.path.join("novelwriter", "__init__.py")
try:
with open(initFile, mode="r", encoding="utf-8") as inFile:
for aLine in inFile:
if aLine.startswith("__copyright__"):
copyright = (aLine).partition("=")[2].strip().strip('"')
except Exception as exc:
print("Could not read file: %s" % initFile)
print(str(exc))

print("novelWriter copyright: %s " % (copyright))

return copyright


def compactVersion(numVers):
"""Make the version number more compact."""
Expand Down Expand Up @@ -395,6 +414,98 @@ def buildQtI18nTS(sysArgs):

return

##
# Generage MacOS PList
##

def genMacOSPlist():

# Set Up Folder
# =============

numVers, _, _ = extractVersion()
pkgVers = compactVersion(numVers)

outDir = "setup/macos"

macosBundleName = "novelWriter"
macosBundleExeName = "novelWriter"
macosBundleInfo = "novelWriter: A markdown-like text editor for planning and writing novels."
macosBundleIcon = "novelwriter.icns"
macosBundleIdent = "io.novelwriter.novelWriter"
macosBundleSVers = pkgVers
macosBundleVers = numVers
macosBundleCopyright = extractCopyright()

# These keys are no longer used but are present for compatability
macosBundleVersMajor, macosBundleVersMinor, _ = pkgVers.split(".")


plistXML = (
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"
"<plist version=\"1.0\">\n"
"<dict>\n"
"<key>NSPrincipalClass</key>\n"
"<string>NSApplication</string>\n"
"<key>NSHighResolutionCapable</key>\n"
"<string>True</string>\n"
"<key>CFBundleDevelopmentRegion</key>\n"
"<string>English</string>\n"
"<key>CFBundleExecutable</key>\n"
f"<string>{macosBundleExeName}</string>\n"
"<key>CFBundleGetInfoString</key>\n"
f"<string>{macosBundleInfo}</string>\n"
"<key>CFBundleIconFile</key>\n"
f"<string>{macosBundleIcon}</string>\n"
"<key>CFBundleIdentifier</key>\n"
f"<string>{macosBundleIdent}</string>\n"
"<key>CFBundleName</key>\n"
f"<string>{macosBundleName}</string>\n"
"<key>CFBundleInfoDictionaryVersion</key>\n"
"<string>6.0</string>\n"
"<key>CFBundleShortVersionString</key>\n"
f"<string>{macosBundleSVers}</string>\n"
"<key>CFBundleSignature</key>\n"
"<string>????</string>\n"
"<key>CFBundleVersion</key>\n"
f"<string>{macosBundleVers}</string>\n"
"<key>CFBundlePackageType</key>\n"
"<string>APPL</string>\n"
"<key>NSHumanReadableCopyright</key>\n"
f"<string>{macosBundleCopyright}</string>\n"
"<key>IFMajorVersion</key>\n"
f"<integer>{macosBundleVersMajor}</integer>\n"
"<key>IFMinorVersion</key>\n"
f"<integer>{macosBundleVersMinor}</integer>\n"
"<key>CFBundleDocumentTypes</key>\n"
" <array>\n"
" <dict>\n"
" <key>CFBundleTypeExtensions</key>\n"
" <array>\n"
" <string>nwx</string>\n"
" </array>\n"
" <key>CFBundleTypeName</key>\n"
" <string>novelWriter Project</string>\n"
" <key>CFBundleTypeOSTypes</key>\n"
" <array>\n"
" <string>TEXT</string>\n"
" <string>utxt</string>\n"
" <string>TUTX</string>\n"
" <string>****</string>\n"
" </array>\n"
" <key>CFBundleTypeRole</key>\n"
" <string>Viewer</string>\n"
" <key>LSHandlerRank</key>\n"
" <string>Alternate</string>\n"
" </dict>\n"
" </array>\n"
"</dict>\n"
"</plist>\n"
)

writeFile(f"{outDir}/Info.plist", plistXML)


##
# Sample Project ZIP File Builder (sample)
Expand Down Expand Up @@ -1862,6 +1973,7 @@ def winUninstall():
" The files to be updated must be provided as arguments.",
" qtlrelease Build the language files for internationalisation.",
" clean-assets Delete assets built by manual, sample and qtlrelease.",
" gen-plist Generates an Info.plist for use in a MacOS Bundle",
"",
"Python Packaging:",
"",
Expand Down Expand Up @@ -1943,6 +2055,10 @@ def winUninstall():
if "clean-assets" in sys.argv:
sys.argv.remove("clean-assets")
cleanBuiltAssets()

if "gen-plist" in sys.argv:
sys.argv.remove("gen-plist")
genMacOSPlist()

# Python Packaging
# ================
Expand Down
File renamed without changes.
Loading

0 comments on commit 1a9dd1f

Please sign in to comment.