Fastlane for Android and ios (#165)
This commit is contained in:
parent
4d9e30fb75
commit
1566a79c93
52 changed files with 1427 additions and 119 deletions
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
*.pbxproj -text
|
||||
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -22,6 +22,7 @@ xcuserdata
|
|||
DerivedData
|
||||
*.hmap
|
||||
*.ipa
|
||||
*.apk
|
||||
*.xcuserstate
|
||||
project.xcworkspace
|
||||
|
||||
|
|
@ -52,3 +53,8 @@ Session.vim
|
|||
.netrwhist
|
||||
*~
|
||||
tags
|
||||
|
||||
fastlane/report.xml
|
||||
*.zip
|
||||
server.PID
|
||||
mattermost.keystore
|
||||
|
|
|
|||
58
Makefile
58
Makefile
|
|
@ -1,4 +1,9 @@
|
|||
.PHONY: run run-ios run-android check-style test clean post-install
|
||||
.PHONY: check-ios-target prepare-ios-build build-ios after-ios-build
|
||||
.PHONY: check-android-target prepare-android-build build-android after-android-build
|
||||
|
||||
ios_target := $(filter-out build-ios,$(MAKECMDGOALS))
|
||||
android_target := $(filter-out build-android,$(MAKECMDGOALS))
|
||||
|
||||
.npminstall: package.json
|
||||
@if ! [ $(shell command -v npm) ]; then \
|
||||
|
|
@ -24,7 +29,6 @@ dist/assets: $(BASE_ASSETS) $(OVERRIDE_ASSETS)
|
|||
|
||||
node scripts/make-dist-assets.js
|
||||
|
||||
.PHONY: prepare
|
||||
pre-run: .npminstall dist/assets
|
||||
|
||||
run: run-ios
|
||||
|
|
@ -91,3 +95,55 @@ post-install:
|
|||
sed -i'' -e 's|"./lib/locales": false|"./lib/locales": "./lib/locales"|g' node_modules/intl-messageformat/package.json
|
||||
sed -i'' -e 's|"./lib/locales": false|"./lib/locales": "./lib/locales"|g' node_modules/intl-relativeformat/package.json
|
||||
sed -i'' -e 's|"./locale-data/complete.js": false|"./locale-data/complete.js": "./locale-data/complete.js"|g' node_modules/intl/package.json
|
||||
|
||||
check-ios-target:
|
||||
ifneq ($(ios_target), $(filter $(ios_target), dev beta release))
|
||||
@echo "Try running make build-ios TARGET\nWhere TARGET is one of dev, beta or release"
|
||||
@exit 1
|
||||
endif
|
||||
|
||||
prepare-ios-build:
|
||||
# We need to do this as the react-native packager minifies the output and that is causing issues
|
||||
@sed -i'' -e 's|--dev $$DEV|--dev true|g' ./node_modules/react-native/packager/react-native-xcode.sh
|
||||
|
||||
@node ./node_modules/react-native/local-cli/cli.js start --reset-cache & echo $$! > server.PID
|
||||
|
||||
do-build-ios:
|
||||
@echo "Building ios $(ios_target) app"
|
||||
@cd fastlane && fastlane ios $(ios_target)
|
||||
|
||||
after-ios-build:
|
||||
@echo Cleaning up
|
||||
@sed -i'' -e 's|--dev true|--dev $$DEV|g' ./node_modules/react-native/packager/react-native-xcode.sh
|
||||
@kill -9 `cat server.PID` && rm server.PID
|
||||
|
||||
build-ios: | check-ios-target pre-run check-style prepare-ios-build do-build-ios after-ios-build
|
||||
|
||||
check-android-target:
|
||||
ifneq ($(android_target), $(filter $(android_target), dev beta release))
|
||||
@echo "Try running make build-android TARGET\nWhere TARGET is one of dev, beta or release"
|
||||
@exit 1
|
||||
endif
|
||||
|
||||
prepare-android-build:
|
||||
@rm -rf ./node_modules/react-native/local-cli/templates/HelloWorld
|
||||
@sed -i'' -e 's|def devEnabled = !targetName.toLowerCase().contains("release")|def devEnabled = true|g' ./node_modules/react-native/react.gradle
|
||||
|
||||
do-build-android:
|
||||
@echo "Building android $(android_target) app"
|
||||
@cd fastlane && fastlane android $(android_target)
|
||||
|
||||
after-android-build:
|
||||
@echo Cleaning up
|
||||
@sed -i'' -e 's|def devEnabled = true|def devEnabled = !targetName.toLowerCase().contains("release")|g' ./node_modules/react-native/react.gradle
|
||||
|
||||
build-android: | check-android-target pre-run check-style prepare-android-build do-build-android after-android-build
|
||||
|
||||
dev:
|
||||
@:
|
||||
|
||||
beta:
|
||||
@:
|
||||
|
||||
release:
|
||||
@:
|
||||
|
|
|
|||
|
|
@ -88,15 +88,24 @@ android {
|
|||
buildToolsVersion "23.0.1"
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.mattermost"
|
||||
applicationId "com.mattermost.react.native"
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 22
|
||||
versionCode 1
|
||||
targetSdkVersion 23
|
||||
versionCode 2
|
||||
versionName "1.0"
|
||||
multiDexEnabled true
|
||||
ndk {
|
||||
abiFilters "armeabi-v7a", "x86"
|
||||
}
|
||||
}
|
||||
signingConfigs {
|
||||
release {
|
||||
storeFile file(MATTERMOST_RELEASE_STORE_FILE)
|
||||
storePassword MATTERMOST_RELEASE_PASSWORD
|
||||
keyAlias MATTERMOST_RELEASE_KEY_ALIAS
|
||||
keyPassword MATTERMOST_RELEASE_PASSWORD
|
||||
}
|
||||
}
|
||||
splits {
|
||||
abi {
|
||||
reset()
|
||||
|
|
@ -109,6 +118,7 @@ android {
|
|||
release {
|
||||
minifyEnabled enableProguardInReleaseBuilds
|
||||
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
|
||||
signingConfig signingConfigs.release
|
||||
}
|
||||
}
|
||||
// applicationVariants are e.g. debug, release
|
||||
|
|
@ -127,6 +137,7 @@ android {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
compile project(':react-native-vector-icons')
|
||||
compile project(':react-native-svg')
|
||||
compile fileTree(dir: "libs", include: ["*.jar"])
|
||||
compile "com.android.support:appcompat-v7:23.0.1"
|
||||
|
|
@ -136,6 +147,6 @@ dependencies {
|
|||
// Run this once to be able to run the application with BUCK
|
||||
// puts all compile dependencies into folder libs for BUCK to use
|
||||
task copyDownloadableDepsToLibs(type: Copy) {
|
||||
from configurations.compile
|
||||
into 'libs'
|
||||
from configurations.compile
|
||||
into 'libs'
|
||||
}
|
||||
|
|
|
|||
BIN
android/app/src/main/assets/fonts/Entypo.ttf
Normal file
BIN
android/app/src/main/assets/fonts/Entypo.ttf
Normal file
Binary file not shown.
BIN
android/app/src/main/assets/fonts/EvilIcons.ttf
Normal file
BIN
android/app/src/main/assets/fonts/EvilIcons.ttf
Normal file
Binary file not shown.
BIN
android/app/src/main/assets/fonts/FontAwesome.ttf
Normal file
BIN
android/app/src/main/assets/fonts/FontAwesome.ttf
Normal file
Binary file not shown.
BIN
android/app/src/main/assets/fonts/Foundation.ttf
Normal file
BIN
android/app/src/main/assets/fonts/Foundation.ttf
Normal file
Binary file not shown.
BIN
android/app/src/main/assets/fonts/Ionicons.ttf
Normal file
BIN
android/app/src/main/assets/fonts/Ionicons.ttf
Normal file
Binary file not shown.
BIN
android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf
Normal file
BIN
android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf
Normal file
Binary file not shown.
BIN
android/app/src/main/assets/fonts/MaterialIcons.ttf
Normal file
BIN
android/app/src/main/assets/fonts/MaterialIcons.ttf
Normal file
Binary file not shown.
BIN
android/app/src/main/assets/fonts/Octicons.ttf
Normal file
BIN
android/app/src/main/assets/fonts/Octicons.ttf
Normal file
Binary file not shown.
BIN
android/app/src/main/assets/fonts/SimpleLineIcons.ttf
Normal file
BIN
android/app/src/main/assets/fonts/SimpleLineIcons.ttf
Normal file
Binary file not shown.
BIN
android/app/src/main/assets/fonts/Zocial.ttf
Normal file
BIN
android/app/src/main/assets/fonts/Zocial.ttf
Normal file
Binary file not shown.
|
|
@ -4,11 +4,13 @@ import android.app.Application;
|
|||
import android.util.Log;
|
||||
|
||||
import com.facebook.react.ReactApplication;
|
||||
import com.oblador.vectoricons.VectorIconsPackage;
|
||||
import com.horcrux.svg.RNSvgPackage;
|
||||
import com.facebook.react.ReactInstanceManager;
|
||||
import com.facebook.react.ReactNativeHost;
|
||||
import com.facebook.react.ReactPackage;
|
||||
import com.facebook.react.shell.MainReactPackage;
|
||||
import com.facebook.soloader.SoLoader;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
|
@ -25,6 +27,7 @@ public class MainApplication extends Application implements ReactApplication {
|
|||
protected List<ReactPackage> getPackages() {
|
||||
return Arrays.<ReactPackage>asList(
|
||||
new MainReactPackage(),
|
||||
new VectorIconsPackage(),
|
||||
new RNSvgPackage()
|
||||
);
|
||||
}
|
||||
|
|
@ -32,6 +35,12 @@ public class MainApplication extends Application implements ReactApplication {
|
|||
|
||||
@Override
|
||||
public ReactNativeHost getReactNativeHost() {
|
||||
return mReactNativeHost;
|
||||
return mReactNativeHost;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
SoLoader.init(this, /* native exopackage */ false);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
rootProject.name = 'Mattermost'
|
||||
include ':react-native-vector-icons'
|
||||
project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android')
|
||||
|
||||
include ':app'
|
||||
include ':react-native-svg'
|
||||
|
|
|
|||
|
|
@ -5,10 +5,11 @@ import React from 'react';
|
|||
import {Provider} from 'react-redux';
|
||||
|
||||
import configureStore from 'app/store';
|
||||
import initialState from 'app/initial_state';
|
||||
import Router from 'app/navigation/router';
|
||||
import RootLayout from 'app/layouts/root_layout/root_layout_container';
|
||||
|
||||
const store = configureStore();
|
||||
const store = configureStore(initialState);
|
||||
|
||||
export default class Mattermost extends React.Component {
|
||||
render() {
|
||||
|
|
|
|||
395
fastlane/Fastfile
Normal file
395
fastlane/Fastfile
Normal file
|
|
@ -0,0 +1,395 @@
|
|||
update_fastlane
|
||||
fastlane_version '2.9.0'
|
||||
skip_docs
|
||||
|
||||
platform :ios do
|
||||
before_all do |lane|
|
||||
if lane == :beta or lane == :release
|
||||
ensure_git_branch(
|
||||
branch: 'master'
|
||||
)
|
||||
sh "git checkout -b ios-#{lane}"
|
||||
end
|
||||
end
|
||||
|
||||
after_all do |lane|
|
||||
if lane == :beta or lane == :release
|
||||
reset_git_repo(
|
||||
force: true,
|
||||
skip_clean: true
|
||||
)
|
||||
|
||||
sh 'git checkout master'
|
||||
sh "git branch -D ios-#{lane}"
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Build Release file'
|
||||
desc 'This will also make sure the profile is up to date'
|
||||
lane :dev do
|
||||
match(type: 'adhoc')
|
||||
|
||||
build_ios({
|
||||
release: false,
|
||||
increment_build: false,
|
||||
ensure_git_status_clean: false
|
||||
})
|
||||
end
|
||||
|
||||
desc 'Submit a new Beta Build to Apple TestFlight'
|
||||
desc 'This will also make sure the profile is up to date'
|
||||
lane :beta do
|
||||
match(type: 'appstore')
|
||||
|
||||
build_ios({
|
||||
release: true,
|
||||
increment_build: true,
|
||||
ensure_git_status_clean: true,
|
||||
branch_name: 'ios-beta'
|
||||
})
|
||||
|
||||
# pilot
|
||||
|
||||
if ENV['MATTERMOST_WEBHOOK_URL']
|
||||
testflight_url = ENV['TESTFLIGHT_URL']
|
||||
send_message_for_ios(
|
||||
'#### New iOS beta published on TestFlight',
|
||||
'',
|
||||
"#ios-beta in #{testflight_url.nil? ? 'TestFlight' : "[TestFlight](#{testflight_url})"} on [#{Time.new.utc.to_s}]",
|
||||
[],
|
||||
true
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Deploy a new version to the App Store'
|
||||
lane :release do
|
||||
match(type: 'appstore')
|
||||
|
||||
# snapshot
|
||||
|
||||
build_ios({
|
||||
release: true,
|
||||
increment_build: true,
|
||||
ensure_git_status_clean: true,
|
||||
branch_name: 'ios-release'
|
||||
})
|
||||
|
||||
deliver(force: true)
|
||||
|
||||
# frameit
|
||||
|
||||
if ENV['MATTERMOST_WEBHOOK_URL']
|
||||
appstore_url = ENV['APPSTORE_URL']
|
||||
send_message_for_ios(
|
||||
'#### New iOS release published on the App Store',
|
||||
'',
|
||||
"#ios-release in #{appstore_url.nil? ? 'App Store' : "[App Store](#{appstore_url})"} on [#{Time.new.utc.to_s}]",
|
||||
[],
|
||||
true
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
error do |lane, exception|
|
||||
if ENV['MATTERMOST_WEBHOOK_URL']
|
||||
send_message_for_ios('', 'Unsuccessful Build', exception.message, [:lane], false)
|
||||
end
|
||||
end
|
||||
|
||||
def build_ios(options)
|
||||
if options[:ensure_git_status_clean]
|
||||
ensure_git_status_clean
|
||||
end
|
||||
|
||||
if options[:increment_build]
|
||||
increment_build_number(
|
||||
xcodeproj: './ios/Mattermost.xcodeproj',
|
||||
build_number: latest_testflight_build_number + 1
|
||||
)
|
||||
commit_version_bump(xcodeproj: './ios/Mattermost.xcodeproj')
|
||||
commit = last_git_commit
|
||||
|
||||
push_to_git_remote(
|
||||
remote: 'origin',
|
||||
local_branch: options[:branch_name],
|
||||
force: false,
|
||||
tags: false
|
||||
)
|
||||
|
||||
unless ENV['GITHUB_TOKEN'].nil?
|
||||
create_pull_request(
|
||||
api_token: ENV['GITHUB_TOKEN'],
|
||||
repo: 'mattermost/mattermost-mobile',
|
||||
head: "mattermost:#{options[:branch_name]}",
|
||||
base: 'master',
|
||||
title: "IOS #{commit[:message]}"
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
update_project_team(
|
||||
path: './ios/Mattermost.xcodeproj',
|
||||
teamid: ENV['FASTLANE_TEAM_ID']
|
||||
)
|
||||
|
||||
gym(
|
||||
clean: true,
|
||||
scheme: 'Mattermost',
|
||||
configuration: (options[:release] ? 'Release' : 'Debug'),
|
||||
project: './ios/Mattermost.xcodeproj'
|
||||
)
|
||||
end
|
||||
|
||||
def send_message_for_ios(pretext, title, msg, default_payloads, success)
|
||||
version = get_version_number(xcodeproj: './ios/Mattermost.xcodeproj')
|
||||
build_number = get_build_number(xcodeproj: './ios/Mattermost.xcodeproj')
|
||||
mattermost(
|
||||
pretext: pretext,
|
||||
message: msg,
|
||||
default_payloads: default_payloads,
|
||||
username: 'Fastlane',
|
||||
icon_url: 'https://s3-eu-west-1.amazonaws.com/fastlane.tools/fastlane.png',
|
||||
payload: {},
|
||||
attachment_properties: {
|
||||
title: title,
|
||||
thumb_url: 'https://lh3.googleusercontent.com/Nkbo3QohCOU8bGqSYtwB88o03XxUwRAxRHNdXPB9zFvYFzTwD7naYa-GYJaelBp-OIc=w300',
|
||||
fields: [{
|
||||
title: 'Version',
|
||||
value: version,
|
||||
short: true
|
||||
},
|
||||
{
|
||||
title: 'Build Number',
|
||||
value: build_number,
|
||||
short: true
|
||||
},
|
||||
{
|
||||
title: 'Built by',
|
||||
value: 'Jenkins',
|
||||
short: true
|
||||
}]
|
||||
},
|
||||
success: success
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
platform :android do
|
||||
before_all do |lane|
|
||||
if lane == :beta or lane == :release
|
||||
ensure_git_branch(
|
||||
branch: 'master'
|
||||
)
|
||||
sh "git checkout -b android-#{lane}"
|
||||
end
|
||||
end
|
||||
|
||||
after_all do |lane|
|
||||
if lane == :beta or lane == :release
|
||||
reset_git_repo(
|
||||
force: true,
|
||||
skip_clean: true
|
||||
)
|
||||
sh 'git checkout master'
|
||||
sh "git branch -D android-#{lane}"
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Build Release file'
|
||||
lane :dev do
|
||||
build_android({release: true})
|
||||
end
|
||||
|
||||
desc 'Submit a new Beta Build to Google Play'
|
||||
lane :beta do
|
||||
build_android({
|
||||
release: true,
|
||||
increment_build: true,
|
||||
ensure_git_status_clean: true,
|
||||
branch_name: 'android-beta'
|
||||
})
|
||||
|
||||
supply(
|
||||
track: 'beta',
|
||||
apk: "#{lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]}",
|
||||
)
|
||||
|
||||
if ENV['MATTERMOST_WEBHOOK_URL']
|
||||
beta_url = ENV['GOOGLE_PLAY_BETA_URL']
|
||||
send_message_for_android(
|
||||
'#### New Android beta published for Beta Testing',
|
||||
'',
|
||||
"#android-beta in #{beta_url.nil? ? 'Google Play Beta Program' : "[Google Play Beta Program](#{beta_url})"} on [#{Time.new.utc.to_s}]",
|
||||
[],
|
||||
true
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Deploy a new version to Google Play'
|
||||
lane :release do
|
||||
build_android({
|
||||
release: true,
|
||||
increment_build: true,
|
||||
ensure_git_status_clean: true,
|
||||
branch_name: 'android-release'
|
||||
})
|
||||
|
||||
supply(
|
||||
track: "production",
|
||||
apk: "#{lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]}",
|
||||
)
|
||||
|
||||
if ENV['MATTERMOST_WEBHOOK_URL']
|
||||
google_play_url = ENV['GOOGLE_PLAY_URL']
|
||||
send_message_for_android(
|
||||
'#### New Android beta published for Production',
|
||||
'',
|
||||
"#android-beta in #{google_play_url.nil? ? 'Google Play' : "[Google Play](#{google_play_url})"} on [#{Time.new.utc.to_s}]",
|
||||
[],
|
||||
true
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
error do |lane, exception|
|
||||
if ENV['MATTERMOST_WEBHOOK_URL']
|
||||
send_message_for_android('', 'Unsuccessful Build', exception.message, [:lane], false)
|
||||
end
|
||||
end
|
||||
|
||||
def build_android(options)
|
||||
if options[:ensure_git_status_clean]
|
||||
ensure_git_status_clean
|
||||
end
|
||||
|
||||
if options[:increment_build]
|
||||
increment_version_code(app_folder_name: 'android/app')
|
||||
commit_android_version_bump(
|
||||
app_folder_name: 'android/app',
|
||||
force: true
|
||||
)
|
||||
commit = last_git_commit
|
||||
|
||||
push_to_git_remote(
|
||||
remote: 'origin',
|
||||
local_branch: options[:branch_name],
|
||||
force: false,
|
||||
tags: false
|
||||
)
|
||||
|
||||
unless ENV['GITHUB_TOKEN'].nil?
|
||||
create_pull_request(
|
||||
api_token: ENV['GITHUB_TOKEN'],
|
||||
repo: 'mattermost/mattermost-mobile',
|
||||
head: "mattermost:#{options[:branch_name]}",
|
||||
base: 'master',
|
||||
title: "IOS #{commit[:message]}"
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
gradle(
|
||||
task: 'assemble',
|
||||
build_type: (options[:release] ? 'Release' : 'Debug'),
|
||||
project_dir: 'android/'
|
||||
)
|
||||
end
|
||||
|
||||
def get_version_code(app_folder_name)
|
||||
version_code = '0'
|
||||
|
||||
Dir.glob("../#{app_folder_name}/build.gradle") do |path|
|
||||
begin
|
||||
UI.message(" -> Found a build.gradle file at path: (#{path})!")
|
||||
file = File.new(path, 'r')
|
||||
while (line = file.gets)
|
||||
if line.include? 'versionCode'
|
||||
versionComponents = line.strip.split(' ')
|
||||
version_code = versionComponents[1].tr("\"",'')
|
||||
break
|
||||
end
|
||||
end
|
||||
file.close
|
||||
rescue => err
|
||||
UI.error("An exception occured while reading gradle file: #{err}")
|
||||
err
|
||||
end
|
||||
end
|
||||
|
||||
if version_code == '0'
|
||||
UI.user_error!("Impossible to find the version code in the current project folder #{app_folder_name} 😭")
|
||||
else
|
||||
# Store the version name in the shared hash
|
||||
Actions.lane_context['VERSION_CODE']=version_code
|
||||
UI.success("👍 Version name found: #{version_code}")
|
||||
end
|
||||
|
||||
return version_code
|
||||
end
|
||||
|
||||
def get_version_name(app_folder_name)
|
||||
version_name = '0'
|
||||
|
||||
Dir.glob("../#{app_folder_name}/build.gradle") do |path|
|
||||
begin
|
||||
file = File.new(path, 'r')
|
||||
while (line = file.gets)
|
||||
if line.include? 'versionName'
|
||||
versionComponents = line.strip.split(' ')
|
||||
version_name = versionComponents[1].tr("\"",'')
|
||||
break
|
||||
end
|
||||
end
|
||||
file.close
|
||||
rescue => err
|
||||
UI.error("An exception occured while readinf gradle file: #{err}")
|
||||
err
|
||||
end
|
||||
end
|
||||
|
||||
if version_name == '0'
|
||||
UI.user_error!("Impossible to find the version name in the current project folder #{app_folder_name} 😭")
|
||||
else
|
||||
# Store the version name in the shared hash
|
||||
Actions.lane_context['VERSION_NAME']=version_name
|
||||
UI.success("👍 Version name found: #{version_name}")
|
||||
end
|
||||
|
||||
return version_name
|
||||
end
|
||||
|
||||
def send_message_for_android(pretext, title, msg, default_payloads, success)
|
||||
build_number = get_version_code('android/app')
|
||||
version_name = get_version_name('android/app')
|
||||
mattermost(
|
||||
pretext: pretext,
|
||||
message: msg,
|
||||
default_payloads: default_payloads,
|
||||
username: 'Fastlane',
|
||||
icon_url: 'https://s3-eu-west-1.amazonaws.com/fastlane.tools/fastlane.png',
|
||||
payload: {},
|
||||
attachment_properties: {
|
||||
title: title,
|
||||
thumb_url: 'http://www.concretesolutions.com.br/blog/wp-content/uploads/2015/04/Android1.png',
|
||||
fields: [{
|
||||
title: 'Version',
|
||||
value: version_name,
|
||||
short: true
|
||||
},
|
||||
{
|
||||
title: 'Build Number',
|
||||
value: build_number,
|
||||
short: true
|
||||
},
|
||||
{
|
||||
title: 'Built by',
|
||||
value: 'Jenkins',
|
||||
short: true
|
||||
}]
|
||||
},
|
||||
success: success
|
||||
)
|
||||
end
|
||||
end
|
||||
6
fastlane/Gemfile
Normal file
6
fastlane/Gemfile
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
source "https://rubygems.org"
|
||||
|
||||
gem "fastlane"
|
||||
|
||||
plugins_path = File.join(File.dirname(__FILE__), '.', 'Pluginfile')
|
||||
eval(File.read(plugins_path), binding) if File.exist?(plugins_path)
|
||||
151
fastlane/Gemfile.lock
Normal file
151
fastlane/Gemfile.lock
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
CFPropertyList (2.3.4)
|
||||
activesupport (4.2.7.1)
|
||||
i18n (~> 0.7)
|
||||
json (~> 1.7, >= 1.7.7)
|
||||
minitest (~> 5.1)
|
||||
thread_safe (~> 0.3, >= 0.3.4)
|
||||
tzinfo (~> 1.1)
|
||||
addressable (2.5.0)
|
||||
public_suffix (~> 2.0, >= 2.0.2)
|
||||
babosa (1.0.2)
|
||||
claide (1.0.1)
|
||||
colored (1.2)
|
||||
commander (4.4.3)
|
||||
highline (~> 1.7.2)
|
||||
domain_name (0.5.20161129)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
dotenv (2.1.2)
|
||||
excon (0.54.0)
|
||||
faraday (0.11.0)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
faraday-cookie_jar (0.0.6)
|
||||
faraday (>= 0.7.4)
|
||||
http-cookie (~> 1.0.0)
|
||||
faraday_middleware (0.11.0)
|
||||
faraday (>= 0.7.4, < 1.0)
|
||||
fastimage (2.0.1)
|
||||
addressable (~> 2)
|
||||
fastlane (2.9.0)
|
||||
activesupport (< 5)
|
||||
addressable (>= 2.3, < 3.0.0)
|
||||
babosa (>= 1.0.2, < 2.0.0)
|
||||
bundler (~> 1.12)
|
||||
colored
|
||||
commander (>= 4.4.0, < 5.0.0)
|
||||
dotenv (>= 2.1.1, < 3.0.0)
|
||||
excon (>= 0.45.0, < 1.0.0)
|
||||
faraday (~> 0.9)
|
||||
faraday-cookie_jar (~> 0.0.6)
|
||||
faraday_middleware (~> 0.9)
|
||||
fastimage (>= 1.6)
|
||||
gh_inspector (>= 1.0.1, < 2.0.0)
|
||||
google-api-client (~> 0.9.2)
|
||||
highline (>= 1.7.2, < 2.0.0)
|
||||
json (< 3.0.0)
|
||||
mini_magick (~> 4.5.1)
|
||||
multi_json
|
||||
multi_xml (~> 0.5)
|
||||
multipart-post (~> 2.0.0)
|
||||
plist (>= 3.1.0, < 4.0.0)
|
||||
rubyzip (>= 1.1.0, < 2.0.0)
|
||||
security (= 0.1.3)
|
||||
slack-notifier (>= 1.3, < 2.0.0)
|
||||
terminal-notifier (>= 1.6.2, < 2.0.0)
|
||||
terminal-table (>= 1.4.5, < 2.0.0)
|
||||
word_wrap (~> 1.0.0)
|
||||
xcodeproj (>= 0.20, < 2.0.0)
|
||||
xcpretty (>= 0.2.4, < 1.0.0)
|
||||
xcpretty-travis-formatter (>= 0.0.3)
|
||||
fastlane-plugin-commit_android_version_bump (0.1.3)
|
||||
fastlane-plugin-increment_version_code (0.3.1)
|
||||
gh_inspector (1.0.3)
|
||||
google-api-client (0.9.20)
|
||||
addressable (~> 2.3)
|
||||
googleauth (~> 0.5)
|
||||
httpclient (~> 2.7)
|
||||
hurley (~> 0.1)
|
||||
memoist (~> 0.11)
|
||||
mime-types (>= 1.6)
|
||||
representable (~> 2.3.0)
|
||||
retriable (~> 2.0)
|
||||
googleauth (0.5.1)
|
||||
faraday (~> 0.9)
|
||||
jwt (~> 1.4)
|
||||
logging (~> 2.0)
|
||||
memoist (~> 0.12)
|
||||
multi_json (~> 1.11)
|
||||
os (~> 0.9)
|
||||
signet (~> 0.7)
|
||||
highline (1.7.8)
|
||||
http-cookie (1.0.3)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
hurley (0.2)
|
||||
i18n (0.7.0)
|
||||
json (1.8.6)
|
||||
jwt (1.5.6)
|
||||
little-plugger (1.1.4)
|
||||
logging (2.1.0)
|
||||
little-plugger (~> 1.1)
|
||||
multi_json (~> 1.10)
|
||||
memoist (0.15.0)
|
||||
mime-types (3.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2016.0521)
|
||||
mini_magick (4.5.1)
|
||||
minitest (5.10.1)
|
||||
multi_json (1.12.1)
|
||||
multi_xml (0.6.0)
|
||||
multipart-post (2.0.0)
|
||||
nanaimo (0.2.3)
|
||||
os (0.9.6)
|
||||
plist (3.2.0)
|
||||
public_suffix (2.0.5)
|
||||
representable (2.3.0)
|
||||
uber (~> 0.0.7)
|
||||
retriable (2.1.0)
|
||||
rouge (1.11.1)
|
||||
rubyzip (1.2.0)
|
||||
security (0.1.3)
|
||||
signet (0.7.3)
|
||||
addressable (~> 2.3)
|
||||
faraday (~> 0.9)
|
||||
jwt (~> 1.5)
|
||||
multi_json (~> 1.10)
|
||||
slack-notifier (1.5.1)
|
||||
terminal-notifier (1.7.1)
|
||||
terminal-table (1.7.3)
|
||||
unicode-display_width (~> 1.1.1)
|
||||
thread_safe (0.3.5)
|
||||
tzinfo (1.2.2)
|
||||
thread_safe (~> 0.1)
|
||||
uber (0.0.15)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.7.2)
|
||||
unicode-display_width (1.1.3)
|
||||
word_wrap (1.0.0)
|
||||
xcodeproj (1.4.2)
|
||||
CFPropertyList (~> 2.3.3)
|
||||
activesupport (>= 3)
|
||||
claide (>= 1.0.1, < 2.0)
|
||||
colored (~> 1.2)
|
||||
nanaimo (~> 0.2.3)
|
||||
xcpretty (0.2.4)
|
||||
rouge (~> 1.8)
|
||||
xcpretty-travis-formatter (0.0.4)
|
||||
xcpretty (~> 0.2, >= 0.0.7)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
fastlane
|
||||
fastlane-plugin-commit_android_version_bump
|
||||
fastlane-plugin-increment_version_code
|
||||
|
||||
BUNDLED WITH
|
||||
1.13.7
|
||||
6
fastlane/Pluginfile
Normal file
6
fastlane/Pluginfile
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# Autogenerated by fastlane
|
||||
#
|
||||
# Ensure this file is checked in to source control!
|
||||
|
||||
gem 'fastlane-plugin-increment_version_code'
|
||||
gem 'fastlane-plugin-commit_android_version_bump'
|
||||
57
fastlane/README.md
Normal file
57
fastlane/README.md
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
fastlane documentation
|
||||
================
|
||||
# Installation
|
||||
```
|
||||
sudo gem install fastlane
|
||||
```
|
||||
# Available Actions
|
||||
## iOS
|
||||
### ios dev
|
||||
```
|
||||
fastlane ios dev
|
||||
```
|
||||
Build Release file
|
||||
|
||||
This will also make sure the profile is up to date
|
||||
### ios beta
|
||||
```
|
||||
fastlane ios beta
|
||||
```
|
||||
Submit a new Beta Build to Apple TestFlight
|
||||
|
||||
This will also make sure the profile is up to date
|
||||
### ios release
|
||||
```
|
||||
fastlane ios release
|
||||
```
|
||||
Deploy a new version to the App Store
|
||||
### ios build
|
||||
```
|
||||
fastlane ios build
|
||||
```
|
||||
|
||||
|
||||
----
|
||||
|
||||
## Android
|
||||
### android dev
|
||||
```
|
||||
fastlane android dev
|
||||
```
|
||||
|
||||
### android beta
|
||||
```
|
||||
fastlane android beta
|
||||
```
|
||||
|
||||
### android release
|
||||
```
|
||||
fastlane android release
|
||||
```
|
||||
|
||||
|
||||
----
|
||||
|
||||
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 [https://fastlane.tools](https://fastlane.tools).
|
||||
The documentation of fastlane can be found on [GitHub](https://github.com/fastlane/fastlane/tree/master/fastlane).
|
||||
251
fastlane/actions/mattermost.rb
Normal file
251
fastlane/actions/mattermost.rb
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
# rubocop:disable Style/CaseEquality
|
||||
# rubocop:disable Style/MultilineTernaryOperator
|
||||
# rubocop:disable Style/NestedTernaryOperator
|
||||
module Fastlane
|
||||
module Actions
|
||||
class MattermostAction < Action
|
||||
def self.is_supported?(platform)
|
||||
true
|
||||
end
|
||||
|
||||
# As there is a text limit in the notifications, we are
|
||||
# usually interested in the last part of the message
|
||||
# e.g. for tests
|
||||
def self.trim_message(message)
|
||||
# We want the last 7000 characters, instead of the first 7000, as the error is at the bottom
|
||||
start_index = [message.length - 7000, 0].max
|
||||
message = message[start_index..-1]
|
||||
message
|
||||
end
|
||||
|
||||
def self.run(options)
|
||||
require 'slack-notifier'
|
||||
|
||||
options[:message] = self.trim_message(options[:message].to_s || '')
|
||||
options[:message] = Slack::Notifier::LinkFormatter.format(options[:message])
|
||||
|
||||
notifier = Slack::Notifier.new(options[:mattermost_url])
|
||||
|
||||
notifier.username = options[:overwrite_webhook_username_and_icon] ? nil : options[:username]
|
||||
icon_url = options[:overwrite_webhook_username_and_icon] ? nil : options[:icon_url]
|
||||
|
||||
if options[:channel].to_s.length > 0
|
||||
notifier.channel = options[:channel]
|
||||
notifier.channel = ('#' + notifier.channel) unless ['#', '@'].include?(notifier.channel[0]) # send message to channel by default
|
||||
end
|
||||
|
||||
mattermost_attachment = generate_mattermost_attachments(options)
|
||||
|
||||
return [notifier, mattermost_attachment] if Helper.is_test? # tests will verify the mattermost attachments and other properties
|
||||
|
||||
result = notifier.ping '',
|
||||
icon_url: icon_url,
|
||||
attachments: [mattermost_attachment]
|
||||
|
||||
if result.code.to_i == 200
|
||||
UI.success('Successfully sent Mattermost notification')
|
||||
else
|
||||
UI.verbose(result)
|
||||
UI.user_error!("Error pushing Mattermost message, maybe the integration has no permission to post on this channel? Try removing the channel parameter in your Fastfile.")
|
||||
end
|
||||
end
|
||||
|
||||
def self.description
|
||||
"Send a success/error message to your Mattermost channel"
|
||||
end
|
||||
|
||||
def self.available_options
|
||||
[
|
||||
FastlaneCore::ConfigItem.new(key: :pretext,
|
||||
env_name: "MATTERMOST_PRETEXT",
|
||||
description: "An optional line of text that will be shown above the attachment. This supports the standard Mattermost markup language",
|
||||
optional: true),
|
||||
FastlaneCore::ConfigItem.new(key: :message,
|
||||
env_name: "MATTERMOST_MESSAGE",
|
||||
description: "The message that should be displayed on Mattermost. This supports the standard Mattermost markup language",
|
||||
optional: true),
|
||||
FastlaneCore::ConfigItem.new(key: :channel,
|
||||
env_name: "MATTERMOST_CHANNEL",
|
||||
description: "channel or @username",
|
||||
optional: true),
|
||||
FastlaneCore::ConfigItem.new(key: :overwrite_webhook_username_and_icon,
|
||||
env_name: "MATTERMOST_USE_WEBHOOK_CONFIGURED_USERNAME_AND_ICON",
|
||||
description: "Use webook's default username and icon settings? (true/false)",
|
||||
default_value: false,
|
||||
is_string: false,
|
||||
optional: true),
|
||||
FastlaneCore::ConfigItem.new(key: :mattermost_url,
|
||||
env_name: "MATTERMOST_URL",
|
||||
sensitive: true,
|
||||
description: "Create an Incoming WebHook for your Mattermost channel",
|
||||
verify_block: proc do |value|
|
||||
UI.user_error!("Invalid URL, must start with https:// or http://") unless value.start_with? "https://" or value.start_with? "http://"
|
||||
end),
|
||||
FastlaneCore::ConfigItem.new(key: :username,
|
||||
env_name: "MATTERMOST_USERNAME",
|
||||
description: "Overrides the webook's username property if overwrite_webhook_username_and_icon is false",
|
||||
default_value: "fastlane",
|
||||
is_string: true,
|
||||
optional: true),
|
||||
FastlaneCore::ConfigItem.new(key: :icon_url,
|
||||
env_name: "MATTERMOST_ICON_URL",
|
||||
description: "Overrides the webook's image property if overwrite_webhook_username_and_icon is false",
|
||||
default_value: "https://s3-eu-west-1.amazonaws.com/fastlane.tools/fastlane.png",
|
||||
is_string: true,
|
||||
optional: true),
|
||||
FastlaneCore::ConfigItem.new(key: :payload,
|
||||
env_name: "MATTERMOST_PAYLOAD",
|
||||
description: "Add additional information to this post. payload must be a hash containg any key with any value",
|
||||
default_value: {},
|
||||
is_string: false),
|
||||
FastlaneCore::ConfigItem.new(key: :default_payloads,
|
||||
env_name: "MATTERMOST_DEFAULT_PAYLOADS",
|
||||
description: "Remove some of the default payloads. More information about the available payloads on GitHub",
|
||||
optional: true,
|
||||
is_string: false),
|
||||
FastlaneCore::ConfigItem.new(key: :attachment_properties,
|
||||
env_name: "MATTERMOST_ATTACHMENT_PROPERTIES",
|
||||
description: "Merge additional properties in the Mattermost attachment, see https://docs.mattermost.com/developer/message-attachments.html",
|
||||
default_value: {},
|
||||
is_string: false),
|
||||
FastlaneCore::ConfigItem.new(key: :success,
|
||||
env_name: "MATTERMOST_SUCCESS",
|
||||
description: "Was this build successful? (true/false)",
|
||||
optional: true,
|
||||
default_value: true,
|
||||
is_string: false)
|
||||
]
|
||||
end
|
||||
|
||||
def self.author
|
||||
"Mattermost base on the Slack action by KrauseFx"
|
||||
end
|
||||
|
||||
def self.example_code
|
||||
[
|
||||
'mattermost(message: "App successfully released!")',
|
||||
'mattermost(
|
||||
message: "App successfully released!",
|
||||
channel: "channel", # Optional, by default will post to the default channel configured for the POST URL.
|
||||
success: true, # Optional, defaults to true.
|
||||
payload: { # Optional, lets you specify any number of your own Mattermost attachments.
|
||||
"Build Date" => Time.new.to_s,
|
||||
"Built by" => "Jenkins",
|
||||
},
|
||||
default_payloads: [:git_branch, :git_author], # Optional, lets you specify a whitelist of default payloads to include. Pass an empty array to suppress all the default payloads.
|
||||
# Don\'t add this key, or pass nil, if you want all the default payloads. The available default payloads are: `lane`, `test_result`, `git_branch`, `git_author`, `last_git_commit_message`.
|
||||
attachment_properties: { # Optional, lets you specify any other properties available for attachments in the Mattermost API (see https://docs.mattermost.com/developer/message-attachments.html).
|
||||
# This hash is deep merged with the existing properties set using the other properties above. This allows your own fields properties to be appended to the existing fields that were created using the `payload` property for instance.
|
||||
thumb_url: "http://example.com/path/to/thumb.png",
|
||||
fields: [{
|
||||
title: "My Field",
|
||||
value: "My Value",
|
||||
short: true
|
||||
}]
|
||||
}
|
||||
)'
|
||||
]
|
||||
end
|
||||
|
||||
def self.category
|
||||
:notifications
|
||||
end
|
||||
|
||||
def self.details
|
||||
"Create an Incoming WebHook and export this as `MATTERMOST_URL`. Can send a message to **channel** (by default), a direct message to **@username** or a message to a private group **group** with success (green) or failure (red) status."
|
||||
end
|
||||
|
||||
#####################################################
|
||||
# @!group Helper
|
||||
#####################################################
|
||||
|
||||
def self.generate_mattermost_attachments(options)
|
||||
color = (options[:success] ? 'good' : 'danger')
|
||||
should_add_payload = ->(payload_name) { options[:default_payloads].nil? || options[:default_payloads].join(" ").include?(payload_name.to_s) }
|
||||
|
||||
mattermost_attachment = {
|
||||
fallback: options[:message],
|
||||
pretext: options[:pretext],
|
||||
text: options[:message],
|
||||
color: color,
|
||||
fields: []
|
||||
}
|
||||
|
||||
# custom user payloads
|
||||
mattermost_attachment[:fields] += options[:payload].map do |k, v|
|
||||
{
|
||||
title: k.to_s,
|
||||
value: Slack::Notifier::LinkFormatter.format(v.to_s),
|
||||
short: false
|
||||
}
|
||||
end
|
||||
|
||||
# Add the lane to the Mattermost message
|
||||
# This might be nil, if mattermost is called as "one-off" action
|
||||
if should_add_payload[:lane] && Actions.lane_context[Actions::SharedValues::LANE_NAME]
|
||||
mattermost_attachment[:fields] << {
|
||||
title: 'Lane',
|
||||
value: Actions.lane_context[Actions::SharedValues::LANE_NAME],
|
||||
short: true
|
||||
}
|
||||
end
|
||||
|
||||
# test_result
|
||||
if should_add_payload[:test_result]
|
||||
mattermost_attachment[:fields] << {
|
||||
title: 'Result',
|
||||
value: (options[:success] ? 'Success' : 'Error'),
|
||||
short: true
|
||||
}
|
||||
end
|
||||
|
||||
# git branch
|
||||
if Actions.git_branch && should_add_payload[:git_branch]
|
||||
mattermost_attachment[:fields] << {
|
||||
title: 'Git Branch',
|
||||
value: Actions.git_branch,
|
||||
short: true
|
||||
}
|
||||
end
|
||||
|
||||
# git_author
|
||||
if Actions.git_author_email && should_add_payload[:git_author]
|
||||
if FastlaneCore::Env.truthy?('FASTLANE_MATTERMOST_HIDE_AUTHOR_ON_SUCCESS') && options[:success]
|
||||
# We only show the git author if the build failed
|
||||
else
|
||||
mattermost_attachment[:fields] << {
|
||||
title: 'Git Author',
|
||||
value: Actions.git_author_email,
|
||||
short: true
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
# last_git_commit
|
||||
if Actions.last_git_commit_message && should_add_payload[:last_git_commit]
|
||||
mattermost_attachment[:fields] << {
|
||||
title: 'Git Commit',
|
||||
value: Actions.last_git_commit_message,
|
||||
short: false
|
||||
}
|
||||
end
|
||||
|
||||
# merge additional properties
|
||||
deep_merge(mattermost_attachment, options[:attachment_properties])
|
||||
end
|
||||
|
||||
# Adapted from https://stackoverflow.com/a/30225093/158525
|
||||
def self.deep_merge(a, b)
|
||||
merger = proc do |key, v1, v2|
|
||||
Hash === v1 && Hash === v2 ?
|
||||
v1.merge(v2, &merger) : Array === v1 && Array === v2 ?
|
||||
v1 | v2 : [:undefined, nil, :nil].include?(v2) ? v1 : v2
|
||||
end
|
||||
a.merge(b, &merger)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
# rubocop:enable Style/CaseEquality
|
||||
# rubocop:enable Style/MultilineTernaryOperator
|
||||
# rubocop:enable Style/NestedTernaryOperator
|
||||
13
fastlane/metadata/android/en-US/full_description.txt
Normal file
13
fastlane/metadata/android/en-US/full_description.txt
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
Mattermost is secure, workplace messaging from behind your firewall.
|
||||
|
||||
- Discuss topics in private groups, one-to-one or team-wide
|
||||
- Find what you're looking for with full text search, filters and #hashtags
|
||||
- Easily share images, video, audio and files
|
||||
- Personalize your experience with custom colors, formatting and fonts
|
||||
- Connect in-house systems with webhooks and Slack-compatible integrations
|
||||
|
||||
To use this app, you need a "Team URL" from a Mattermost server. To host your own server go to http://www.mattermost.org/download/
|
||||
|
||||
Find the Terms of Service for this app here: https://about.mattermost.com/terms
|
||||
|
||||
This is a reference implementation of an open source Mattermost Android app available at: https://github.com/mattermost/android
|
||||
BIN
fastlane/metadata/android/en-US/images/icon.png
Normal file
BIN
fastlane/metadata/android/en-US/images/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
BIN
fastlane/metadata/android/en-US/images/promoGraphic.png
Normal file
BIN
fastlane/metadata/android/en-US/images/promoGraphic.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.9 KiB |
BIN
fastlane/metadata/android/en-US/images/tvBanner.png
Normal file
BIN
fastlane/metadata/android/en-US/images/tvBanner.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 66 KiB |
1
fastlane/metadata/android/en-US/short_description.txt
Normal file
1
fastlane/metadata/android/en-US/short_description.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
Secure, self-hosted workplace messaging
|
||||
1
fastlane/metadata/android/en-US/title.txt
Normal file
1
fastlane/metadata/android/en-US/title.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
Mattermost RN
|
||||
0
fastlane/metadata/android/en-US/video.txt
Normal file
0
fastlane/metadata/android/en-US/video.txt
Normal file
1
fastlane/metadata/copyright.txt
Normal file
1
fastlane/metadata/copyright.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
1
fastlane/metadata/en-US/description.txt
Normal file
1
fastlane/metadata/en-US/description.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
1
fastlane/metadata/en-US/keywords.txt
Normal file
1
fastlane/metadata/en-US/keywords.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
1
fastlane/metadata/en-US/marketing_url.txt
Normal file
1
fastlane/metadata/en-US/marketing_url.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
1
fastlane/metadata/en-US/name.txt
Normal file
1
fastlane/metadata/en-US/name.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
Mattermost RN
|
||||
1
fastlane/metadata/en-US/privacy_url.txt
Normal file
1
fastlane/metadata/en-US/privacy_url.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
1
fastlane/metadata/en-US/release_notes.txt
Normal file
1
fastlane/metadata/en-US/release_notes.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
1
fastlane/metadata/en-US/support_url.txt
Normal file
1
fastlane/metadata/en-US/support_url.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
1
fastlane/metadata/primary_category.txt
Normal file
1
fastlane/metadata/primary_category.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
1
fastlane/metadata/primary_first_sub_category.txt
Normal file
1
fastlane/metadata/primary_first_sub_category.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
1
fastlane/metadata/primary_second_sub_category.txt
Normal file
1
fastlane/metadata/primary_second_sub_category.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
1
fastlane/metadata/secondary_category.txt
Normal file
1
fastlane/metadata/secondary_category.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
1
fastlane/metadata/secondary_first_sub_category.txt
Normal file
1
fastlane/metadata/secondary_first_sub_category.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
1
fastlane/metadata/secondary_second_sub_category.txt
Normal file
1
fastlane/metadata/secondary_second_sub_category.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
7
fastlane/screenshots/README.txt
Normal file
7
fastlane/screenshots/README.txt
Normal file
|
|
@ -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.
|
||||
|
|
@ -5,6 +5,7 @@
|
|||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
|
||||
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
|
||||
|
|
@ -17,20 +18,24 @@
|
|||
139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; };
|
||||
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
|
||||
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };
|
||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
||||
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||
140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
|
||||
146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
|
||||
1EA2B0031DB7E9620013B2DB /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1EA2AFFB1DB7E9620013B2DB /* Entypo.ttf */; };
|
||||
1EA2B0041DB7E9620013B2DB /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1EA2AFFC1DB7E9620013B2DB /* EvilIcons.ttf */; };
|
||||
1EA2B0051DB7E9620013B2DB /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1EA2AFFD1DB7E9620013B2DB /* FontAwesome.ttf */; };
|
||||
1EA2B0061DB7E9620013B2DB /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1EA2AFFE1DB7E9620013B2DB /* Foundation.ttf */; };
|
||||
1EA2B0071DB7E9620013B2DB /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1EA2AFFF1DB7E9620013B2DB /* Ionicons.ttf */; };
|
||||
1EA2B0081DB7E9620013B2DB /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1EA2B0001DB7E9620013B2DB /* MaterialIcons.ttf */; };
|
||||
1EA2B0091DB7E9620013B2DB /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1EA2B0011DB7E9620013B2DB /* Octicons.ttf */; };
|
||||
1EA2B00A1DB7E9620013B2DB /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1EA2B0021DB7E9620013B2DB /* Zocial.ttf */; };
|
||||
7F55909D1DE33E62008E7FC5 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
||||
1BCA51319AC6442991C6A208 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 0A091BF1A3D04650AD306A0D /* Zocial.ttf */; };
|
||||
2B4C9B708010475DA575B81D /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F1F071EE85494E269A50AE88 /* SimpleLineIcons.ttf */; };
|
||||
382D94CF15EE4FC292C3F341 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 51F5A483EA9F4A9A87ACFB59 /* Foundation.ttf */; };
|
||||
3D38ABA732A34A9BB3294F90 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 349FBA7338E74D9BBD709528 /* EvilIcons.ttf */; };
|
||||
420A7328E12C4B72AEF420CE /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EDC04CBCF81642219D199CBB /* Octicons.ttf */; };
|
||||
5E1AF7B72B8D4A4E9E53FF9D /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 005346E5C0E542BFABAE1411 /* FontAwesome.ttf */; };
|
||||
5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; };
|
||||
7FBB5E9A1E1F5A4B000DE18A /* libRNSVG.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FDF28E11E1F4B1F00DBBE56 /* libRNSVG.a */; };
|
||||
7FBB5E9B1E1F5A4B000DE18A /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FDF290C1E1F4B4E00DBBE56 /* libRNVectorIcons.a */; };
|
||||
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
|
||||
6D451C9F2CCA47089433C8C5 /* libRNSVG.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 054B6299E0894F978806187D /* libRNSVG.a */; };
|
||||
895C9A56B94A45C1BAF568FE /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = AC6EB561E1F64C17A69D2FAD /* Entypo.ttf */; };
|
||||
C035DB50ED2045F09923FFAE /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 04AA5E8EF3B54735A11E3B95 /* MaterialCommunityIcons.ttf */; };
|
||||
C337E8708D2845C6A8DBB47E /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2DCFD31D3F4A4154822AB532 /* Ionicons.ttf */; };
|
||||
F006936FC2884C24A1321FC0 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 356C9186FA374641A00EB2EA /* MaterialIcons.ttf */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
|
|
@ -97,6 +102,111 @@
|
|||
remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192;
|
||||
remoteInfo = React;
|
||||
};
|
||||
3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 2D2A283A1D9B042B00D4039D;
|
||||
remoteInfo = "RCTImage-tvOS";
|
||||
};
|
||||
3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 2D2A28471D9B043800D4039D;
|
||||
remoteInfo = "RCTLinking-tvOS";
|
||||
};
|
||||
3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 2D2A28541D9B044C00D4039D;
|
||||
remoteInfo = "RCTNetwork-tvOS";
|
||||
};
|
||||
3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 2D2A28611D9B046600D4039D;
|
||||
remoteInfo = "RCTSettings-tvOS";
|
||||
};
|
||||
3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 2D2A287B1D9B048500D4039D;
|
||||
remoteInfo = "RCTText-tvOS";
|
||||
};
|
||||
3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 2D2A28881D9B049200D4039D;
|
||||
remoteInfo = "RCTWebSocket-tvOS";
|
||||
};
|
||||
3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 2D2A28131D9B038B00D4039D;
|
||||
remoteInfo = "React-tvOS";
|
||||
};
|
||||
3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 3D3C059A1DE3340900C268FA;
|
||||
remoteInfo = yoga;
|
||||
};
|
||||
3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 3D3C06751DE3340C00C268FA;
|
||||
remoteInfo = "yoga-tvOS";
|
||||
};
|
||||
3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 3D3CD9251DE5FBEC00167DC4;
|
||||
remoteInfo = cxxreact;
|
||||
};
|
||||
3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 3D3CD9321DE5FBEE00167DC4;
|
||||
remoteInfo = "cxxreact-tvOS";
|
||||
};
|
||||
3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 3D3CD90B1DE5FBD600167DC4;
|
||||
remoteInfo = jschelpers;
|
||||
};
|
||||
3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4;
|
||||
remoteInfo = "jschelpers-tvOS";
|
||||
};
|
||||
5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 134814201AA4EA6300B7C361;
|
||||
remoteInfo = RCTAnimation;
|
||||
};
|
||||
5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 2D2A28201D9B03D100D4039D;
|
||||
remoteInfo = "RCTAnimation-tvOS";
|
||||
};
|
||||
78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */;
|
||||
|
|
@ -104,6 +214,20 @@
|
|||
remoteGlobalIDString = 134814201AA4EA6300B7C361;
|
||||
remoteInfo = RCTLinking;
|
||||
};
|
||||
7FDF28E01E1F4B1F00DBBE56 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 2CBE9C0FB56E4FDA96C30792 /* RNSVG.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 0CF68AC11AF0540F00FF9E5C;
|
||||
remoteInfo = RNSVG;
|
||||
};
|
||||
7FDF290B1E1F4B4E00DBBE56 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 2B25899FDAC149EB96ED3305 /* RNVectorIcons.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 5DBEB1501B18CEA900B34395;
|
||||
remoteInfo = RNVectorIcons;
|
||||
};
|
||||
832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */;
|
||||
|
|
@ -114,7 +238,7 @@
|
|||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; };
|
||||
005346E5C0E542BFABAE1411 /* FontAwesome.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = "<group>"; };
|
||||
00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = "<group>"; };
|
||||
00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = "<group>"; };
|
||||
00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = "<group>"; };
|
||||
|
|
@ -123,6 +247,8 @@
|
|||
00E356EE1AD99517003FC87E /* MattermostTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MattermostTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
00E356F21AD99517003FC87E /* MattermostTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MattermostTests.m; sourceTree = "<group>"; };
|
||||
04AA5E8EF3B54735A11E3B95 /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialCommunityIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = "<group>"; };
|
||||
0A091BF1A3D04650AD306A0D /* Zocial.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Zocial.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = "<group>"; };
|
||||
139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = "<group>"; };
|
||||
139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = "<group>"; };
|
||||
13B07F961A680F5B00A75B9A /* Mattermost.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Mattermost.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
|
|
@ -133,18 +259,18 @@
|
|||
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Mattermost/Info.plist; sourceTree = "<group>"; };
|
||||
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Mattermost/main.m; sourceTree = "<group>"; };
|
||||
146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = "<group>"; };
|
||||
1EA2AFFB1DB7E9620013B2DB /* Entypo.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Entypo.ttf; sourceTree = "<group>"; };
|
||||
1EA2AFFC1DB7E9620013B2DB /* EvilIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = EvilIcons.ttf; sourceTree = "<group>"; };
|
||||
1EA2AFFD1DB7E9620013B2DB /* FontAwesome.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome.ttf; sourceTree = "<group>"; };
|
||||
1EA2AFFE1DB7E9620013B2DB /* Foundation.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Foundation.ttf; sourceTree = "<group>"; };
|
||||
1EA2AFFF1DB7E9620013B2DB /* Ionicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Ionicons.ttf; sourceTree = "<group>"; };
|
||||
1EA2B0001DB7E9620013B2DB /* MaterialIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = MaterialIcons.ttf; sourceTree = "<group>"; };
|
||||
1EA2B0011DB7E9620013B2DB /* Octicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Octicons.ttf; sourceTree = "<group>"; };
|
||||
1EA2B0021DB7E9620013B2DB /* Zocial.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Zocial.ttf; sourceTree = "<group>"; };
|
||||
2B25899FDAC149EB96ED3305 /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = "<group>"; };
|
||||
2CBE9C0FB56E4FDA96C30792 /* RNSVG.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNSVG.xcodeproj; path = "../node_modules/react-native-svg/ios/RNSVG.xcodeproj"; sourceTree = "<group>"; };
|
||||
2DCFD31D3F4A4154822AB532 /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = "<group>"; };
|
||||
349FBA7338E74D9BBD709528 /* EvilIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = EvilIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = "<group>"; };
|
||||
356C9186FA374641A00EB2EA /* MaterialIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf"; sourceTree = "<group>"; };
|
||||
51F5A483EA9F4A9A87ACFB59 /* Foundation.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Foundation.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = "<group>"; };
|
||||
5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = "<group>"; };
|
||||
78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = "<group>"; };
|
||||
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = "<group>"; };
|
||||
EFA9957A8DD4430C85C9D4D5 /* RNSVG.xcodeproj */ = {isa = PBXFileReference; name = "RNSVG.xcodeproj"; path = "../node_modules/react-native-svg/ios/RNSVG.xcodeproj"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
|
||||
054B6299E0894F978806187D /* libRNSVG.a */ = {isa = PBXFileReference; name = "libRNSVG.a"; path = "libRNSVG.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
|
||||
AC6EB561E1F64C17A69D2FAD /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = "<group>"; };
|
||||
EDC04CBCF81642219D199CBB /* Octicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Octicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = "<group>"; };
|
||||
F1F071EE85494E269A50AE88 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = SimpleLineIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
|
|
@ -160,6 +286,9 @@
|
|||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
7FBB5E9A1E1F5A4B000DE18A /* libRNSVG.a in Frameworks */,
|
||||
7FBB5E9B1E1F5A4B000DE18A /* libRNVectorIcons.a in Frameworks */,
|
||||
5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */,
|
||||
146834051AC3E58100842450 /* libReact.a in Frameworks */,
|
||||
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
|
||||
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */,
|
||||
|
|
@ -170,7 +299,6 @@
|
|||
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
|
||||
00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
|
||||
139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
|
||||
6D451C9F2CCA47089433C8C5 /* libRNSVG.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
@ -197,6 +325,7 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
00C302C01ABCB91800DB3ED1 /* libRCTImage.a */,
|
||||
3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -205,6 +334,7 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */,
|
||||
3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -234,10 +364,28 @@
|
|||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0156F464626F49C2977D7982 /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AC6EB561E1F64C17A69D2FAD /* Entypo.ttf */,
|
||||
349FBA7338E74D9BBD709528 /* EvilIcons.ttf */,
|
||||
005346E5C0E542BFABAE1411 /* FontAwesome.ttf */,
|
||||
51F5A483EA9F4A9A87ACFB59 /* Foundation.ttf */,
|
||||
2DCFD31D3F4A4154822AB532 /* Ionicons.ttf */,
|
||||
04AA5E8EF3B54735A11E3B95 /* MaterialCommunityIcons.ttf */,
|
||||
356C9186FA374641A00EB2EA /* MaterialIcons.ttf */,
|
||||
EDC04CBCF81642219D199CBB /* Octicons.ttf */,
|
||||
F1F071EE85494E269A50AE88 /* SimpleLineIcons.ttf */,
|
||||
0A091BF1A3D04650AD306A0D /* Zocial.ttf */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
139105B71AF99BAD00B5F7CC /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
139105C11AF99BAD00B5F7CC /* libRCTSettings.a */,
|
||||
3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -246,6 +394,7 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
139FDEF41B06529B00C62182 /* libRCTWebSocket.a */,
|
||||
3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -253,7 +402,6 @@
|
|||
13B07FAE1A68108700A75B9A /* Mattermost */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
008F07F21AC5B25A0029DE68 /* main.jsbundle */,
|
||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
|
||||
13B07FB01A68108700A75B9A /* AppDelegate.m */,
|
||||
13B07FB51A68108700A75B9A /* Images.xcassets */,
|
||||
|
|
@ -268,29 +416,47 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
146834041AC3E56700842450 /* libReact.a */,
|
||||
3DAD3EA31DF850E9000B6D8A /* libReact.a */,
|
||||
3DAD3EA51DF850E9000B6D8A /* libyoga.a */,
|
||||
3DAD3EA71DF850E9000B6D8A /* libyoga.a */,
|
||||
3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */,
|
||||
3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */,
|
||||
3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */,
|
||||
3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1EA2AFFA1DB7E9620013B2DB /* Fonts */ = {
|
||||
5E91572E1DD0AC6500FF2AA8 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1EA2AFFB1DB7E9620013B2DB /* Entypo.ttf */,
|
||||
1EA2AFFC1DB7E9620013B2DB /* EvilIcons.ttf */,
|
||||
1EA2AFFD1DB7E9620013B2DB /* FontAwesome.ttf */,
|
||||
1EA2AFFE1DB7E9620013B2DB /* Foundation.ttf */,
|
||||
1EA2AFFF1DB7E9620013B2DB /* Ionicons.ttf */,
|
||||
1EA2B0001DB7E9620013B2DB /* MaterialIcons.ttf */,
|
||||
1EA2B0011DB7E9620013B2DB /* Octicons.ttf */,
|
||||
1EA2B0021DB7E9620013B2DB /* Zocial.ttf */,
|
||||
5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */,
|
||||
5E9157351DD0AC6500FF2AA8 /* libRCTAnimation-tvOS.a */,
|
||||
);
|
||||
path = Fonts;
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
78C398B11ACF4ADC00677621 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
78C398B91ACF4ADC00677621 /* libRCTLinking.a */,
|
||||
3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7FDF28C41E1F4B1F00DBBE56 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7FDF28E11E1F4B1F00DBBE56 /* libRNSVG.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7FDF28EE1E1F4B4E00DBBE56 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7FDF290C1E1F4B4E00DBBE56 /* libRNVectorIcons.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -298,6 +464,7 @@
|
|||
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */,
|
||||
146833FF1AC3E56700842450 /* React.xcodeproj */,
|
||||
00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */,
|
||||
00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */,
|
||||
|
|
@ -308,7 +475,8 @@
|
|||
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */,
|
||||
00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */,
|
||||
139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */,
|
||||
EFA9957A8DD4430C85C9D4D5 /* RNSVG.xcodeproj */,
|
||||
2CBE9C0FB56E4FDA96C30792 /* RNSVG.xcodeproj */,
|
||||
2B25899FDAC149EB96ED3305 /* RNVectorIcons.xcodeproj */,
|
||||
);
|
||||
name = Libraries;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -317,6 +485,7 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
832341B51AAA6A8300B99B32 /* libRCTText.a */,
|
||||
3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -324,11 +493,11 @@
|
|||
83CBB9F61A601CBA00E9B192 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1EA2AFFA1DB7E9620013B2DB /* Fonts */,
|
||||
13B07FAE1A68108700A75B9A /* Mattermost */,
|
||||
832341AE1AAA6A7D00B99B32 /* Libraries */,
|
||||
00E356EF1AD99517003FC87E /* MattermostTests */,
|
||||
83CBBA001A601CBA00E9B192 /* Products */,
|
||||
0156F464626F49C2977D7982 /* Resources */,
|
||||
);
|
||||
indentWidth = 2;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -388,13 +557,16 @@
|
|||
83CBB9F71A601CBA00E9B192 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 810;
|
||||
LastUpgradeCheck = 820;
|
||||
ORGANIZATIONNAME = Facebook;
|
||||
TargetAttributes = {
|
||||
00E356ED1AD99517003FC87E = {
|
||||
CreatedOnToolsVersion = 6.2;
|
||||
TestTargetID = 13B07F861A680F5B00A75B9A;
|
||||
};
|
||||
13B07F861A680F5B00A75B9A = {
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Mattermost" */;
|
||||
|
|
@ -413,6 +585,10 @@
|
|||
ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */;
|
||||
ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = 5E91572E1DD0AC6500FF2AA8 /* Products */;
|
||||
ProjectRef = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */;
|
||||
ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */;
|
||||
|
|
@ -449,6 +625,14 @@
|
|||
ProductGroup = 146834001AC3E56700842450 /* Products */;
|
||||
ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = 7FDF28C41E1F4B1F00DBBE56 /* Products */;
|
||||
ProjectRef = 2CBE9C0FB56E4FDA96C30792 /* RNSVG.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = 7FDF28EE1E1F4B4E00DBBE56 /* Products */;
|
||||
ProjectRef = 2B25899FDAC149EB96ED3305 /* RNVectorIcons.xcodeproj */;
|
||||
},
|
||||
);
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
|
|
@ -515,6 +699,111 @@
|
|||
remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = "libRCTImage-tvOS.a";
|
||||
remoteRef = 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = "libRCTLinking-tvOS.a";
|
||||
remoteRef = 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = "libRCTNetwork-tvOS.a";
|
||||
remoteRef = 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = "libRCTSettings-tvOS.a";
|
||||
remoteRef = 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = "libRCTText-tvOS.a";
|
||||
remoteRef = 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = "libRCTWebSocket-tvOS.a";
|
||||
remoteRef = 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
3DAD3EA31DF850E9000B6D8A /* libReact.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libReact.a;
|
||||
remoteRef = 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
3DAD3EA51DF850E9000B6D8A /* libyoga.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libyoga.a;
|
||||
remoteRef = 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
3DAD3EA71DF850E9000B6D8A /* libyoga.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libyoga.a;
|
||||
remoteRef = 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libcxxreact.a;
|
||||
remoteRef = 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libcxxreact.a;
|
||||
remoteRef = 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libjschelpers.a;
|
||||
remoteRef = 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libjschelpers.a;
|
||||
remoteRef = 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libRCTAnimation.a;
|
||||
remoteRef = 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
5E9157351DD0AC6500FF2AA8 /* libRCTAnimation-tvOS.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = "libRCTAnimation-tvOS.a";
|
||||
remoteRef = 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
|
|
@ -522,6 +811,20 @@
|
|||
remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
7FDF28E11E1F4B1F00DBBE56 /* libRNSVG.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libRNSVG.a;
|
||||
remoteRef = 7FDF28E01E1F4B1F00DBBE56 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
7FDF290C1E1F4B4E00DBBE56 /* libRNVectorIcons.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libRNVectorIcons.a;
|
||||
remoteRef = 7FDF290B1E1F4B4E00DBBE56 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
832341B51AAA6A8300B99B32 /* libRCTText.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
|
|
@ -543,16 +846,18 @@
|
|||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1EA2B0081DB7E9620013B2DB /* MaterialIcons.ttf in Resources */,
|
||||
7F55909D1DE33E62008E7FC5 /* Images.xcassets in Resources */,
|
||||
1EA2B0091DB7E9620013B2DB /* Octicons.ttf in Resources */,
|
||||
1EA2B00A1DB7E9620013B2DB /* Zocial.ttf in Resources */,
|
||||
1EA2B0051DB7E9620013B2DB /* FontAwesome.ttf in Resources */,
|
||||
1EA2B0041DB7E9620013B2DB /* EvilIcons.ttf in Resources */,
|
||||
1EA2B0071DB7E9620013B2DB /* Ionicons.ttf in Resources */,
|
||||
1EA2B0061DB7E9620013B2DB /* Foundation.ttf in Resources */,
|
||||
1EA2B0031DB7E9620013B2DB /* Entypo.ttf in Resources */,
|
||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
|
||||
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
|
||||
895C9A56B94A45C1BAF568FE /* Entypo.ttf in Resources */,
|
||||
3D38ABA732A34A9BB3294F90 /* EvilIcons.ttf in Resources */,
|
||||
5E1AF7B72B8D4A4E9E53FF9D /* FontAwesome.ttf in Resources */,
|
||||
382D94CF15EE4FC292C3F341 /* Foundation.ttf in Resources */,
|
||||
C337E8708D2845C6A8DBB47E /* Ionicons.ttf in Resources */,
|
||||
C035DB50ED2045F09923FFAE /* MaterialCommunityIcons.ttf in Resources */,
|
||||
F006936FC2884C24A1321FC0 /* MaterialIcons.ttf in Resources */,
|
||||
420A7328E12C4B72AEF420CE /* Octicons.ttf in Resources */,
|
||||
2B4C9B708010475DA575B81D /* SimpleLineIcons.ttf in Resources */,
|
||||
1BCA51319AC6442991C6A208 /* Zocial.ttf in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
@ -620,6 +925,7 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
DEVELOPMENT_TEAM = "";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
|
|
@ -627,13 +933,14 @@
|
|||
INFOPLIST_FILE = MattermostTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mattermost.app/Mattermost";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mattermost.app/Mattermost";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
|
|
@ -642,16 +949,18 @@
|
|||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
INFOPLIST_FILE = MattermostTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mattermost.app/Mattermost";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
"\"$(SRCROOT)/$(TARGET_NAME)\"",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mattermost.app/Mattermost";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
|
@ -659,14 +968,10 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CURRENT_PROJECT_VERSION = 5;
|
||||
DEAD_CODE_STRIPPING = NO;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
||||
"$(SRCROOT)/../node_modules/react-native/React/**",
|
||||
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
|
||||
);
|
||||
DEVELOPMENT_TEAM = "";
|
||||
INFOPLIST_FILE = Mattermost/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
OTHER_LDFLAGS = (
|
||||
|
|
@ -674,8 +979,10 @@
|
|||
"-ObjC",
|
||||
"-lc++",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mattermost.react.native;
|
||||
PRODUCT_NAME = Mattermost;
|
||||
PROVISIONING_PROFILE = "";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Debug;
|
||||
|
|
@ -684,13 +991,10 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
||||
"$(SRCROOT)/../node_modules/react-native/React/**",
|
||||
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
|
||||
);
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CURRENT_PROJECT_VERSION = 5;
|
||||
DEAD_CODE_STRIPPING = NO;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
INFOPLIST_FILE = Mattermost/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
OTHER_LDFLAGS = (
|
||||
|
|
@ -698,8 +1002,10 @@
|
|||
"-ObjC",
|
||||
"-lc++",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.mattermost.react.native;
|
||||
PRODUCT_NAME = Mattermost;
|
||||
PROVISIONING_PROFILE = "";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Release;
|
||||
|
|
@ -742,12 +1048,6 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
||||
"$(SRCROOT)/../node_modules/react-native/React/**",
|
||||
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
|
|
@ -786,12 +1086,6 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
||||
"$(SRCROOT)/../node_modules/react-native/React/**",
|
||||
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
|
|
|
|||
|
|
@ -1,11 +1,25 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0810"
|
||||
LastUpgradeVersion = "0820"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
parallelizeBuildables = "NO"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "83CBBA2D1A601D0E00E9B192"
|
||||
BuildableName = "libReact.a"
|
||||
BlueprintName = "React"
|
||||
ReferencedContainer = "container:../node_modules/react-native/React/React.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
|
|
@ -66,7 +80,7 @@
|
|||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
buildConfiguration = "Release"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@
|
|||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
#import "RCTBundleURLProvider.h"
|
||||
#import "RCTRootView.h"
|
||||
#import <React/RCTBundleURLProvider.h>
|
||||
#import <React/RCTRootView.h>
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<string>5</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
<dict>
|
||||
<key>localhost</key>
|
||||
<dict>
|
||||
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
|
||||
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
|
|
@ -45,6 +45,16 @@
|
|||
<string>MaterialIcons.ttf</string>
|
||||
<string>Octicons.ttf</string>
|
||||
<string>Zocial.ttf</string>
|
||||
<string>Entypo.ttf</string>
|
||||
<string>EvilIcons.ttf</string>
|
||||
<string>FontAwesome.ttf</string>
|
||||
<string>Foundation.ttf</string>
|
||||
<string>Ionicons.ttf</string>
|
||||
<string>MaterialCommunityIcons.ttf</string>
|
||||
<string>MaterialIcons.ttf</string>
|
||||
<string>Octicons.ttf</string>
|
||||
<string>SimpleLineIcons.ttf</string>
|
||||
<string>Zocial.ttf</string>
|
||||
</array>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
|
|
@ -60,5 +70,7 @@
|
|||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
|||
|
|
@ -19,6 +19,6 @@
|
|||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<string>5</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@
|
|||
#import <UIKit/UIKit.h>
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
#import "RCTLog.h"
|
||||
#import "RCTRootView.h"
|
||||
#import <React/RCTLog.h>
|
||||
#import <React/RCTRootView.h>
|
||||
|
||||
#define TIMEOUT_SECONDS 600
|
||||
#define TEXT_TO_LOOK_FOR @"Welcome to React Native!"
|
||||
|
|
|
|||
44
package.json
44
package.json
|
|
@ -5,38 +5,38 @@
|
|||
"dependencies": {
|
||||
"intl": "1.2.5",
|
||||
"isomorphic-fetch": "2.2.1",
|
||||
"react": "15.3.2",
|
||||
"react-addons-pure-render-mixin": "15.3.2",
|
||||
"react-intl": "2.1.5",
|
||||
"react-native": "0.34.1",
|
||||
"react": "15.4.1",
|
||||
"react-addons-pure-render-mixin": "15.4.1",
|
||||
"react-intl": "2.2.2",
|
||||
"react-native": "0.40.0",
|
||||
"react-native-button": "1.7.1",
|
||||
"react-native-drawer": "2.3.0",
|
||||
"react-native-keyboard-spacer": "0.3.0",
|
||||
"react-native-svg": "4.3.3",
|
||||
"react-native-vector-icons": "2.1.0",
|
||||
"react-redux": "4.4.5",
|
||||
"react-native-keyboard-spacer": "0.3.1",
|
||||
"react-native-svg": "4.5.0",
|
||||
"react-native-vector-icons": "4.0.0",
|
||||
"react-redux": "5.0.1",
|
||||
"redux": "3.6.0",
|
||||
"redux-batched-actions": "0.1.3",
|
||||
"redux-batched-actions": "0.1.5",
|
||||
"redux-thunk": "2.1.0",
|
||||
"reselect": "2.5.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-eslint": "7.0.0",
|
||||
"babel-eslint": "7.1.1",
|
||||
"babel-plugin-module-resolver": "2.4.0",
|
||||
"babel-preset-es2015": "6.18.0",
|
||||
"babel-preset-react-native": "1.9.0",
|
||||
"babel-register": "6.16.3",
|
||||
"babel-preset-react-native": "1.9.1",
|
||||
"babel-register": "6.18.0",
|
||||
"deep-freeze": "0.0.1",
|
||||
"eslint": "3.7.1",
|
||||
"eslint-plugin-mocha": "4.7.0",
|
||||
"eslint-plugin-react": "6.3.0",
|
||||
"fetch-mock": "5.5.0",
|
||||
"mocha": "3.1.0",
|
||||
"react-native-mock": "0.2.7",
|
||||
"react-test-renderer": "15.3.2",
|
||||
"redux-logger": "2.7.0",
|
||||
"remote-redux-devtools": "0.5.0",
|
||||
"remote-redux-devtools-on-debugger": "0.6.2",
|
||||
"eslint": "3.12.2",
|
||||
"eslint-plugin-mocha": "4.8.0",
|
||||
"eslint-plugin-react": "6.8.0",
|
||||
"fetch-mock": "5.8.1",
|
||||
"mocha": "3.2.0",
|
||||
"react-native-mock": "0.2.9",
|
||||
"react-test-renderer": "15.4.1",
|
||||
"redux-logger": "2.7.4",
|
||||
"remote-redux-devtools": "0.5.7",
|
||||
"remote-redux-devtools-on-debugger": "0.7.0",
|
||||
"ws": "1.1.1"
|
||||
},
|
||||
"scripts": {
|
||||
|
|
|
|||
Loading…
Reference in a new issue