build: fastlane setup

- Adds a configuration called 'Development' to the project, which uses
  manual signing

- Changes the 'Release' configuration to use manual signing

- Adds support for fastlane automation.
  This commit adds 2 lanes:

  - 'test' uses scan to build and run unit tests on the client

  - 'build' unlocks the system's keychain, uses match to sync the
    development certificate and provisioning profile with a private git
    repo, then uses gym to build the development configuration of the
    xcode project

- Adds a .gitignore to Ring/fastlane for undesired fastlane related files

Change-Id: I1bc0eb8cfa20cc536c297ba7ae14292cc66e1d96
diff --git a/Ring/Ring.xcodeproj/project.pbxproj b/Ring/Ring.xcodeproj/project.pbxproj
index 9c4b9e6..110d383 100644
--- a/Ring/Ring.xcodeproj/project.pbxproj
+++ b/Ring/Ring.xcodeproj/project.pbxproj
@@ -1210,7 +1210,7 @@
 				TargetAttributes = {
 					043999F21D1C2D9D00E99CD9 = {
 						CreatedOnToolsVersion = 7.3.1;
-						DevelopmentTeam = KM95526DS8;
+						DevelopmentTeam = MSHYCBXK85;
 						LastSwiftMigration = 0810;
 						ProvisioningStyle = Automatic;
 						SystemCapabilities = {
@@ -1222,11 +1222,13 @@
 					04399A0B1D1C2D9D00E99CD9 = {
 						CreatedOnToolsVersion = 7.3.1;
 						LastSwiftMigration = 0810;
+						ProvisioningStyle = Automatic;
 						TestTargetID = 043999F21D1C2D9D00E99CD9;
 					};
 					04399A161D1C2D9D00E99CD9 = {
 						CreatedOnToolsVersion = 7.3.1;
 						LastSwiftMigration = 0810;
+						ProvisioningStyle = Automatic;
 						TestTargetID = 043999F21D1C2D9D00E99CD9;
 					};
 				};
@@ -1629,7 +1631,7 @@
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				CODE_SIGN_STYLE = Automatic;
-				DEVELOPMENT_TEAM = KM95526DS8;
+				DEVELOPMENT_TEAM = MSHYCBXK85;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(PROJECT_DIR)/Carthage/Build/iOS",
@@ -1659,10 +1661,10 @@
 				CLANG_CXX_LANGUAGE_STANDARD = "c++14";
 				CLANG_CXX_LIBRARY = "compiler-default";
 				CLANG_ENABLE_MODULES = YES;
-				CODE_SIGN_IDENTITY = "iPhone Developer";
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				CODE_SIGN_STYLE = Automatic;
-				DEVELOPMENT_TEAM = KM95526DS8;
+				CODE_SIGN_IDENTITY = "iPhone Distribution";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
+				CODE_SIGN_STYLE = Manual;
+				DEVELOPMENT_TEAM = "";
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(PROJECT_DIR)/Carthage/Build/iOS",
@@ -1748,6 +1750,120 @@
 			};
 			name = Release;
 		};
+		6229B5A51FCDB006006937DF /* Development */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.3;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Development;
+		};
+		6229B5A61FCDB006006937DF /* Development */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_CXX_LANGUAGE_STANDARD = "c++14";
+				CLANG_CXX_LIBRARY = "compiler-default";
+				CLANG_ENABLE_MODULES = YES;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				CODE_SIGN_STYLE = Manual;
+				DEVELOPMENT_TEAM = "";
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/Carthage/Build/iOS",
+				);
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = Ring/RingPrefixHeader.pch;
+				HEADER_SEARCH_PATHS = "$(SRCROOT)/../fat/include";
+				INFOPLIST_FILE = Ring/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.3;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				LIBRARY_SEARCH_PATHS = "$(SRCROOT)/../fat/lib";
+				PRODUCT_BUNDLE_IDENTIFIER = com.savoirfairelinux.ring;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				PROVISIONING_PROFILE = "";
+				PROVISIONING_PROFILE_SPECIFIER = "";
+				SWIFT_OBJC_BRIDGING_HEADER = "Ring/Bridging/Ring-Bridging-Header.h";
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				SWIFT_VERSION = 3.0;
+				VALID_ARCHS = arm64;
+			};
+			name = Development;
+		};
+		6229B5A71FCDB006006937DF /* Development */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				BUNDLE_LOADER = "$(TEST_HOST)";
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/Carthage/Build/iOS",
+				);
+				HEADER_SEARCH_PATHS = "$(SRCROOT)/../fat/include";
+				INFOPLIST_FILE = RingTests/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				LIBRARY_SEARCH_PATHS = "$(SRCROOT)/../fat/lib";
+				PRODUCT_BUNDLE_IDENTIFIER = cx.ring.RingTests;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OBJC_BRIDGING_HEADER = "RingTests/RingTests-Bridging-Header.h";
+				SWIFT_VERSION = 3.0;
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Ring.app/Ring";
+			};
+			name = Development;
+		};
+		6229B5A81FCDB006006937DF /* Development */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = RingUITests/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				PRODUCT_BUNDLE_IDENTIFIER = cx.ring.RingUITest;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 3.0;
+				TEST_TARGET_NAME = Ring;
+			};
+			name = Development;
+		};
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
@@ -1755,6 +1871,7 @@
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				04399A1E1D1C2D9D00E99CD9 /* Debug */,
+				6229B5A51FCDB006006937DF /* Development */,
 				04399A1F1D1C2D9D00E99CD9 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
