fastlane-plugin-appbox 3.4.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5ac49ed2e0a409764830fb7855c1791757fe94118bcb569a9da553aef9c5e3b8
4
- data.tar.gz: fd5191b76fffc00f4d6142ffdc5df137c72839806a08674e63f7598d996fd663
3
+ metadata.gz: 8a3d1c761409556356ec39f0991325907fcb51f6d3cdc003500f22818a0d31ab
4
+ data.tar.gz: 907b7f796e46350974092ea21e578c2fae8af565d3075b5ebc11f6f7038c6516
5
5
  SHA512:
6
- metadata.gz: dcc94414c7c62001123af387ea4aa5c5d427c0c566fa2914a35fe1e6a4094cb2204adf5259ffe076ff6692559082f1f161e0282f1f43ecf02d7042608f2486a4
7
- data.tar.gz: 6462fcc5ce569eee114cb886a805931670cfbe3fd63128e64c65b6b70579354da1fb6a69f37954a7295151360efed4cf1a1055c4a2265794101db8931287785d
6
+ metadata.gz: 547103bab6e974465c46c235af121279b801d400680c2f1b034dc6a0c8ea9e38a5ef64c0431f4840d1cf60b2d87018167c22d445d4233d2acf00ed40336532ea
7
+ data.tar.gz: 0d08e26a75304f1c8563c850f0dd5e6ecd500daa536bf7527b637f2c5e651bdf22630343a17521f3ce3a49cbc2087033e5dd39e59283ef5a97d23a77a231f3f1
data/README.md CHANGED
@@ -117,20 +117,20 @@ platform :ios do
117
117
  gym
118
118
  appbox(
119
119
  emails: 'you@example.com,'someoneelse@example.com',
120
- appbox_path:'/Users/vineetchoudhary/Desktop/AppBox2.8.0/AppBox.app',
120
+ appbox_path:'/Users/vineetchoudhary/Desktop/AppBox3.4.0/AppBox.app',
121
121
  )
122
122
  end
123
123
  end
124
124
  ```
125
125
 
126
+ #### Note
127
+ When you run this for the first time, a pop-up will appear stating that "Terminal.app" wants to access data from other apps. You must allow this to copy the IPA file to the Appbox temporary directory, enabling Appbox to access and upload it.
128
+ ![](/AppBox-Fastlane-Demo-Project/images/terminal-permission.webp)
129
+
126
130
  ## 3. Supported AppBox link access via Fastlane SharedValues
127
131
  - `APPBOX_SHARE_URL` - AppBox short shareable URL to install uploaded application.
128
132
  - `APPBOX_IPA_URL`- Upload IPA file URL to download IPA file.
129
133
  - `APPBOX_MANIFEST_URL` - Manifest file URL for upload application.
130
- - `APPBOX_LONG_SHARE_UR` - AppBox long shareable URL to install uploaded application.
131
-
132
- ![](/AppBox-Fastlane-Demo-Project/AppBoxFastlane.gif)
133
-
134
134
 
135
135
  ## 4. About AppBox
136
136
  [AppBox](https://getappbox.com) is a tool for iOS developers to build and deploy Development, Ad-Hoc and In-house (Enterprise) applications directly to the devices from your Dropbox account. Also, available on [Github](https://github.com/vineetchoudhary/AppBox-iOSAppsWirelessInstallation).
@@ -8,111 +8,101 @@ module Fastlane
8
8
  APPBOX_IPA_URL = :APPBOX_IPA_URL
9
9
  APPBOX_SHARE_URL = :APPBOX_SHARE_URL
10
10
  APPBOX_MANIFEST_URL = :APPBOX_MANIFEST_URL
11
- APPBOX_LONG_SHARE_URL = :APPBOX_LONG_SHARE_URL
12
11
  end
13
12
 
14
13
  class AppboxAction < Action
15
14
  def self.run(params)
16
- #emails param
15
+
16
+ #custom dropbox folder name
17
+ if params[:dropbox_folder_name]
18
+ dropbox_folder_name = params[:dropbox_folder_name]
19
+ UI.message("Dropbox folder name - #{dropbox_folder_name}")
20
+ end
21
+
22
+ #AppBox CLI
23
+ appboxcli = "appboxcli"
24
+ appboxcli_path = `which #{appboxcli}`.strip
25
+ if appboxcli_path.empty?
26
+ UI.error("AppBox CLI not found. Please install AppBox CLI first. Read more here - https://docs.getappbox.com/Installation/MacOS/#command-line-interface-cli")
27
+ exit
28
+ end
29
+
30
+ ipa_path = Actions.lane_context[ Actions::SharedValues::IPA_OUTPUT_PATH ]
31
+ ipa_file_name = File.basename(ipa_path)
32
+ UI.message("IPA PATH - #{ipa_path}")
33
+
34
+ # Start AppBox
35
+ UI.message("")
36
+ UI.message("Starting AppBox...")
37
+ UI.message("Upload process will start soon. Upload process might take a few minutes. Please don't interrupt the script.")
38
+
39
+ command = "#{appboxcli} --ipa '#{ipa_path}'"
40
+
41
+ #Add emails param in command
17
42
  if params[:emails]
