Last active
January 1, 2016 09:59
-
-
Save timothyclemans/8128399 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import argparse | |
#import envoy | |
import shutil, errno | |
import os | |
import sys | |
def copyanything(src, dst): | |
try: | |
shutil.copytree(src, dst) | |
except OSError as exc: # python >2.5 | |
if exc.errno == errno.ENOTDIR: | |
shutil.copy(src, dst) | |
else: pass | |
def main(scriptlocation, scriptname, voice_trigger): | |
if not os.environ.get('ANDROID_HOME'): | |
raise Exception("Set ANDROID_HOME") | |
if scriptlocation.startswith('http'): | |
import urllib2 | |
response = urllib2.urlopen(scriptlocation) | |
script = response.read() | |
else: | |
f = open(scriptlocation, 'r') | |
script = f.read() | |
copyanything('wearscript/glass', 'glass_%s' % (scriptname.lower())) | |
os.rename('glass_%s/WearScript' % (scriptname.lower()), 'glass_%s/%s' % (scriptname.lower(), scriptname)) | |
print 'replace ' | |
os.system("cd glass_%s; find ./ -type f -exec sed -i 's/dappervision.wearscript/weariverse.%s/g' {} \;" % (scriptname.lower(), scriptname.lower())) | |
os.system("cd glass_%s; find ./ -type f -exec sed -i 's/dappervision/weariverse/g' {} \;" % (scriptname.lower())) | |
os.rename('glass_%s/%s/src/main/java/com/dappervision' % (scriptname.lower(), scriptname), 'glass_%s/%s/src/main/java/com/weariverse' % (scriptname.lower(), scriptname)) | |
os.rename('glass_%s/%s/src/main/java/com/weariverse/wearscript' % (scriptname.lower(), scriptname), 'glass_%s/%s/src/main/java/com/weariverse/%s' % (scriptname.lower(), scriptname, scriptname.lower())) | |
f = open('glass_%s/settings.gradle' % (scriptname.lower()), 'r') | |
old = f.read() | |
f = open('glass_%s/settings.gradle' % (scriptname.lower()), 'w') | |
f.write(old.replace('WearScript', scriptname)) | |
f.close() | |
# set the voice trigger | |
f = open('glass_%s/%s/src/main/res/xml/voice_trigger_start.xml' % (scriptname.lower(), scriptname), 'r') | |
old = f.read() | |
f = open('glass_%s/%s/src/main/res/xml/voice_trigger_start.xml' % (scriptname.lower(), scriptname), 'w') | |
f.write(old.replace('start wear script', voice_trigger)) | |
f.close() | |
f = open('glass_%s/%s/src/main/res/xml/voice_trigger_start.xml' % (scriptname.lower(), scriptname), 'r') | |
print f.read() | |
os.system('rm glass_%s/%s/build/apk/WearScript-debug-unaligned.apk' % (scriptname.lower(), scriptname)) | |
# set the script | |
default = "<script>function s() {WS.say('Connected')};window.onload=function () {WS.serverConnect('{{WSUrl}}', 's')}</script>" | |
f = open('glass_%s/%s/src/main/java/com/weariverse/%s/BackgroundService.java' % (scriptname.lower(), scriptname, scriptname.lower()), 'r') | |
old = f.read() | |
f = open('glass_%s/%s/src/main/java/com/weariverse/%s/BackgroundService.java' % (scriptname.lower(), scriptname, scriptname.lower()), 'w') | |
f.write(old.replace(default, script.replace('\n', '').replace('"', '\\"'))) | |
f.close() | |
os.system('mv glass_%s/%s/src/main/aidl/com/dappervision glass_%s/%s/src/main/aidl/com/weariverse' % (scriptname.lower(), scriptname, scriptname.lower(), scriptname)) | |
manifest = """<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |
package="com.weariverse.%s" | |
android:versionCode="1" | |
android:versionName="1.0" > | |
<uses-permission android:name="android.permission.CAMERA"/> | |
<uses-feature android:name="android.hardware.camera" android:required="false"/> | |
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> | |
<uses-feature android:name="android.hardware.camera.front" android:required="false"/> | |
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/> | |
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> | |
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | |
<uses-permission android:name="android.permission.RECORD_AUDIO" /> | |
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> | |
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> | |
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> | |
<uses-permission android:name="android.permission.INTERNET" /> | |
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | |
<uses-permission android:name="android.permission.WAKE_LOCK" /> | |
<uses-sdk | |
android:minSdkVersion="15" | |
android:targetSdkVersion="17" /> | |
<application | |
android:allowBackup="true" | |
android:icon="@drawable/ic_launcher" | |
android:label="@string/app_name" | |
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > | |
<activity android:name=".activities.MainActivity" | |
android:label="%s (Start)" | |
android:screenOrientation="landscape" | |
android:theme="@style/AppTheme" | |
android:configChanges="keyboardHidden|orientation"> | |
<intent-filter> | |
<action android:name="android.intent.action.MAIN" /> | |
<category android:name="android.intent.category.LAUNCHER" /> | |
<action android:name="com.google.android.glass.action.VOICE_TRIGGER" /> | |
</intent-filter> | |
<meta-data | |
android:name="com.google.android.glass.VoiceTrigger" | |
android:resource="@xml/voice_trigger_start" /> | |
</activity> | |
<service android:name="com.weariverse.datagrid.BackgroundService"/> | |
<activity | |
android:name=".activities.MenuActivity" | |
android:label="@string/app_name" | |
android:theme="@style/MenuTheme" | |
android:enabled="true" > | |
</activity> | |
</application> | |
<supports-screens android:resizeable="true" | |
android:smallScreens="true" | |
android:normalScreens="true" | |
android:largeScreens="true" | |
android:anyDensity="true" /> | |
</manifest>""" % (scriptname, scriptname) | |
f = open('glass_%s/%s/src/main/AndroidManifest.xml' % (scriptname.lower(), scriptname), 'w') | |
f.write(manifest) | |
# build script | |
os.system('cd glass_%s; ./gradlew build --debug' % (scriptname.lower())) | |
print 'APK is at glass_%s/%s/build/apk/DataGrid-debug-unaligned.apk' % (scriptname.lower(), scriptname) | |
if __name__ == '__main__': | |
main(sys.argv[1], sys.argv[2], sys.argv[3]) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment