fastlane-plugin-appbox 1.5.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 +4 -4
- data/README.md +5 -5
- data/lib/fastlane/plugin/appbox/actions/appbox_action.rb +87 -63
- data/lib/fastlane/plugin/appbox/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8a3d1c761409556356ec39f0991325907fcb51f6d3cdc003500f22818a0d31ab
|
|
4
|
+
data.tar.gz: 907b7f796e46350974092ea21e578c2fae8af565d3075b5ebc11f6f7038c6516
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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/
|
|
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
|
+

|
|
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
|
-

|
|
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,87 +8,102 @@ 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
|
-
|
|
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
|
|
17
29
|
|
|
18
30
|
ipa_path = Actions.lane_context[ Actions::SharedValues::IPA_OUTPUT_PATH ]
|
|
31
|
+
ipa_file_name = File.basename(ipa_path)
|
|
19
32
|
UI.message("IPA PATH - #{ipa_path}")
|
|
20
33
|
|
|
21
|
-
#
|
|
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
|
|
22
42
|
if params[:emails]
|
|
23
|
-
emails
|
|
24
|
-
UI.message("Emails - #{emails}")
|
|
43
|
+
command << " --emails '#{params[:emails]}'"
|
|
44
|
+
UI.message("Emails - #{params[:emails]}")
|
|
25
45
|
end
|
|
26
46
|
|
|
27
|
-
#
|
|
47
|
+
#Add message param in command
|
|
28
48
|
if params[:message]
|
|
29
|
-
message
|
|
30
|
-
UI.message("Message - #{message}")
|
|
49
|
+
command << " --message '#{params[:message]}'"
|
|
50
|
+
UI.message("Message - #{params[:message]}")
|
|
31
51
|
end
|
|
32
52
|
|
|
33
|
-
#
|
|
34
|
-
if params[:keep_same_link]
|
|
35
|
-
|
|
36
|
-
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]}")
|
|
37
57
|
end
|
|
38
58
|
|
|
39
|
-
#
|
|
40
|
-
if
|
|
41
|
-
|
|
42
|
-
UI.message("Dropbox
|
|
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}")
|
|
43
63
|
end
|
|
44
64
|
|
|
45
|
-
#
|
|
46
|
-
if params[:
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
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]}")
|
|
50
69
|
end
|
|
51
70
|
|
|
52
|
-
#
|
|
53
|
-
if
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
UI.message("Starting AppBox...")
|
|
58
|
-
if dropbox_folder_name
|
|
59
|
-
exit_status = system("exec #{appbox_path} ipa='#{ipa_path}' email='#{emails}' message='#{message}' keepsamelink=#{keep_same_link} dbfolder='#{dropbox_folder_name}'")
|
|
60
|
-
else
|
|
61
|
-
exit_status = system("exec #{appbox_path} ipa='#{ipa_path}' email='#{emails}' message='#{message}' keepsamelink='#{keep_same_link}'")
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# Print upload status
|
|
65
|
-
if exit_status
|
|
66
|
-
|
|
67
|
-
# Check if share url file exist and print value
|
|
68
|
-
share_url_file_path = "#{Dir.home}/.appbox_share_value.json"
|
|
69
|
-
if File.file?(share_url_file_path)
|
|
70
|
-
file = File.read(share_url_file_path)
|
|
71
|
-
share_urls_values = JSON.parse(file)
|
|
72
|
-
|
|
73
|
-
Actions.lane_context[SharedValues::APPBOX_IPA_URL] = share_urls_values['APPBOX_IPA_URL']
|
|
74
|
-
Actions.lane_context[SharedValues::APPBOX_SHARE_URL] = share_urls_values['APPBOX_SHARE_URL']
|
|
75
|
-
Actions.lane_context[SharedValues::APPBOX_MANIFEST_URL] = share_urls_values['APPBOX_MANIFEST_URL']
|
|
76
|
-
Actions.lane_context[SharedValues::APPBOX_LONG_SHARE_URL] = share_urls_values['APPBOX_LONG_SHARE_URL']
|
|
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
|
|
77
76
|
|
|
78
|
-
|
|
79
|
-
|
|
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]}")
|
|
81
|
+
end
|
|
80
82
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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")
|
|
86
100
|
end
|
|
87
|
-
|
|
88
|
-
|
|
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')
|
|
89
105
|
exit
|
|
90
106
|
end
|
|
91
|
-
|
|
92
107
|
end
|
|
93
108
|
|
|
94
109
|
def self.output
|
|
@@ -96,7 +111,6 @@ module Fastlane
|
|
|
96
111
|
['APPBOX_IPA_URL', 'Upload IPA file URL to download IPA file.'],
|
|
97
112
|
['APPBOX_MANIFEST_URL', 'Manifest file URL for upload application.'],
|
|
98
113
|
['APPBOX_SHARE_URL', 'AppBox short shareable URL to install uploaded application.'],
|
|
99
|
-
['APPBOX_LONG_SHARE_URL', 'AppBox long shareable URL to install uploaded application.']
|
|
100
114
|
]
|
|
101
115
|
end
|
|
102
116
|
|
|
@@ -117,16 +131,11 @@ module Fastlane
|
|
|
117
131
|
FastlaneCore::ConfigItem.new(key: :emails,
|
|
118
132
|
env_name: "FL_APPBOX_EMAILS",
|
|
119
133
|
description: "Comma-separated list of email address that should receive application installation link",
|
|
120
|
-
optional: false),
|
|
121
|
-
|
|
122
|
-
FastlaneCore::ConfigItem.new(key: :appbox_path,
|
|
123
|
-
env_name: "FL_APPBOX_PATH",
|
|
124
|
-
description: "If you've setup AppBox in the different directory then you need to mention that here. Default is '/Applications/AppBox.app'",
|
|
125
134
|
optional: true),
|
|
126
135
|
|
|
127
136
|
FastlaneCore::ConfigItem.new(key: :message,
|
|
128
137
|
env_name: "FL_APPBOX_MESSAGE",
|
|
129
|
-
description: "Attach personal message in the email. Supported Keywords: The {
|
|
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",
|
|
130
139
|
optional: true),
|
|
131
140
|
|
|
132
141
|
FastlaneCore::ConfigItem.new(key: :keep_same_link,
|
|
@@ -140,6 +149,21 @@ module Fastlane
|
|
|
140
149
|
env_name: "FL_APPBOX_DB_FOLDER_NAME",
|
|
141
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/",
|
|
142
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),
|
|
143
167
|
]
|
|
144
168
|
end
|
|
145
169
|
|
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:
|
|
4
|
+
version: 3.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vineet Choudhary
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2025-09-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: pry
|
|
@@ -167,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
167
167
|
- !ruby/object:Gem::Version
|
|
168
168
|
version: '0'
|
|
169
169
|
requirements: []
|
|
170
|
-
rubygems_version: 3.3.
|
|
170
|
+
rubygems_version: 3.0.3.1
|
|
171
171
|
signing_key:
|
|
172
172
|
specification_version: 4
|
|
173
173
|
summary: Deploy Development, Ad-Hoc and In-house (Enterprise) iOS applications directly
|