18
- emails = params[:emails]
19
- UI.message("Emails - #{emails}")
43
+ command << " --emails '#{params[:emails]}'"
44
+ UI.message("Emails - #{params[:emails]}")
20
45
  end
21
46
 
22
- #developer personal message param
47
+ #Add message param in command
23
48
  if params[:message]
24
- message = params[:message]
25
- UI.message("Message - #{message}")
49
+ command << " --message '#{params[:message]}'"
50
+ UI.message("Message - #{params[:message]}")
26
51
  end
27
52
 
28
- #keep same linkparam
29
- if params[:keep_same_link]
30
- keep_same_link = params[:keep_same_link]
31
- UI.message("Keep Same Link - #{keep_same_link}")
53
+ #Add Keep Same Link param in command
54
+ if params[:keep_same_link] == true
55
+ command << " --keepsamelink"
56
+ UI.message("Keep Same Link - #{params[:keep_same_link]}")
32
57
  end
33
58
 
34
- #custom dropbox folder name
35
- if params[:dropbox_folder_name]
36
- dropbox_folder_name = params[:dropbox_folder_name]
37
- UI.message("Dropbox folder name - #{dropbox_folder_name}")
59
+ #Add dropbox folder name param in command
60
+ if dropbox_folder_name
61
+ command << " --dbfolder '#{dropbox_folder_name}'"
62
+ UI.message("Dropbox Folder Name - #{dropbox_folder_name}")
38
63
  end
39
64
 
40
- #AppBox Path
41
- if params[:appbox_path]
42
- appbox_path = "#{params[:appbox_path]}/Contents/MacOS/AppBox"
43
- else
44
- appbox_path = "/Applications/AppBox.app/Contents/MacOS/AppBox"
65
+ #Add Slack Webhook URL param in command
66
+ if params[:slack_webhook_url]
67
+ command << " --slackwebhook '#{params[:slack_webhook_url]}'"
68
+ UI.message("Slack Webhook URL - #{params[:slack_webhook_url]}")
45
69
  end
46
70
 
47
- #Check if AppBox exist at given path
48
- if File.file?(appbox_path)
49
- UI.message("")
50
- UI.message("AppBox Path - #{appbox_path}")
51
-
52
- ipa_path = Actions.lane_context[ Actions::SharedValues::IPA_OUTPUT_PATH ]
53
- ipa_file_name = File.basename(ipa_path)
54
- UI.message("IPA PATH - #{ipa_path}")
55
-
56
- # Copy ipa file into AppBox temporary directory
57
- appbox_data_dir = File.expand_path("~/Library/Containers/com.developerinsider.AppBox/Data")
58
- appbox_temp_path = File.join(appbox_data_dir, "tmp")
59
- UI.message("Copying IPA file to AppBox temporary directory - #{appbox_temp_path}")
60
- FileUtils.cp ipa_path, appbox_temp_path
61
- temp_ipa_path = File.join(appbox_temp_path, ipa_file_name)
62
-
63
- # Start AppBox
64
- UI.message("")
65
- UI.message("Starting AppBox...")
66
- UI.message("Upload process will start soon. Upload process might take a few minutes. Please don't interrupt the script.")
67
- if dropbox_folder_name
68
- exit_status = system("exec #{appbox_path} ipa='#{temp_ipa_path}' email='#{emails}' message='#{message}' keepsamelink=#{keep_same_link} dbfolder='#{dropbox_folder_name}'")
69
- else
70
- exit_status = system("exec #{appbox_path} ipa='#{temp_ipa_path}' email='#{emails}' message='#{message}' keepsamelink='#{keep_same_link}'")
71
- end
71
+ #Add MS Teams Webhook URL param in command
72
+ if params[:ms_teams_webhook_url]
73
+ command << " --msteamswebhook '#{params[:ms_teams_webhook_url]}'"
74
+ UI.message("MS Teams Webhook URL - #{params[:ms_teams_webhook_url]}")
75
+ end
72
76
 