@@ -1764,6 +1881,7 @@
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				04399A211D1C2D9D00E99CD9 /* Debug */,
+				6229B5A61FCDB006006937DF /* Development */,
 				04399A221D1C2D9D00E99CD9 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
@@ -1773,6 +1891,7 @@
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				04399A241D1C2D9D00E99CD9 /* Debug */,
+				6229B5A71FCDB006006937DF /* Development */,
 				04399A251D1C2D9D00E99CD9 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
@@ -1782,6 +1901,7 @@
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				04399A271D1C2D9D00E99CD9 /* Debug */,
+				6229B5A81FCDB006006937DF /* Development */,
 				04399A281D1C2D9D00E99CD9 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
diff --git a/Ring/fastlane/.gitignore b/Ring/fastlane/.gitignore
new file mode 100644
index 0000000..4296de8
--- /dev/null
+++ b/Ring/fastlane/.gitignore
@@ -0,0 +1,2 @@
+report.xml
+test_output/
diff --git a/Ring/fastlane/Appfile b/Ring/fastlane/Appfile
new file mode 100644
index 0000000..b2dbcec
--- /dev/null
+++ b/Ring/fastlane/Appfile
@@ -0,0 +1,7 @@
+app_identifier "com.savoirfairelinux.ring" # The bundle identifier of your app
+apple_id "mobile@savoirfairelinux.com" # Your Apple email address
+
+team_id "MSHYCBXK85" # Developer Portal Team ID
+
+# you can even provide different app identifiers, Apple IDs and team names per lane:
+# More information: https://docs.fastlane.tools/advanced/#appfile
diff --git a/Ring/fastlane/Fastfile b/Ring/fastlane/Fastfile
new file mode 100644
index 0000000..bbe0982
--- /dev/null
+++ b/Ring/fastlane/Fastfile
@@ -0,0 +1,47 @@
+# Customise this file, documentation can be found here:
+# https://github.com/fastlane/fastlane/tree/master/fastlane/docs
+# All available actions: https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Actions.md
+# can also be listed using the `fastlane actions` command
+
+# Change the syntax highlighting to Ruby
+# All lines starting with a # are ignored when running `fastlane`
+
+# If you want to automatically update fastlane if a new version is available:
+# update_fastlane
+
+# This is the minimum version number required.
+# Update this, if you use features of a newer version
+fastlane_version "2.68.0"
+
+default_platform :ios
+
+platform :ios do
+  desc "Runs all the tests"
+  lane :test do
+    scan
+  end
+
+  desc "Test build without packaging"
+  lane :build do
+    unlock_keychain
+    match(
+      force: true,
+      type: "development"
+    )
+    gym(
+      scheme: "Ring",
+      clean: true,
+      configuration: "Development",
+      export_method: 'development',
+      skip_package_ipa: true
+    )
+  end
+
+  after_all do |lane|
+    # This block is called, only if the executed lane was successful
+  end
+
+  error do |lane, exception|
+    # This block is called, only if the executed lane has failed
+  end
+end
diff --git a/Ring/fastlane/README.md b/Ring/fastlane/README.md
new file mode 100644
index 0000000..3635cb8
--- /dev/null
+++ b/Ring/fastlane/README.md
@@ -0,0 +1,48 @@
+fastlane documentation
+================
+# Installation
+
+Make sure you have the latest version of the Xcode command line tools installed:
+
+```
+xcode-select --install
+```
+
+## Choose your installation method:
+
+<table width="100%" >
+<tr>
+<th width="33%"><a href="http://brew.sh">Homebrew</a></th>
+<th width="33%">Installer Script</th>
+<th width="33%">RubyGems</th>
+</tr>
+<tr>
+<td width="33%" align="center">macOS</td>
+<td width="33%" align="center">macOS</td>
+<td width="33%" align="center">macOS or Linux with Ruby 2.0.0 or above</td>
+</tr>
+<tr>
+<td width="33%"><code>brew cask install fastlane</code></td>
+<td width="33%"><a href="https://download.fastlane.tools">Download the zip file</a>. Then double click on the <code>install</code> script (or run it in a terminal window).</td>
+<td width="33%"><code>sudo gem install fastlane -NV</code></td>
+</tr>
+</table>
+
+# Available Actions
+## iOS
+### ios test
+```
+fastlane ios test
+```
+Runs all the tests
+### ios build
+```
+fastlane ios build
+```
+Test build without packaging
+
+----
+
+This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run.
+More information about fastlane can be found on [fastlane.tools](https://fastlane.tools).
+The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools).
diff --git a/Ring/fastlane/metadata/en-US/description.txt b/Ring/fastlane/metadata/en-US/description.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/en-US/description.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/en-US/keywords.txt b/Ring/fastlane/metadata/en-US/keywords.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/en-US/keywords.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/en-US/marketing_url.txt b/Ring/fastlane/metadata/en-US/marketing_url.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/en-US/marketing_url.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/en-US/name.txt b/Ring/fastlane/metadata/en-US/name.txt
new file mode 100644
index 0000000..0bf5128
--- /dev/null
+++ b/Ring/fastlane/metadata/en-US/name.txt
@@ -0,0 +1 @@
+Ring - a GNU package
diff --git a/Ring/fastlane/metadata/en-US/privacy_url.txt b/Ring/fastlane/metadata/en-US/privacy_url.txt
new file mode 100644
index 0000000..b2c9245
--- /dev/null
+++ b/Ring/fastlane/metadata/en-US/privacy_url.txt
@@ -0,0 +1 @@
+https://ring.cx
diff --git a/Ring/fastlane/metadata/en-US/promotional_text.txt b/Ring/fastlane/metadata/en-US/promotional_text.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/en-US/promotional_text.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/en-US/release_notes.txt b/Ring/fastlane/metadata/en-US/release_notes.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/en-US/release_notes.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/en-US/subtitle.txt b/Ring/fastlane/metadata/en-US/subtitle.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/en-US/subtitle.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/en-US/support_url.txt b/Ring/fastlane/metadata/en-US/support_url.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/en-US/support_url.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/itunes_rating_config.json b/Ring/fastlane/metadata/itunes_rating_config.json
new file mode 100644
index 0000000..717b92a
--- /dev/null
+++ b/Ring/fastlane/metadata/itunes_rating_config.json
@@ -0,0 +1,15 @@
+{
+  "CARTOON_FANTASY_VIOLENCE": 0,
+  "REALISTIC_VIOLENCE": 0,
+  "PROLONGED_GRAPHIC_SADISTIC_REALISTIC_VIOLENCE": 0,
+  "PROFANITY_CRUDE_HUMOR": 0,
+  "MATURE_SUGGESTIVE": 0,
+  "HORROR": 0,
+  "MEDICAL_TREATMENT_INFO": 0,
+  "ALCOHOL_TOBACCO_DRUGS": 0,
+  "GAMBLING": 0,
+  "SEXUAL_CONTENT_NUDITY": 0,
+  "GRAPHIC_SEXUAL_CONTENT_NUDITY": 0,
+  "UNRESTRICTED_WEB_ACCESS": 0,
+  "GAMBLING_CONTESTS": 0
+}
diff --git a/Ring/fastlane/metadata/primary_category.txt b/Ring/fastlane/metadata/primary_category.txt
new file mode 100644
index 0000000..a6bf282
--- /dev/null
+++ b/Ring/fastlane/metadata/primary_category.txt
@@ -0,0 +1 @@
+MZGenre.SocialNetworking
diff --git a/Ring/fastlane/metadata/primary_first_sub_category.txt b/Ring/fastlane/metadata/primary_first_sub_category.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/primary_first_sub_category.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/primary_second_sub_category.txt b/Ring/fastlane/metadata/primary_second_sub_category.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/primary_second_sub_category.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/review_information/demo_password.txt b/Ring/fastlane/metadata/review_information/demo_password.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/review_information/demo_password.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/review_information/demo_user.txt b/Ring/fastlane/metadata/review_information/demo_user.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/review_information/demo_user.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/review_information/email_address.txt b/Ring/fastlane/metadata/review_information/email_address.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/review_information/email_address.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/review_information/first_name.txt b/Ring/fastlane/metadata/review_information/first_name.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/review_information/first_name.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/review_information/last_name.txt b/Ring/fastlane/metadata/review_information/last_name.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/review_information/last_name.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/review_information/notes.txt b/Ring/fastlane/metadata/review_information/notes.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/review_information/notes.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/review_information/phone_number.txt b/Ring/fastlane/metadata/review_information/phone_number.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/review_information/phone_number.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/secondary_category.txt b/Ring/fastlane/metadata/secondary_category.txt
new file mode 100644
index 0000000..2de96ca
--- /dev/null
+++ b/Ring/fastlane/metadata/secondary_category.txt
@@ -0,0 +1 @@
+MZGenre.Utilities
diff --git a/Ring/fastlane/metadata/secondary_first_sub_category.txt b/Ring/fastlane/metadata/secondary_first_sub_category.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/secondary_first_sub_category.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/secondary_second_sub_category.txt b/Ring/fastlane/metadata/secondary_second_sub_category.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Ring/fastlane/metadata/secondary_second_sub_category.txt
@@ -0,0 +1 @@
+
diff --git a/Ring/fastlane/metadata/trade_representative_contact_information/address_line1.txt b/Ring/fastlane/metadata/trade_representative_contact_information/address_line1.txt
new file mode 100644
index 0000000..cdf0bac
--- /dev/null
+++ b/Ring/fastlane/metadata/trade_representative_contact_information/address_line1.txt
@@ -0,0 +1 @@
+7275 Rue Saint-Urbain Bureau 200
diff --git a/Ring/fastlane/metadata/trade_representative_contact_information/city_name.txt b/Ring/fastlane/metadata/trade_representative_contact_information/city_name.txt
new file mode 100644
index 0000000..2c5f207
--- /dev/null
+++ b/Ring/fastlane/metadata/trade_representative_contact_information/city_name.txt
@@ -0,0 +1 @@
+Montréal
diff --git a/Ring/fastlane/metadata/trade_representative_contact_information/country.txt b/Ring/fastlane/metadata/trade_representative_contact_information/country.txt
new file mode 100644
index 0000000..f31571b
--- /dev/null
+++ b/Ring/fastlane/metadata/trade_representative_contact_information/country.txt
@@ -0,0 +1 @@
+Canada
diff --git a/Ring/fastlane/metadata/trade_representative_contact_information/is_displayed_on_app_store.txt b/Ring/fastlane/metadata/trade_representative_contact_information/is_displayed_on_app_store.txt
new file mode 100644
index 0000000..c508d53
--- /dev/null
+++ b/Ring/fastlane/metadata/trade_representative_contact_information/is_displayed_on_app_store.txt
@@ -0,0 +1 @@
+false
diff --git a/Ring/fastlane/metadata/trade_representative_contact_information/postal_code.txt b/Ring/fastlane/metadata/trade_representative_contact_information/postal_code.txt
new file mode 100644
index 0000000..0663ba4
--- /dev/null
+++ b/Ring/fastlane/metadata/trade_representative_contact_information/postal_code.txt
@@ -0,0 +1 @@
+H2R 2Y5
diff --git a/Ring/fastlane/metadata/trade_representative_contact_information/state.txt b/Ring/fastlane/metadata/trade_representative_contact_information/state.txt
new file mode 100644
index 0000000..91602de
--- /dev/null
+++ b/Ring/fastlane/metadata/trade_representative_contact_information/state.txt
@@ -0,0 +1 @@
+Quebec
diff --git a/Ring/fastlane/metadata/trade_representative_contact_information/trade_name.txt b/Ring/fastlane/metadata/trade_representative_contact_information/trade_name.txt
new file mode 100644
index 0000000..e811dfa
--- /dev/null
+++ b/Ring/fastlane/metadata/trade_representative_contact_information/trade_name.txt
@@ -0,0 +1 @@
+Savoir-Faire Linux Inc
diff --git a/Ring/fastlane/screenshots/README.txt b/Ring/fastlane/screenshots/README.txt
new file mode 100644
index 0000000..8b015ec
--- /dev/null
+++ b/Ring/fastlane/screenshots/README.txt
@@ -0,0 +1,7 @@
+Put all screenshots you want to use inside the folder of its language (e.g. en-US).
+The device type will automatically be recognized using the image resolution. Apple TV screenshots
+should be stored in a subdirectory named appleTV with language folders inside of it. iMessage
+screenshots, like Apple TV screenshots, should also be stored in a subdirectory named iMessage
+with language folders inside of it.
+
+The screenshots can be named whatever you want, but keep in mind they are sorted alphabetically.