2
0
[UPDATED]   Project configuration update for ARMv7s support.
This commit is contained in:
Maarten Billemont 2012-09-19 22:11:16 +02:00
parent 83efa853fc
commit 699d0869fc
18 changed files with 102 additions and 24 deletions

View File

@ -781,7 +781,6 @@
DACABB911572B76A008BA211 /* tip_basic_black_top@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DACABB8F1572B769008BA211 /* tip_basic_black_top@2x.png */; };
DAD3126715528C9C00A3F9ED /* Crashlytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAD3125F15528C9C00A3F9ED /* Crashlytics.framework */; };
DAD3126815528C9C00A3F9ED /* Crashlytics.plist in Resources */ = {isa = PBXBuildFile; fileRef = DAD3126015528C9C00A3F9ED /* Crashlytics.plist */; };
DAD3126915528C9C00A3F9ED /* libTestFlight.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAD3126215528C9C00A3F9ED /* libTestFlight.a */; };
DAD3126C15528C9C00A3F9ED /* TestFlight.plist in Resources */ = {isa = PBXBuildFile; fileRef = DAD3126615528C9C00A3F9ED /* TestFlight.plist */; };
DAD3127215528CD200A3F9ED /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
DAD3129015528D1600A3F9ED /* Localytics.plist in Resources */ = {isa = PBXBuildFile; fileRef = DAD3127D15528D0F00A3F9ED /* Localytics.plist */; };
@ -2108,7 +2107,6 @@
DA5BFA4D147E415C00F98B1E /* CoreGraphics.framework in Frameworks */,
DA5BFA4F147E415C00F98B1E /* CoreData.framework in Frameworks */,
DAD3126715528C9C00A3F9ED /* Crashlytics.framework in Frameworks */,
DAD3126915528C9C00A3F9ED /* libTestFlight.a in Frameworks */,
93D399433EA75E50656040CB /* Twitter.framework in Frameworks */,
DA55878015E82C0300860B4F /* FacebookSDK.framework in Frameworks */,
);
@ -2168,6 +2166,16 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
DA3EE95B1601C06000C68F6D /* Facebook */ = {
isa = PBXGroup;
children = (
DA5587B715E838CD00860B4F /* DeprecatedHeaders */,
DA55878115E82C2B00860B4F /* FacebookSDKResources.bundle */,
DA55877F15E82C0300860B4F /* FacebookSDK.framework */,
);
name = Facebook;
sourceTree = "<group>";
};
DA3EF17E15A47744003ABF4E /* Tests */ = {
isa = PBXGroup;
children = (
@ -2377,6 +2385,7 @@
DAD3126115528C9C00A3F9ED /* TestFlight */,
DAD3127315528CD200A3F9ED /* Localytics */,
DA5587F715E8B7B200860B4F /* Google+ */,
DA3EE95B1601C06000C68F6D /* Facebook */,
DA4425D71557BF260052177D /* iCloudStoreManager */,
DA829E5D15984812002417D3 /* FontReplacer */,
DA3EF17E15A47744003ABF4E /* Tests */,
@ -2405,9 +2414,6 @@
DA5BFA47147E415C00F98B1E /* Frameworks */ = {
isa = PBXGroup;
children = (
DA5587B715E838CD00860B4F /* DeprecatedHeaders */,
DA55878115E82C2B00860B4F /* FacebookSDKResources.bundle */,
DA55877F15E82C0300860B4F /* FacebookSDK.framework */,
93D394077F8FAB8167647187 /* Twitter.framework */,
DAAC35DD156BD77D00C5FD93 /* CoreTelephony.framework */,
DAD312C01552A20800A3F9ED /* libsqlite3.dylib */,
@ -4704,13 +4710,15 @@
files = (
);
inputPaths = (
"$(SRCROOT)/External/facebook-ios-sdk/src",
);
name = "Run Script: FacebookSDK";
outputPaths = (
"$(SRCROOT)/External/facebook-ios-sdk/build",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "[ -d External/facebook-ios-sdk/build ] || env -i PATH=\"$PATH\" ./External/facebook-ios-sdk/scripts/build_framework.sh";
shellScript = "env -i PATH=\"$PATH\" ./External/facebook-ios-sdk/scripts/build_framework.sh";
showEnvVarsInLog = 0;
};
DA6556E314D55F3000841C99 /* Run Script: GIT version -> Info.plist */ = {
@ -5138,7 +5146,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = armv7;
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CLANG_WARN_CXX0X_EXTENSIONS = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
@ -5199,7 +5207,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = armv7;
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CLANG_WARN_CXX0X_EXTENSIONS = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
@ -5351,7 +5359,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = armv7;
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CLANG_WARN_CXX0X_EXTENSIONS = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;

View File

@ -1,4 +1,9 @@
#!/usr/bin/env bash
# Uncomment this to set your user name. Master Password will no longer ask you for a user name.
# export MP_USERNAME="Robert Lee Mitchell"
# Uncomment this to hardcode your master password. Make sure this file's permissions are tight. Master Password will not ask you for your master password anymore. This is probably not a good idea.
# export MP_PASSWORD="banana colored duckling"
cd "${BASH_SOURCE[0]%/*}"
java -jar masterpassword-cli-GIT-SNAPSHOT.jar "$@"

View File

@ -185,7 +185,9 @@ static NSDictionary *keyQuery(MPUserEntity *user) {
if (password) {
inf(@"Login failed for: %@", user.userID);
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointSignInFailed];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointSignInFailed attributes:nil];
}
@ -200,7 +202,9 @@ static NSDictionary *keyQuery(MPUserEntity *user) {
@try {
if ([[MPiOSConfig get].sendInfo boolValue]) {
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight addCustomEnvironmentInformation:user.userID forKey:@"username"];
#endif
[Crashlytics setObjectValue:user.userID forKey:@"username"];
[Crashlytics setUserName:user.userID];
}
@ -218,7 +222,9 @@ static NSDictionary *keyQuery(MPUserEntity *user) {
[[MPAppDelegate_Shared get] saveContext];
[[NSNotificationCenter defaultCenter] postNotificationName:MPNotificationSignedIn object:self];
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointSignedIn];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointSignedIn attributes:nil];
return YES;

View File

@ -133,7 +133,9 @@
iCloudEnabled = manager.iCloudEnabled;
inf(@"Using iCloud? %@", iCloudEnabled? @"YES": @"NO");
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:iCloudEnabled? MPCheckpointCloudEnabled: MPCheckpointCloudDisabled];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointCloud attributes:@{
@"enabled": iCloudEnabled? @"YES": @"NO"
}];
@ -146,7 +148,9 @@
err(@"StoreManager: cause=%d, context=%@, error=%@", cause, context, error);
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:PearlString(MPCheckpointMPErrorUbiquity @"_%d", cause)];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointMPErrorUbiquity attributes:@{
@"cause": @(cause),
@"error.domain": error.domain,
@ -165,7 +169,9 @@
if (error.code == NSMigrationMissingSourceModelError) {
wrn(@"Resetting the local store.");
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointLocalStoreReset];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointLocalStoreReset attributes:nil];
manager.hardResetEnabled = YES;
[manager hardResetLocalStorage];
@ -181,7 +187,9 @@
if (error.code == NSMigrationMissingSourceModelError) {
wrn(@"Resetting the iCloud store.");
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointCloudStoreReset];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointCloudStoreReset attributes:nil];
manager.hardResetEnabled = YES;
[manager hardResetCloudStorage];
@ -413,7 +421,9 @@
[self saveContext];
success = YES;
inf(@"Import completed successfully.");
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointSitesImported];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointSitesImported attributes:nil];
return MPImportResultSuccess;
@ -476,7 +486,9 @@
? content: @""];
}
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointSitesExported];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointSitesExported attributes:nil];
return export;

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model name="" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1487" systemVersion="12B19" minimumToolsVersion="Automatic" macOSVersion="Automatic" iOSVersion="Automatic">
<model name="" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1810" systemVersion="12B19" minimumToolsVersion="Automatic" macOSVersion="Automatic" iOSVersion="Automatic">
<entity name="MPElementEntity" representedClassName="MPElementEntity" isAbstract="YES" syncable="YES">
<attribute name="content" optional="YES" transient="YES" attributeType="Transformable" syncable="YES"/>
<attribute name="lastUsed" attributeType="Date" indexed="YES" syncable="YES"/>
<attribute name="loginName" optional="YES" attributeType="String" syncable="YES"/>
<attribute name="loginName" optional="YES" attributeType="String" elementID="userName" syncable="YES"/>
<attribute name="name" attributeType="String" minValueString="1" indexed="YES" syncable="YES"/>
<attribute name="requiresExplicitMigration_" attributeType="Boolean" defaultValueString="NO">
<userInfo/>

View File

@ -6,7 +6,10 @@
// Copyright (c) 2011 Lyndir. All rights reserved.
//
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wnewline-eof"
#import <FacebookSDK/FacebookSDK.h>
#pragma clang diagnostic pop
#import "MPAppDelegate.h"
#import "MPAppDelegate_Key.h"
@ -409,6 +412,7 @@
[[Crashlytics sharedInstance] setIntValue:[[PearlConfig get].reviewAfterLaunches intValue] forKey:@"reviewAfterLaunches"];
[[Crashlytics sharedInstance] setObjectValue:[PearlConfig get].reviewedVersion forKey:@"reviewedVersion"];
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight addCustomEnvironmentInformation:[[MPConfig get].rememberLogin boolValue]? @"YES": @"NO" forKey:@"rememberLogin"];
[TestFlight addCustomEnvironmentInformation:[[MPConfig get].iCloud boolValue]? @"YES": @"NO" forKey:@"iCloud"];
[TestFlight addCustomEnvironmentInformation:[[MPConfig get].iCloudDecided boolValue]? @"YES": @"NO" forKey:@"iCloudDecided"];
@ -422,6 +426,7 @@
[TestFlight addCustomEnvironmentInformation:[PearlConfig get].reviewedVersion forKey:@"reviewedVersion"];
[TestFlight passCheckpoint:MPCheckpointConfig];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointConfig attributes:
@{
@"rememberLogin": [[MPConfig get].rememberLogin boolValue]
@ -451,7 +456,9 @@
[self.navigationController performSegueWithIdentifier:@"MP_Guide" sender:self];
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointShowGuide];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointShowGuide attributes:nil];
}
@ -462,7 +469,9 @@
- (void)showReview {
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointReview];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointReview attributes:nil];
[super showReview];
@ -610,7 +619,9 @@
if (didReset)
didReset();
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointChangeMP];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointChangeMP attributes:nil];
}
cancelTitle:[PearlStrings get].commonButtonAbort

View File

@ -26,7 +26,9 @@
- (IBAction)gorillas:(UIButton *)sender {
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointAppGorillas];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointAppGorillas attributes:nil];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://itunes.apple.com/app/lyndir/gorillas/id302275459?mt=8"]];
@ -34,7 +36,9 @@
- (IBAction)deblock:(UIButton *)sender {
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointAppDeBlock];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointAppDeBlock attributes:nil];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://itunes.apple.com/app/lyndir/deblock/id325058485?mt=8"]];

View File

@ -71,7 +71,9 @@
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointApps];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointApps attributes:nil];
[super viewWillAppear:animated];

View File

@ -338,7 +338,9 @@
- (void)setHelpChapter:(NSString *)chapter {
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:PearlString(MPCheckpointHelpChapter @"_%@", chapter)];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointHelpChapter attributes:@{@"chapter": chapter}];
dispatch_async(dispatch_get_main_queue(), ^{
@ -491,7 +493,9 @@
[self showContentTip:@"Copied!" withIcon:nil];
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointCopyToPasteboard];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointCopyToPasteboard
attributes:@{@"type": self.activeElement.typeName,
@"version": @(self.activeElement.version)}];
@ -507,7 +511,9 @@
[self showLoginNameTip:@"Copied!"];
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointCopyLoginNameToPasteboard];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointCopyLoginNameToPasteboard
attributes:@{@"type": self.activeElement.typeName,
@"version": @(self.activeElement.version)}];
@ -528,7 +534,9 @@
inf(@"Incrementing password counter for: %@", self.activeElement.name);
++((MPElementGeneratedEntity *)self.activeElement).counter;
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointIncrementPasswordCounter];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointIncrementPasswordCounter
attributes:@{@"type": self.activeElement.typeName,
@"version": @(self.activeElement.version)}];
@ -555,7 +563,9 @@
inf(@"Resetting password counter for: %@", self.activeElement.name);
((MPElementGeneratedEntity *)self.activeElement).counter = 1;
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointResetPasswordCounter];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointResetPasswordCounter
attributes:@{@"type": self.activeElement.typeName,
@"version": @(self.activeElement.version)}];
@ -574,7 +584,9 @@
self.loginNameField.enabled = YES;
[self.loginNameField becomeFirstResponder];
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointEditLoginName];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointEditLoginName attributes:@{@"type": self.activeElement.typeName,
@"version": @(self.activeElement.version)}];
}
@ -616,7 +628,9 @@
self.contentField.enabled = YES;
[self.contentField becomeFirstResponder];
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointEditPassword];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointEditPassword
attributes:@{@"type": self.activeElement.typeName,
@"version": @(self.activeElement.version)}];
@ -637,7 +651,9 @@
inf(@"Explicitly migrating element: %@", self.activeElement);
[self.activeElement migrateExplicitly:YES];
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointExplicitMigration];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointExplicitMigration
attributes:@{@"type": self.activeElement.typeName,
@"version": @(self.activeElement.version)}];
@ -807,7 +823,9 @@
}];
[[NSNotificationCenter defaultCenter] postNotificationName:MPNotificationElementUpdated object:self.activeElement];
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:PearlString(MPCheckpointUseType @"_%@", self.activeElement.typeShortName)];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointUseType attributes:@{@"type": self.activeElement.typeName,
@"version": @(self.activeElement.version)}];
}

View File

@ -406,7 +406,9 @@ forRowAtIndexPath:(NSIndexPath *)indexPath {
inf(@"Deleting element: %@", element.name);
[self.fetchedResultsController.managedObjectContext deleteObject:element];
#ifdef TESTFLIGHT_SDK_VERSION
[TestFlight passCheckpoint:MPCheckpointDeleteElement];
#endif
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointDeleteElement
attributes:@{@"type": element.typeName,
@"version": @(element.version)}];

View File

@ -9,7 +9,10 @@
#import <QuartzCore/QuartzCore.h>
#import <Twitter/Twitter.h>
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wnewline-eof"
#import "Facebook.h"
#pragma clang diagnostic pop
#import "GooglePlusShare.h"
#import "MPUnlockViewController.h"
@ -86,7 +89,9 @@
} options:0];
[avatar onSelect:^(BOOL selected) {
if (selected)
user.avatar = (unsigned)avatar.tag;
[user.managedObjectContext performBlock:^{
user.avatar = (unsigned)avatar.tag;
}];
} options:0];
avatar.selected = (a == user.avatar);
if (avatar.selected)
@ -237,9 +242,11 @@
[self.avatarToUser removeAllObjects];
// Create avatars.
for (MPUserEntity *user in users)
[self setupAvatar:[self.avatarTemplate clone] forUser:user];
[self setupAvatar:[self.avatarTemplate clone] forUser:nil];
[moc performBlockAndWait:^{
for (MPUserEntity *user in users)
[self setupAvatar:[self.avatarTemplate clone] forUser:user];
[self setupAvatar:[self.avatarTemplate clone] forUser:nil];
}];
// Scroll view's content changed, update its content size.
[self.avatarsView autoSizeContentIgnoreHidden:YES ignoreInvisible:YES limitPadding:NO ignoreSubviews:nil];
@ -348,7 +355,9 @@
}
// Save
newUser.name = [alert textFieldAtIndex:0].text;
[newUser.managedObjectContext performBlock:^{
newUser.name = [alert textFieldAtIndex:0].text;
}];
[self showNewUserAvatarAlertFor:newUser completion:completion];
}
cancelTitle:[PearlStrings get].commonButtonCancel otherTitles:[PearlStrings get].commonButtonSave, nil];