73
- # Print upload status
74
- if exit_status
75
- UI.success("Successfully uploaded the IPA file to DropBox. Check below summary for more details.")
76
- # Check if share url file exist and print value
77
- share_url_file_path = File.join(appbox_data_dir, "Documents", ".appbox_share_value.json")
78
- if File.file?(share_url_file_path)
79
- file = File.read(share_url_file_path)
80
- share_urls_values = JSON.parse(file)
81
-
82
- Actions.lane_context[SharedValues::APPBOX_IPA_URL] = share_urls_values['APPBOX_IPA_URL']
83
- Actions.lane_context[SharedValues::APPBOX_SHARE_URL] = share_urls_values['APPBOX_SHARE_URL']
84
- Actions.lane_context[SharedValues::APPBOX_MANIFEST_URL] = share_urls_values['APPBOX_MANIFEST_URL']
85
-
86
- FastlaneCore::PrintTable.print_values(config: share_urls_values, hide_keys: [], title: "Summary for AppBox")
87
- end
88
- clean_temporary_files(appbox_temp_path)
89
- UI.success('AppBox finished successfully')
90
- else
91
- clean_temporary_files(appbox_temp_path)
92
- UI.error('AppBox finished with errors')
93
- UI.message('Please feel free to open an issue on the project GitHub page. Please include a description of what is not working right with your issue. https://github.com/getappbox/fastlane-plugin-appbox/issues/new')
94
- exit
95
- end
96
- else
97
- UI.error("AppBox not found at path #{appbox_path}. Please download (https://getappbox.com/download) and install appbox first. ")
98
- exit
77
+ #Add Webhook Message param in command
78
+ if params[:webhook_message]
79
+ command << " --webhookmessage '#{params[:webhook_message]}'"
80
+ UI.message("Webhook Message - #{params[:webhook_message]}")
99
81
  end
100
-
101
- end
102
82
 
103
- # Delete all files/folders in AppBox temporary directory
104
- def self.clean_temporary_files(appbox_temp_path)
105
- UI.message("Cleaning AppBox temporary directory - #{appbox_temp_path}")
106
- if File.directory?(appbox_temp_path)
107
- Dir.foreach(appbox_temp_path) do |file|
108
- next if file == '.' or file == '..'
109
- file_path = File.join(appbox_temp_path, file)
110
- if File.file?(file_path)
111
- File.delete(file_path)
112
- else
113
- FileUtils.rm_rf(file_path)
114
- end
83
+ UI.message("AppBox Command - #{command}")
84
+
85
+ # Execute command
86
+ exit_status = system("exec #{command}")
87
+
88
+ # Print upload status
89
+ if exit_status
90
+ UI.success("Successfully uploaded the IPA file to DropBox. Check below summary for more details.")
91
+ # Check if share url file exist and print value
92
+ share_url_file_path = File.join(File.expand_path('~'), ".appbox_share_value.json")
93
+ if File.file?(share_url_file_path)
94
+ file = File.read(share_url_file_path)
95
+ share_urls_values = JSON.parse(file)
96
+ Actions.lane_context[SharedValues::APPBOX_IPA_URL] = share_urls_values['APPBOX_IPA_URL']
97
+ Actions.lane_context[SharedValues::APPBOX_SHARE_URL] = share_urls_values['APPBOX_SHARE_URL']
98
+ Actions.lane_context[SharedValues::APPBOX_MANIFEST_URL] = share_urls_values['APPBOX_MANIFEST_URL']
99
+ FastlaneCore::PrintTable.print_values(config: share_urls_values, hide_keys: [], title: "Summary for AppBox")
115
100
  end
101
+ UI.success('AppBox finished successfully')
102
+ else
103
+ UI.error('AppBox finished with errors')
104
+ UI.message('Please feel free to open an issue on the project GitHub page. Please include a description of what is not working right with your issue. https://github.com/getappbox/fastlane-plugin-appbox/issues/new')
105
+ exit
116
106
  end
117
107
  end
118
108
 
