diff --git a/.gitignore b/.gitignore index cb464e706..3c6975c18 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,6 @@ xcuserdata/ fastlane/report.xml fastlane/Preview.html fastlane/screenshots/**/*.png -fastlane/test_output \ No newline at end of file +fastlane/test_output + +build \ No newline at end of file diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj index d417ac054..9fe33e8db 100644 --- a/ElementX.xcodeproj/project.pbxproj +++ b/ElementX.xcodeproj/project.pbxproj @@ -147,6 +147,7 @@ 1863A48227BAA8A900B52E4D /* HomeScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeScreen.swift; sourceTree = ""; }; 1863A48427BAA8A900B52E4D /* HomeScreenViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeScreenViewModel.swift; sourceTree = ""; }; 1863A49327BAAA6700B52E4D /* RoomModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomModel.swift; sourceTree = ""; }; + 18FE279627C7B85300016375 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -273,6 +274,7 @@ 1850256727B6A135002E6B18 /* ElementX.entitlements */, 1850256827B6A135002E6B18 /* Assets.xcassets */, 1850256927B6A135002E6B18 /* LaunchScreen.storyboard */, + 18FE279627C7B85300016375 /* Info.plist */, ); path = "Supporting Files"; sourceTree = ""; @@ -540,6 +542,7 @@ BuildIndependentTargetsInParallel = 1; LastSwiftUpdateCheck = 1320; LastUpgradeCheck = 1320; + ORGANIZATIONNAME = Element; TargetAttributes = { 1850252327B6918C002E6B18 = { CreatedOnToolsVersion = 13.2.1; @@ -859,7 +862,7 @@ CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 7J4U792NQT; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = ""; + INFOPLIST_FILE = "ElementX/Supporting Files/Info.plist"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; @@ -868,8 +871,8 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = io.element.ElementX; + MARKETING_VERSION = 1.0.0; + PRODUCT_BUNDLE_IDENTIFIER = io.element.elementx; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTS_MACCATALYST = YES; SWIFT_EMIT_LOC_STRINGS = YES; @@ -888,7 +891,7 @@ CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 7J4U792NQT; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = ""; + INFOPLIST_FILE = "ElementX/Supporting Files/Info.plist"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; @@ -897,8 +900,8 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = io.element.ElementX; + MARKETING_VERSION = 1.0.0; + PRODUCT_BUNDLE_IDENTIFIER = io.element.elementx; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTS_MACCATALYST = YES; SWIFT_EMIT_LOC_STRINGS = YES; diff --git a/ElementX/Supporting Files/Info.plist b/ElementX/Supporting Files/Info.plist new file mode 100644 index 000000000..dd59ccdf1 --- /dev/null +++ b/ElementX/Supporting Files/Info.plist @@ -0,0 +1,12 @@ + + + + + + diff --git a/Gemfile b/Gemfile new file mode 100644 index 000000000..b734015f8 --- /dev/null +++ b/Gemfile @@ -0,0 +1,10 @@ +# Autogenerated by fastlane +# +# Ensure this file is checked in to source control! + +source "https://rubygems.org" + +gem 'fastlane' + +plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') +eval_gemfile(plugins_path) if File.exist?(plugins_path) diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 000000000..9ae1f12a5 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,231 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.5) + rexml + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) + artifactory (3.0.15) + atomos (0.1.3) + aws-eventstream (1.2.0) + aws-partitions (1.557.0) + aws-sdk-core (3.126.2) + aws-eventstream (~> 1, >= 1.0.2) + aws-partitions (~> 1, >= 1.525.0) + aws-sigv4 (~> 1.1) + jmespath (~> 1.0) + aws-sdk-kms (1.54.0) + aws-sdk-core (~> 3, >= 3.126.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.112.0) + aws-sdk-core (~> 3, >= 3.126.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.4) + aws-sigv4 (1.4.0) + aws-eventstream (~> 1, >= 1.0.2) + babosa (1.0.4) + claide (1.1.0) + colored (1.2) + colored2 (3.1.2) + commander (4.6.0) + highline (~> 2.0.0) + declarative (0.0.20) + digest-crc (0.6.4) + rake (>= 12.0.0, < 14.0.0) + domain_name (0.5.20190701) + unf (>= 0.0.5, < 1.0.0) + dotenv (2.7.6) + emoji_regex (3.2.3) + excon (0.91.0) + faraday (1.10.0) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-cookie_jar (0.0.7) + faraday (>= 0.8.0) + http-cookie (~> 1.0.0) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.3) + multipart-post (>= 1.2, < 3) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + faraday_middleware (1.2.0) + faraday (~> 1.0) + fastimage (2.2.6) + fastlane (2.204.3) + CFPropertyList (>= 2.3, < 4.0.0) + addressable (>= 2.8, < 3.0.0) + artifactory (~> 3.0) + aws-sdk-s3 (~> 1.0) + babosa (>= 1.0.3, < 2.0.0) + bundler (>= 1.12.0, < 3.0.0) + colored + commander (~> 4.6) + dotenv (>= 2.1.1, < 3.0.0) + emoji_regex (>= 0.1, < 4.0) + excon (>= 0.71.0, < 1.0.0) + faraday (~> 1.0) + faraday-cookie_jar (~> 0.0.6) + faraday_middleware (~> 1.0) + fastimage (>= 2.1.0, < 3.0.0) + gh_inspector (>= 1.1.2, < 2.0.0) + google-apis-androidpublisher_v3 (~> 0.3) + google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-storage (~> 1.31) + highline (~> 2.0) + json (< 3.0.0) + jwt (>= 2.1.0, < 3) + mini_magick (>= 4.9.4, < 5.0.0) + multipart-post (~> 2.0.0) + naturally (~> 2.2) + optparse (~> 0.1.1) + plist (>= 3.1.0, < 4.0.0) + rubyzip (>= 2.0.0, < 3.0.0) + security (= 0.1.3) + simctl (~> 1.6.3) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (>= 1.4.5, < 2.0.0) + tty-screen (>= 0.6.3, < 1.0.0) + tty-spinner (>= 0.8.0, < 1.0.0) + word_wrap (~> 1.0.0) + xcodeproj (>= 1.13.0, < 2.0.0) + xcpretty (~> 0.3.0) + xcpretty-travis-formatter (>= 0.0.3) + fastlane-plugin-diawi (2.1.0) + rest-client (>= 2.0.0) + gh_inspector (1.1.3) + google-apis-androidpublisher_v3 (0.16.0) + google-apis-core (>= 0.4, < 2.a) + google-apis-core (0.4.2) + addressable (~> 2.5, >= 2.5.1) + googleauth (>= 0.16.2, < 2.a) + httpclient (>= 2.8.1, < 3.a) + mini_mime (~> 1.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.a) + rexml + webrick + google-apis-iamcredentials_v1 (0.10.0) + google-apis-core (>= 0.4, < 2.a) + google-apis-playcustomapp_v1 (0.7.0) + google-apis-core (>= 0.4, < 2.a) + google-apis-storage_v1 (0.11.0) + google-apis-core (>= 0.4, < 2.a) + google-cloud-core (1.6.0) + google-cloud-env (~> 1.0) + google-cloud-errors (~> 1.0) + google-cloud-env (1.5.0) + faraday (>= 0.17.3, < 2.0) + google-cloud-errors (1.2.0) + google-cloud-storage (1.36.1) + addressable (~> 2.8) + digest-crc (~> 0.4) + google-apis-iamcredentials_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.1) + google-cloud-core (~> 1.6) + googleauth (>= 0.16.2, < 2.a) + mini_mime (~> 1.0) + googleauth (1.1.1) + faraday (>= 0.17.3, < 2.0) + jwt (>= 1.4, < 3.0) + memoist (~> 0.16) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (>= 0.16, < 2.a) + highline (2.0.3) + http-accept (1.7.0) + http-cookie (1.0.4) + domain_name (~> 0.5) + httpclient (2.8.3) + jmespath (1.6.0) + json (2.6.1) + jwt (2.3.0) + memoist (0.16.2) + mime-types (3.4.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2022.0105) + mini_magick (4.11.0) + mini_mime (1.1.2) + multi_json (1.15.0) + multipart-post (2.0.0) + nanaimo (0.3.0) + naturally (2.2.1) + netrc (0.11.0) + optparse (0.1.1) + os (1.1.4) + plist (3.6.0) + public_suffix (4.0.6) + rake (13.0.6) + representable (3.1.1) + declarative (< 0.1.0) + trailblazer-option (>= 0.1.1, < 0.2.0) + uber (< 0.2.0) + rest-client (2.1.0) + http-accept (>= 1.7.0, < 2.0) + http-cookie (>= 1.0.2, < 2.0) + mime-types (>= 1.16, < 4.0) + netrc (~> 0.8) + retriable (3.1.2) + rexml (3.2.5) + rouge (2.0.7) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + security (0.1.3) + signet (0.16.0) + addressable (~> 2.8) + faraday (>= 0.17.3, < 2.0) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simctl (1.6.8) + CFPropertyList + naturally + terminal-notifier (2.0.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + trailblazer-option (0.1.2) + tty-cursor (0.7.1) + tty-screen (0.8.1) + tty-spinner (0.9.3) + tty-cursor (~> 0.7) + uber (0.1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.8) + unicode-display_width (1.8.0) + webrick (1.7.0) + word_wrap (1.0.0) + xcodeproj (1.21.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.3.0) + rexml (~> 3.2.4) + xcpretty (0.3.0) + rouge (~> 2.0.7) + xcpretty-travis-formatter (1.0.1) + xcpretty (~> 0.2, >= 0.0.7) + +PLATFORMS + arm64-darwin-21 + +DEPENDENCIES + fastlane + fastlane-plugin-diawi + +BUNDLED WITH + 2.3.7 diff --git a/fastlane/Fastfile b/fastlane/Fastfile new file mode 100644 index 000000000..5fcf410d0 --- /dev/null +++ b/fastlane/Fastfile @@ -0,0 +1,79 @@ +lane :build_and_publish_on_github do + ios_adhoc() + + upload_to_diawi() + + mac_adhoc() + + release_to_github() + +end + +lane :ios_adhoc do + build_ios_app( + scheme: "ElementX", + export_method: "ad-hoc", + output_directory: "build", + export_options: { + provisioningProfiles: { + "io.element.elementx" => "ElementX Ad Hoc", + } + } + ) +end + +lane :mac_adhoc do + build_mac_app( + scheme: "ElementX", + export_method: "mac-application", + output_directory: "build" + ) + + zip( + path: "build/ElementX.app", + output_path: "build/ElementX.app.zip" + ) +end + +desc "Upload IPA to Diawi" +private_lane :upload_to_diawi do + api_token = "" #ENV["DIAWI_API_TOKEN"] + UI.user_error!("Invalid Diawi API token.") unless !api_token.to_s.empty? + + # Upload to Diawi + diawi( + token: api_token, + wall_of_apps: false, + file: lane_context[SharedValues::IPA_OUTPUT_PATH] + ) + + # Get the Diawi link from Diawi action shared value + diawi_link = lane_context[SharedValues::UPLOADED_FILE_LINK_TO_DIAWI] + UI.command_output("Diawi link: " + diawi_link.to_s) +end + +desc "Create GitHub Release" +private_lane :release_to_github do + api_token = "" #ENV["GITHUB_TOKEN"] + UI.user_error!("Invalid GitHub API token.") unless !api_token.to_s.empty? + + # Get the Diawi link from Diawi action shared value + diawi_link = lane_context[SharedValues::UPLOADED_FILE_LINK_TO_DIAWI] + + # Generate the Diawi QR code file link + diawi_app_id = URI(diawi_link).path.split('/').last + diawi_qr_code_link = "https://www.diawi.com/qrcode/link/#{diawi_app_id}" + + release_version = "v#{get_version_number()}.#{Time.now.strftime("%Y%m%d%H%M")}" + + github_release = set_github_release( + repository_name: "vector-im/element-x-ios", + api_token: api_token, + name: release_version, + tag_name: release_version, + is_generate_release_notes: true, + description: "[iOS AdHoc Release - Diawi Link](#{diawi_link}) + ![QR code](#{diawi_qr_code_link})", + upload_assets: ["build/ElementX.app.zip"] + ) +end \ No newline at end of file diff --git a/fastlane/Pluginfile b/fastlane/Pluginfile new file mode 100644 index 000000000..2d2113468 --- /dev/null +++ b/fastlane/Pluginfile @@ -0,0 +1,5 @@ +# Autogenerated by fastlane +# +# Ensure this file is checked in to source control! + +gem 'fastlane-plugin-diawi' diff --git a/fastlane/README.md b/fastlane/README.md new file mode 100644 index 000000000..f1a38f8ec --- /dev/null +++ b/fastlane/README.md @@ -0,0 +1,46 @@ +fastlane documentation +---- + +# Installation + +Make sure you have the latest version of the Xcode command line tools installed: + +```sh +xcode-select --install +``` + +For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) + +# Available Actions + +### build_and_publish_on_github + +```sh +[bundle exec] fastlane build_and_publish_on_github +``` + + + +### ios_adhoc + +```sh +[bundle exec] fastlane ios_adhoc +``` + + + +### mac_adhoc + +```sh +[bundle exec] fastlane mac_adhoc +``` + + + +---- + +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).