View File

@ -16,12 +16,9 @@
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#import "TestFlight.h"
//#import "TestFlight.h"
#import <Crashlytics/Crashlytics.h>
//#define Crashlytics PearlNil
//#define TestFlight PearlNil
#import "MPTypes.h"
#import "MPiOSConfig.h"

Binary file not shown.

After

Width:  |  Height:  |  Size: 660 KiB

BIN
Site/img/objc468x60.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -155,7 +155,7 @@
<!--span class="tip appstore">Great feedback may earn you a free copy for a friend!</span-->
<img src="img/appstore.png" />
</a><br />
<form id="sendtophone">
<!--form id="sendtophone">
<span class="field">
Or send to your phone:<br />
<input type="text" name="email" placeholder="E-mail or phone number" />
@ -164,7 +164,7 @@
<span class="confirm">
Message sent!
</span>
</form>
</form-->
</div>
<h1><a href="."><img class="logo" src="img/iTunesArtwork-Bare.png" /> Master Password</a></h1>
<div class="footnote"><a href="mailto:masterpassword+remove_this@lyndir.com" onclick="_gaq.push(['_trackPageview', '/outbound/mail']);">Contact</a> | <a href="http://www.lyndir.com" onclick="_gaq.push(['_trackPageview', '/outbound/lyndir.com']);">Lyndir</a> | <a href="https://plus.google.com/116256327773442623984/about" rel="publisher" onclick="_gaq.push(['_trackPageview', '/outbound/google+']);">Google+</a></div>
@ -198,7 +198,7 @@
<meta itemprop="price" content="5.99" />
<meta itemprop="priceCurrency" content="USD" />
<a itemprop="url" href="http://itunes.apple.com/app/id510296984">
<img itemprop="image" class="badge" src="img/price.png" />
<!--img itemprop="image" class="badge" src="img/price.png" /-->
</a>
</span>
<img src="img/frontpage_phone.png" />
@ -341,6 +341,8 @@
</section>
<footer>
<a href="http://www.jetbrains.com/objc/" style="display:inline-block; background:url('img/objc468x60.png') no-repeat 10px 50%; margin:0;padding:0;text-decoration:none;text-indent:0;letter-spacing:-0.001em; width:466px; height:58px" alt="Smarter and faster IDE for iOS and Mac OS applications development" title="Smarter and faster IDE for iOS and Mac OS applications development"><span style="margin: 2px 0 0 65px;padding: 0;float: left;font-size: 12px;cursor:pointer; background-image:none;border:0;color: #435570; font-family: trebuchet ms,arial,sans-serif;font-weight: normal;text-align:left;">Developed with</span><span style="margin:0 0 0 200px;padding:18px 0 2px 0; line-height:14px;font-size:15px;cursor:pointer; background-image:none;border:0;display:block; width:265px; color:#435570; font-family: trebuchet ms,arial,sans-serif;font-weight: normal;text-align:left;">Smarter and faster IDE for iOS and<br/>Mac OS applications development</span></a>
<br />&nbsp;<br />
Master Password is a security and productivity product by <a href="http://www.lyndir.com" rel="author" onclick="_gaq.push(['_trackPageview', '/outbound/lyndir.com']);">Lyndir</a>, &copy; 2011.
</footer>
</body>

View File

@ -2,6 +2,8 @@
set -e
cd "${BASH_SOURCE[0]%/*}"
s3cmd sync . s3://masterpassword.lyndir.com/
s3cmd sync . s3://www.masterpasswordapp.com/
nice rsync --partial --progress --delete --sparse --archive --no-owner --no-perms --no-group --chmod=ugo=rwX \
--exclude rate-limit \
. masterpassword.lyndir.com:/usr/local/www/masterpassword.lyndir.com/htdocs/
. satura.lyndir.com:/usr/local/www/masterpassword.lyndir.com/htdocs/