@@ -121,7 +111,6 @@ module Fastlane
121
111
  ['APPBOX_IPA_URL', 'Upload IPA file URL to download IPA file.'],
122
112
  ['APPBOX_MANIFEST_URL', 'Manifest file URL for upload application.'],
123
113
  ['APPBOX_SHARE_URL', 'AppBox short shareable URL to install uploaded application.'],
124
- ['APPBOX_LONG_SHARE_URL', 'AppBox long shareable URL to install uploaded application.']
125
114
  ]
126
115
  end
127
116
 
@@ -142,16 +131,11 @@ module Fastlane
142
131
  FastlaneCore::ConfigItem.new(key: :emails,
143
132
  env_name: "FL_APPBOX_EMAILS",
144
133
  description: "Comma-separated list of email address that should receive application installation link",
145
- optional: false),
146
-
147
- FastlaneCore::ConfigItem.new(key: :appbox_path,
148
- env_name: "FL_APPBOX_PATH",
149
- description: "If you've setup AppBox in the different directory then you need to mention that here. Default is '/Applications/AppBox.app'",
150
134
  optional: true),
151
135
 
152
136
  FastlaneCore::ConfigItem.new(key: :message,
153
137
  env_name: "FL_APPBOX_MESSAGE",
154
- description: "Attach personal message in the email. Supported Keywords: The {PROJECT_NAME} - For Project Name, {BUILD_VERSION} - For Build Version, and {BUILD_NUMBER} - For Build Number",
138
+ description: "Attach personal message in the email. Supported Keywords: The {BUILD_NAME} - For Build Name, {BUILD_VERSION} - For Build Version, and {BUILD_NUMBER} - For Build Number",
155
139
  optional: true),
156
140
 
157
141
  FastlaneCore::ConfigItem.new(key: :keep_same_link,
@@ -165,6 +149,21 @@ module Fastlane
165
149
  env_name: "FL_APPBOX_DB_FOLDER_NAME",
166
150
  description: "You can change the link by providing a Custom Dropbox Folder Name. By default folder name will be the application bundle identifier. So, AppBox will keep the same link for the IPA file available in the same folder. Read more here - https://docs.getappbox.com/Features/keepsamelink/",
167
151
  optional: true),
152
+
153
+ FastlaneCore::ConfigItem.new(key: :slack_webhook_url,
154
+ env_name: "FL_APPBOX_SLACK_WEBHOOK_URL",
155
+ description: "Slack Incoming Webhook URL to send notification to a Slack channel",
156
+ optional: true),
157
+
158
+ FastlaneCore::ConfigItem.new(key: :ms_teams_webhook_url,
159
+ env_name: "FL_APPBOX_MS_TEAMS_WEBHOOK_URL",
160
+ description: "Microsoft Teams Incoming Webhook URL to send notification to a Teams channel",
161
+ optional: true),
162
+
163
+ FastlaneCore::ConfigItem.new(key: :webhook_message,
164
+ env_name: "FL_APPBOX_WEBHOOK_MESSAGE",
165
+ description: "Custom message to send along with Slack or Microsoft Teams notification. Supported Keywords: {BUILD_NAME}, {BUILD_VERSION}, {BUILD_NUMBER}, {SHARE_URL}",
166
+ optional: true),
168
167
  ]
169
168
  end
170
169
 
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module Appbox
3
- VERSION = "3.4.0"
3
+ VERSION = "3.5.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-appbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vineet Choudhary
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-05-24 00:00:00.000000000 Z
11
+ date: 2025-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -136,7 +136,7 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: 2.111.0
139
- description:
139
+ description:
140
140
  email: vineetchoudhary@live.in
141
141
  executables: []
142
142
  extensions: []
@@ -152,7 +152,7 @@ homepage: https://github.com/getappbox/fastlane-plugin-appbox
152
152
  licenses:
153
153
  - MIT
154
154
  metadata: {}
155
- post_install_message:
155
+ post_install_message:
156
156
  rdoc_options: []
157
157
  require_paths:
158
158
  - lib
@@ -167,8 +167,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
167
  - !ruby/object:Gem::Version
168
168
  version: '0'
169
169
  requirements: []
170
- rubygems_version: 3.5.23
171
- signing_key:
170
+ rubygems_version: 3.0.3.1
171
+ signing_key:
172
172
  specification_version: 4
173
173
  summary: Deploy Development, Ad-Hoc and In-house (Enterprise) iOS applications directly
174
174
  to the devices from your Dropbox account.