diff --git a/.travis.yml b/.travis.yml index 5d93a32e5..47c504ecc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,11 @@ -language: erlang +language: objective-c install: -- sudo apt-get install luarocks -- sudo apt-get install python-virtualenv -- sudo luarocks install luafilesystem -- sudo luarocks install busted +- brew update +- brew install lua luarocks +- sudo easy_install pip +- sudo pip install virtualenv +- luarocks install luafilesystem +- luarocks install busted env: global: - secure: "MA1+zHILO7O99n5+nj6jxuqVHUM0ZcGFfiZ9GT/4JyOG8nGkKWXopW/PbDzj\nRRFW3oknkm9jwVgCccvb2oSCPhEUVEUwcdo6xMuCFnskQNAA4q/SWAXXcZvm\nLjaJHNIb66Nnti+dhfAtfNvw8InzV7RzlmBxRrlH9M/0+X2gE5U=" diff --git a/Makefile b/Makefile index dc861a208..c07f0cb70 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: love osx clean contributors win32 win64 maps tweet post run release forum +.PHONY: clean contributors run forum productionize deploy love UNAME := $(shell uname) @@ -16,30 +16,18 @@ else wget = wget --no-check-certificate endif -mixpanel_dev = ac1c2db50f1332444fd0cafffd7a5543 - -ifndef MIXPANEL_TOKEN - mixpanel_prod = $(mixpanel_dev) -else - mixpanel_prod = $(MIXPANEL_TOKEN) -endif - +maps := $(patsubst %.tmx,%.lua,$(wildcard src/maps/*.tmx)) +love: build/hawkthorne.love -love: maps build - @sed -i.bak 's/$(mixpanel_dev)/$(mixpanel_prod)/g' src/main.lua - cd src && zip -q -r ../build/hawkthorne.love . -x ".*" \ - -x ".DS_Store" -x "*/full_soundtrack.ogg" -x "main.lua.bak" - mv src/main.lua.bak src/main.lua - -build: +build/hawkthorne.love: $(maps) src mkdir -p build + cd src && zip -q -r ../build/hawkthorne.love . -x ".*" \ + -x ".DS_Store" -x "*/full_soundtrack.ogg" -x "*.bak" -run: maps $(LOVE) +run: $(maps) $(LOVE) $(LOVE) src -maps: $(patsubst %.tmx,%.lua,$(wildcard src/maps/*.tmx)) - src/maps/%.lua: src/maps/%.tmx bin/tmx2lua bin/tmx2lua $< @@ -68,19 +56,12 @@ bin/love.app/Contents/MacOS/love: # THE REST OF THESE TARGETS ARE FOR RELEASE AUTOMATION ###################################################### -current_version = $(shell python scripts/version.py current) -sparkle_version = $(shell python scripts/version.py current --sparkle) -next_version = $(shell python scripts/version.py next) -previous_version = $(shell python scripts/version.py previous) - CI_TARGET=test ifeq ($(TRAVIS), true) -ifeq ($(TRAVIS_BRANCH), master) +ifeq ($(TRAVIS_BRANCH), release) ifeq ($(TRAVIS_PULL_REQUEST), false) -ifeq ($(shell python scripts/bump.py), true) -CI_TARGET=clean test upload social -endif +CI_TARGET=clean test productionize upload deltas social endif endif endif @@ -90,9 +71,8 @@ positions: $(patsubst %.png,%.lua,$(wildcard src/positions/*.png)) src/positions/%.lua: psds/positions/%.png overlay2lua src/positions/config.json $< -win: win32/love.exe win32 win64 - -win32: love +build/hawkthorne-win-x86.zip: build/hawkthorne.love + mkdir -p build rm -rf hawkthorne rm -f hawkthorne-win-x86.zip cat win32/love.exe build/hawkthorne.love > win32/hawkthorne.exe @@ -105,7 +85,8 @@ win32/love.exe: unzip -q windows-build-files.zip rm -f windows-build-files.zip -win64: love +build/hawkthorne-win-x64.zip: build/hawkthorne.love + mkdir -p build rm -rf hawkthorne rm -f hawkthorne-win-x64.zip cat win64/love.exe build/hawkthorne.love > win64/hawkthorne.exe @@ -113,71 +94,51 @@ win64: love zip -q -r hawkthorne-win-x64 hawkthorne -x "*/love.exe" mv hawkthorne-win-x64.zip build -osx: maps bin/love.app/Contents/MacOS/love build +build/hawkthorne-osx.zip: bin/love.app/Contents/MacOS/love $(maps) + mkdir -p build cp -r bin/love.app Journey\ to\ the\ Center\ of\ Hawkthorne.app - sed -i.bak 's/0.0.1/$(sparkle_version)/g' \ - Journey\ to\ the\ Center\ of\ Hawkthorne.app/Contents/Info.plist - @sed -i.bak 's/$(mixpanel_dev)/$(mixpanel_prod)/g' src/main.lua cp -r src Journey\ to\ the\ Center\ of\ Hawkthorne.app/Contents/Resources/hawkthorne.love rm -f Journey\ to\ the\ Center\ of\ Hawkthorne.app/Contents/Resources/hawkthorne.love/.DS_Store - find Journey\ to\ the\ Center\ of\ Hawkthorne.app/Contents -name "*.bak" -delete - mv src/main.lua.bak src/main.lua + cp osx/Info.plist \ + Journey\ to\ the\ Center\ of\ Hawkthorne.app/Contents/Info.plist cp osx/Hawkthorne.icns \ Journey\ to\ the\ Center\ of\ Hawkthorne.app/Contents/Resources/Love.icns zip -q -r hawkthorne-osx Journey\ to\ the\ Center\ of\ Hawkthorne.app mv hawkthorne-osx.zip build rm -rf Journey\ to\ the\ Center\ of\ Hawkthorne.app -upload: osx win venv - venv/bin/python scripts/upload.py releases/$(current_version) build/hawkthorne.love - venv/bin/python scripts/upload.py releases/$(current_version) build/hawkthorne-osx.zip - venv/bin/python scripts/upload.py releases/$(current_version) build/hawkthorne-win-x86.zip - venv/bin/python scripts/upload.py releases/$(current_version) build/hawkthorne-win-x64.zip - venv/bin/python scripts/symlink.py $(current_version) +productionize: + venv/bin/python scripts/productionize.py + +binaries: build/hawkthorne-osx.zip build/hawkthorne-win-x64.zip build/hawkthorne-win-x86.zip + +upload: binaries venv + venv/bin/python scripts/upload_binaries.py -deltas: +deltas: venv venv/bin/python scripts/sparkle.py cat sparkle/appcast.xml | xmllint -format - # Make sure the appcast is valid xml venv/bin/python scripts/upload.py / sparkle/appcast.xml -release: release.md - git fetch origin - git fetch --tags - sed -i '' 's/$(current_version)/$(next_version)/g' src/conf.lua - git add src/conf.lua - git commit -eF release.md - git push origin master - git tag -a $(next_version) -m "Tagged new release at version $(next_version)" - git push --tags - -release.md: venv - git fetch --tags - venv/bin/python scripts/release_markdown.py $(current_version) master $@ - -forum: venv - @venv/bin/python scripts/create_forum_post.py $(current_version) - - -social: venv notes post - venv/bin/python scripts/create_release_post.py $(current_version) post.md - -notes: notes.html post +social: venv post.md notes.html venv/bin/python scripts/upload.py releases/$(current_version) notes.html - -notes.html: post + venv/bin/python scripts/socialize.py post.md + +notes.html: post.md venv/bin/python -m markdown post.md > notes.html -post: - git show -s --format=%s $(current_version)^{commit} > $@.md - echo "\n" >> $@.md - git show -s --format=%b $(current_version)^{commit} >> $@.md +post.md: + venv/bin/python scripts/create_post.py $(shell git log master -n 1 --pretty=format:%H) post.md venv: - virtualenv --python=python2.7 venv - venv/bin/pip install -r requirements.txt + virtualenv -q --python=python2.7 venv + venv/bin/pip install -q -r requirements.txt deploy: $(CI_TARGET) +forum: venv + venv/bin/python scripts/create_forum_post.py + contributors: venv venv/bin/python scripts/clean.py > CONTRIBUTORS venv/bin/python scripts/credits.py > src/credits.lua @@ -190,6 +151,7 @@ clean: rm -f release.md rm -f post.md rm -f notes.html + rm -rf src/maps/*.lua rm -rf Journey\ to\ the\ Center\ of\ Hawkthorne.app reset: diff --git a/README.md b/README.md index d4f1a7b1b..7e6d8988d 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,13 @@ Congratulations! You're running Journey to the Center of Hawkthorne! Your next s - [/r/hawkthorne subreddit](http://www.reddit.com/r/hawkthorne) - [#hawkthorne@irc.freenode.net](http://webchat.freenode.net/?channels=hawkthorne) on IRC + +## Releasing a new version + +We release a new version of Journey to the Center of Hawkthorne about every two +weeks. To create a release, open a pull request from the `master` branch to the +`release` branch. You should never commit directly to the `release` branch. + ## License Unless otherwise noted, this code is licensed under the MIT License. diff --git a/osx/Info.plist b/osx/Info.plist index 061dbd8c4..dcf31b304 100644 --- a/osx/Info.plist +++ b/osx/Info.plist @@ -21,7 +21,7 @@ CFBundleSignature HaWk CFBundleVersion - 0.0.1 + 0.0.77 DTCompiler DTPlatformBuild @@ -37,7 +37,7 @@ DTXcodeBuild 4G1004 NSHumanReadableCopyright - © 2006-2012 LÖVE Development Team + 2006-2012 Hawkthorne Development Team NSPrincipalClass NSApplication SUFeedURL @@ -45,4 +45,4 @@ SUPublicDSAKeyFile dsa_pub.pem - + \ No newline at end of file diff --git a/scripts/bump.py b/scripts/bump.py deleted file mode 100644 index 345b74b4a..000000000 --- a/scripts/bump.py +++ /dev/null @@ -1,17 +0,0 @@ -import os -import urllib -import version -import json -import sys - -if __name__ == "__main__": - current = version.current_version() - url = "http://files.projecthawkthorne.com/releases/{}/notes.html" - - feed = urllib.urlopen(url.format(current)) - - if feed.getcode() == 403: - sys.stdout.write('true') - else: - sys.stdout.write('false') - exit(0) diff --git a/scripts/create_post.py b/scripts/create_post.py new file mode 100644 index 000000000..5b11f665c --- /dev/null +++ b/scripts/create_post.py @@ -0,0 +1,57 @@ +import os +import sys +from datetime import datetime +import argparse +import boto +import requests +import jinja2 +import json +import time +import subprocess + +import version + +pulls_url = "https://api.github.com/repos/hawkthorne/hawkthorne-journey/pulls" +compare_url = "https://github.com/hawkthorne/hawkthorne-journey/compare/{}...{}" +GITHUB_TIME = "%Y-%m-%dT%H:%M:%SZ" + + +def post_content(base, head): + if base is None or head is None: + url = "" + else: + url = compare_url(base, head) + + resp = requests.get(pulls_url, params={'state': 'closed', 'base': 'release'}) + pulls = resp.json() + + if not pulls: + raise ValueError(('No pull request for this release, which means no' + 'post')) + + return pulls[0]['body'] + "\n" + url + + +def commithash(version): + bucket = boto.s3.get_bucket("files.projecthawkthorne.com") + key = bucket.get_key("releases/v{}/hawkthorne-osx.zip".format(version)) + + if key is None: + return key + + return key.get_contents() + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('commit_hash') + parser.add_argument('output', type=argparse.FileType('w')) + args = parser.parse_args() + + prevous_hash = commithash(version.prev_version) + + args.output.write(post_content(previous_hash, args.commit_hash)) + + +if __name__ == "__main__": + main() diff --git a/scripts/productionize.py b/scripts/productionize.py new file mode 100644 index 000000000..d9bfa4f7f --- /dev/null +++ b/scripts/productionize.py @@ -0,0 +1,47 @@ +import os +import jinja2 +import version +import logging + +MIXPANEL_DEV = 'ac1c2db50f1332444fd0cafffd7a5543' +MIXPANEL_TOKEN = os.environ.get('MIXPANEL_TOKEN', MIXPANEL_DEV) + + +def create_main_lua(): + with open('src/main.lua') as infile: + contents = infile.read() + + with open('src/main.lua', 'w') as outfile: + outfile.write(contents.replace(MIXPANEL_DEV, MIXPANEL_TOKEN)) + + +def create_conf_lua(version): + template = jinja2.Template(open('templates/conf.lua').read()) + + with open('src/conf.lua', 'w') as f: + f.write(template.render(version=version)) + + +def create_info_plist(version): + template = jinja2.Template(open('templates/Info.plist').read()) + + with open('osx/Info.plist', 'w') as f: + f.write(template.render(version=version)) + + +def main(): + v = version.next_version() + + logging.info("Creating osx/Info.plist") + create_info_plist(v) + + logging.info("Creating src/conf.lua") + create_conf_lua(v) + + logging.info("Creating src/main.lua") + create_main_lua() + + +if __name__ == "__main__": + logging.basicConfig(level=logging.INFO) + main() diff --git a/scripts/release_markdown.py b/scripts/release_markdown.py deleted file mode 100644 index 0b1a6b921..000000000 --- a/scripts/release_markdown.py +++ /dev/null @@ -1,55 +0,0 @@ -import os -import sys -from datetime import datetime -import argparse -import requests -import jinja2 -import json -import time -import subprocess - -pulls_url = "https://api.github.com/repos/hawkthorne/hawkthorne-journey/pulls" -issues_url = "https://api.github.com/repos/hawkthorne/hawkthorne-journey/issues" -tag_url = "https://api.github.com/repos/hawkthorne/hawkthorne-journey/git/tags/{}" -GITHUB_TIME = "%Y-%m-%dT%H:%M:%SZ" - -title = "[RELEASE] Journey to the Center of Hawkthorne {}" - - -def post_content(base, head): - sha = subprocess.check_output(["git", "show-ref", base]).split(" ")[0] - - tag = requests.get(tag_url.format(sha)).json() - - # Just pretend the date is UTC. - tag_date = datetime.strptime(tag['tagger']['date'], GITHUB_TIME) - - new_features = [] - - for pull_request in requests.get(pulls_url, params={'state': 'closed'}).json(): - if not pull_request['merged_at']: - continue - if datetime.strptime(pull_request['merged_at'], GITHUB_TIME) > tag_date: - new_features.append(pull_request) - - template = jinja2.Template(open('templates/post.md').read()) - - bugs = requests.get(issues_url, params={'labels': 'bug'}).json() - - return template.render(new_features=new_features, version=head, bugs=bugs) - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('base') - parser.add_argument('head') - parser.add_argument('output', type=argparse.FileType('w')) - args = parser.parse_args() - - content = post_content(args.base, args.head) - - args.output.write(content) - - -if __name__ == "__main__": - main() diff --git a/scripts/create_release_post.py b/scripts/socialize.py similarity index 81% rename from scripts/create_release_post.py rename to scripts/socialize.py index 77b2c8143..f50996417 100644 --- a/scripts/create_release_post.py +++ b/scripts/socialize.py @@ -6,7 +6,9 @@ import json import time import tweepy -import subprocess +import logging + +import version class Reddit(object): @@ -59,8 +61,12 @@ def reddit_url(api_response): return api_response['jquery'][-1][3][0] -def update_twitter(version, api_response): - post_url = reddit_url(api_response) +def update_twitter(version, post_url): + tweet = "Journey to Center of Hawkthorne {} {}".format(version, post_url) + + if 'TRAVIS' not in os.environ: + logging.info('[DRYRUN] Tweeting {}'.format(tweet)) + return consumer_key = "wCIocGQX6rGhkwXGDAIeiw" consumer_secret = os.environ['BRITTA_BOT_CONSUMER_SECRET'] @@ -69,36 +75,42 @@ def update_twitter(version, api_response): auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) - api = tweepy.API(auth) - tweet = "Journey to Center of Hawkthorne {} {}".format(version, post_url) + api = tweepy.API(auth) api.update_status(tweet) -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('version') - parser.add_argument('input', type=argparse.FileType('r')) - parser.add_argument('-d', '--debug', default=False, action='store_true') - args = parser.parse_args() - - if args.debug: - print args.input.read() +def update_reddit(title, post): + if 'TRAVIS' not in os.environ: + logging.info('[DRYRUN] Posting {}'.format(title)) return r = Reddit(os.environ['BRITTA_BOT_USER']) - post = args.input.read() - - resp = r.submit('hawkthorne', title.format(args.version), + resp = r.submit('hawkthorne', title.format(v), text=post, auth=(os.environ['BRITTA_BOT_USER'], os.environ['BRITTA_BOT_PASS'])) - resp = r.submit('community', title.format(args.version), + r.submit('community', title.format(v), text=post, auth=(os.environ['BRITTA_BOT_USER'], os.environ['BRITTA_BOT_PASS'])) - update_twitter(args.version, resp.json()) + return reddit_url(resp.json()) + + +def main(): + logging.basicConfig(level=logging.INFO) + + parser = argparse.ArgumentParser() + parser.add_argument('input', type=argparse.FileType('r')) + parser.add_argument('-d', '--debug', default=False, action='store_true') + args = parser.parse_args() + + v = version.current_version() + post = args.input.read() + + post_url = update_reddit(title.format(v), post) + update_twitter(v, post_url) if __name__ == "__main__": diff --git a/scripts/sparkle.py b/scripts/sparkle.py index d52d339bd..89a59a95a 100644 --- a/scripts/sparkle.py +++ b/scripts/sparkle.py @@ -1,14 +1,17 @@ -import version +import boto import datetime import os import urllib +import requests import logging import subprocess import xml.etree.ElementTree as etree from os import path from email.utils import formatdate from calendar import timegm + import upload +import version logging.basicConfig(level=logging.INFO) @@ -24,9 +27,12 @@ def upload_deltas(delta_paths): + c = boto.connect_s3() + b = c.get_bucket('files.projecthawkthorne.com') + for delta in delta_paths: logging.info('Uploading {}'.format(delta)) - upload.upload_path("deltas", delta) + upload.upload_path(b, "deltas", delta) def download(version): @@ -90,7 +96,7 @@ def make_appcast_item(version, sparkle_version, delta_paths): if __name__ == "__main__": x, y, z = version.current_version_tuple() - versions = ["{}.{}.{}".format(x, y, int(z) - i) for i in range(4)] + versions = ["v{}.{}.{}".format(x, y, int(z) - i) for i in range(4)] current_version = versions[0] sparkle_current_version = current_version.replace("v", "") @@ -119,7 +125,11 @@ def make_appcast_item(version, sparkle_version, delta_paths): if not path.exists("sparkle/BinaryDelta.zip"): logging.info("Fetching BinaryDelta") - urllib.urlretrieve(BDIFF_URL, "sparkle/BinaryDelta.zip") + resp = requests.get(BDIFF_URL) + resp.raise_for_status() + + with open("sparkle/BinaryDelta.zip", 'w') as f: + f.write(resp.content) subprocess.call(["unzip", "-q", "sparkle/BinaryDelta.zip", "-d", "sparkle"]) diff --git a/scripts/upload.py b/scripts/upload.py index 22ce4b187..b5e6e4a79 100644 --- a/scripts/upload.py +++ b/scripts/upload.py @@ -1,24 +1,32 @@ import os import argparse import boto +import logging from boto.s3 import key parser = argparse.ArgumentParser(description="Upload files to S3") parser.add_argument("prefix", help="Prefix for file of upload") parser.add_argument("path", help="File to upload") -def upload_path(prefix, path): + +def upload_path(b, prefix, path): + if 'TRAVIS' not in os.environ: + logging.info('[DRYRUN] uploading {} to {}'.format(path, prefix)) + return + name = os.path.basename(path) - - c = boto.connect_s3() - b = c.get_bucket('files.projecthawkthorne.com') - k = key.Key(b) k.key = os.path.join(prefix, name) + + logging.info('Uploading {} to {}'.format(path, prefix)) k.set_contents_from_filename(path) k.set_acl('public-read') if __name__ == "__main__": + logging.basicConfig(level=logging.INFO) args = parser.parse_args() - upload_path(args.prefix, args.path) + + c = boto.connect_s3() + b = c.get_bucket('files.projecthawkthorne.com') + upload_path(b, args.prefix, args.path) diff --git a/scripts/upload_binaries.py b/scripts/upload_binaries.py new file mode 100644 index 000000000..b595d27ed --- /dev/null +++ b/scripts/upload_binaries.py @@ -0,0 +1,39 @@ +import os +import boto +import logging +from boto.s3 import key + +import upload +import version + +releases = [ + 'hawkthorne-win-x64.zip', + 'hawkthorne-win-x86.zip', + 'hawkthorne-osx.zip', + 'hawkthorne.love', +] + + +def main(): + logging.basicConfig(level=logging.INFO) + c = boto.connect_s3() + b = c.get_bucket('files.projecthawkthorne.com') + + path = os.path.join('releases', 'v' + version.next_version()) + + for item in releases: + upload.upload_path(b, path, os.path.join('build', item)) + + if 'TRAVIS' not in os.environ: + logging.info('[DRYRUN] Create release symlinks') + return + + for item in releases: + k = b.get_key("releases/latest/{}".format(release)) + k.set_redirect("/releases/{}/{}".format(args.version, release)) + k.set_acl('public-read') + + +if __name__ == "__main__": + main() + diff --git a/scripts/version.py b/scripts/version.py index 7ac4a8aae..97a8dd4ea 100644 --- a/scripts/version.py +++ b/scripts/version.py @@ -2,51 +2,37 @@ Bump the version number """ import os +import boto import argparse +s3 = boto.connect_s3() + def current_version(): x, y, z = current_version_tuple() return "{0}.{1}.{2}".format(x,y,z) +def next_version(): + x, y, z = current_version_tuple() + return "{0}.{1}.{2}".format(x,y,int(z) + 1) + +def prev_version(): + x, y, z = current_version_tuple() + return "{0}.{1}.{2}".format(x,y,int(z) - 1) + + def current_version_tuple(): - for line in open('src/conf.lua'): - line = line.strip() - if 't.title' not in line: - continue - _, full_title = line.replace('"', '').split('=') - title, current = full_title.strip().rsplit(' ', 1) - return current.split('.') + bucket = s3.get_bucket("files.projecthawkthorne.com") + key = bucket.get_key("releases/latest/hawkthorne-osx.zip") + redirect = key.get_redirect() + _, _, version, _ = redirect.split('/') + return tuple(version.replace('v', '').split('.')) if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument('action', choices=['next', 'current', 'previous']) parser.add_argument('--sparkle', action='store_true', default=False) - args = parser.parse_args() - - x, y, z = current_version_tuple() - - if args.action == 'next': - z = int(z) + 1 - elif args.action == 'previous': - z = int(z) - 1 - else: - z = int(z) - - version = "{0}.{1}.{2}".format(x,y,z) - - if not version: - print "Could not find version number" - exit(1) - - if version == '0.8.0': - print "This is the LOVE version, not safe" - exit(1) - - if args.sparkle: - version = version.replace("v", "") - print version - exit(0) + print(current_version_tuple()) diff --git a/src/conf.lua b/src/conf.lua index 6aee1a842..3ec663cde 100644 --- a/src/conf.lua +++ b/src/conf.lua @@ -1,13 +1,14 @@ function love.conf(t) - t.title = "Journey to the Center of Hawkthorne v0.0.76" - t.author = "Kyle Conroy" + t.title = "Journey to the Center of Hawkthorne v0.0.77" + t.url = "http://projecthawkthrone.com" + t.author = "https://github.com/hawkthorne?tab=members" t.version = "0.8.0" - t.identity = "hawkthorne" + t.identity = "hawkthorne_release" t.screen.width = 1056 t.screen.height = 672 t.screen.fullscreen = false t.console = false t.modules.physics = false t.modules.joystick = false - t.release = false -end + t.release = true +end \ No newline at end of file diff --git a/src/main.lua b/src/main.lua index d404c9cfe..6a135c6ea 100644 --- a/src/main.lua +++ b/src/main.lua @@ -36,7 +36,7 @@ if correctVersion then local state, door, position = 'splash', nil, nil -- SCIENCE! - mixpanel.init("ac1c2db50f1332444fd0cafffd7a5543") + mixpanel.init("2b45c2198796f3e6e7fb8c47837e4963") mixpanel.track('game.opened') -- set settings diff --git a/templates/Info.plist b/templates/Info.plist new file mode 100644 index 000000000..dfa41d764 --- /dev/null +++ b/templates/Info.plist @@ -0,0 +1,48 @@ + + + + + BuildMachineOSBuild + 12C54 + CFBundleDevelopmentRegion + English + CFBundleExecutable + love + CFBundleIconFile + Love.icns + CFBundleIdentifier + com.projecthawkthorne.journey + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Journey to the Center of Hawkthorne + CFBundlePackageType + APPL + CFBundleSignature + HaWk + CFBundleVersion + {{ version }} + DTCompiler + + DTPlatformBuild + 4G1004 + DTPlatformVersion + GM + DTSDKBuild + 12C37 + DTSDKName + macosx10.8 + DTXcode + 0451 + DTXcodeBuild + 4G1004 + NSHumanReadableCopyright + 2006-2012 Hawkthorne Development Team + NSPrincipalClass + NSApplication + SUFeedURL + http://files.projecthawkthorne.com/appcast.xml + SUPublicDSAKeyFile + dsa_pub.pem + + diff --git a/templates/conf.lua b/templates/conf.lua new file mode 100644 index 000000000..f719afd5e --- /dev/null +++ b/templates/conf.lua @@ -0,0 +1,14 @@ +function love.conf(t) + t.title = "Journey to the Center of Hawkthorne v{{ version }}" + t.url = "http://projecthawkthrone.com" + t.author = "https://github.com/hawkthorne?tab=members" + t.version = "0.8.0" + t.identity = "hawkthorne_release" + t.screen.width = 1056 + t.screen.height = 672 + t.screen.fullscreen = false + t.console = false + t.modules.physics = false + t.modules.joystick = false + t.release = true +end