fastlane-plugin-appbox 3.5.0 → 4.0.1
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 +44 -33
- data/lib/fastlane/plugin/appbox/actions/appbox_action.rb +31 -36
- data/lib/fastlane/plugin/appbox/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 985df3a0ef7d9ac530fa7b9446a659cb3fd866005acf71b8dda922e537137629
|
|
4
|
+
data.tar.gz: a22b641a959bdd754262adc06d98cc0bf427e11e2f6656da503a9e78bf03bcab
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c68ba482fe892371f11e752da1a571bd08e21547895b1bcbda0d512ddccec83231509c4925669fcffba9cb05b031a07327fd257a6ec24b38c0f2b1594b1ff416
|
|
7
|
+
data.tar.gz: 3dfbbd52d8be06b3ca6a1fc25d0cc7e6912aaa834425380b288db25c10efa1b9a8238c07d88440bd06bde5dc82e8e6b364f2099e99c16025fd657ffcff601fe4
|
data/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# AppBox Plugin for Fastlane
|
|
2
2
|
|
|
3
3
|
[](https://rubygems.org/gems/fastlane-plugin-appbox)
|
|
4
|
+
[](https://github.com/getappbox/fastlane-plugin-appbox/actions/workflows/test.yml)
|
|
4
5
|
|
|
5
6
|
## 1. Getting Started
|
|
6
7
|
|
|
@@ -10,19 +11,49 @@
|
|
|
10
11
|
fastlane add_plugin appbox
|
|
11
12
|
```
|
|
12
13
|
|
|
13
|
-
**Step 2** -
|
|
14
|
+
**Step 2** - Install AppBox using one of the following methods:
|
|
15
|
+
|
|
16
|
+
- **Direct Install:**
|
|
17
|
+
```bash
|
|
18
|
+
curl -s https://getappbox.com/install.sh | bash
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
- **Homebrew:**
|
|
22
|
+
```bash
|
|
23
|
+
brew install --cask appbox
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Now, open AppBox and login with your Dropbox account.
|
|
27
|
+
|
|
28
|
+
This plugin targets **AppBox 4.0 or later**, which requires macOS 15 Sequoia or later.
|
|
14
29
|
|
|
15
30
|
**Step 3** - Define appbox action in your project Fastfile with emails and message. Here the available params for appbox plugins -
|
|
16
31
|
|
|
17
|
-
- `emails` (
|
|
18
|
-
- `message` (Optional | String) -
|
|
19
|
-
>The {PROJECT_NAME} - For Project Name,
|
|
20
|
-
>{BUILD_VERSION} - For Build Version, and
|
|
21
|
-
>{BUILD_NUMBER} - For Build Number.
|
|
22
|
-
- `appbox_path` (Optional | String) - If you've setup AppBox in the different directory then you need to mention that here. Default is `/Applications/AppBox.app`
|
|
32
|
+
- `emails` (Optional | String) - Comma-separated list of email address that should receive application installation link.
|
|
33
|
+
- `message` (Optional | String) - A personal message shown under "Message from the developer" in the email, such as `'Here is the latest build.'`. Sent exactly as written — see [Using build details in the message](#using-build-details-in-the-message) to include the version or build number, or if you are moving off the AppBox 3 placeholders.
|
|
23
34
|
- `keep_same_link` (Optional | Bool) - This feature will keep same short URL for all future build/IPA uploaded with same bundle identifier. If this option is enabled, you can also download the previous build with the same URL. Read more [here](https://docs.getappbox.com/Features/keepsamelink/).
|
|
35
|
+
- `slack_webhook_url` (Optional | String) - Slack Incoming Webhook URL to post a notification to a Slack channel.
|
|
36
|
+
- `ms_teams_webhook_url` (Optional | String) - Microsoft Teams Incoming Webhook URL to post a notification to a Teams channel.
|
|
37
|
+
- `webhook_message` (Optional | String) - **Deprecated and ignored since AppBox 4**, which generates the notification text from the build itself. The plugin warns and drops it, so existing Fastfiles keep working unchanged.
|
|
24
38
|
- `dropbox_folder_name` (Optional | String) - 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/).
|
|
25
39
|
|
|
40
|
+
### Using build details in the message
|
|
41
|
+
|
|
42
|
+
`message` is plain text and is sent exactly as written, so most Fastfiles just pass a sentence. To include the version, build number or app name, interpolate them from fastlane in a **double-quoted** string, since Ruby only expands `#{}` there:
|
|
43
|
+
|
|
44
|
+
```rb
|
|
45
|
+
message: "MyApp #{get_version_number}(#{get_build_number}) is ready to test.",
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
AppBox 3 used to do this for you by substituting `{BUILD_NAME}`, `{BUILD_VERSION}` and `{BUILD_NUMBER}`. AppBox 4 removed that substitution, so a message still containing them arrives with the braces intact. Replace them as follows:
|
|
49
|
+
|
|
50
|
+
| AppBox 3 placeholder | Replace with |
|
|
51
|
+
| --- | --- |
|
|
52
|
+
| `{BUILD_NAME}` | your app or scheme name, or `#{File.basename(lane_context[SharedValues::IPA_OUTPUT_PATH], '.ipa')}` |
|
|
53
|
+
| `{BUILD_VERSION}` | `#{get_version_number}` |
|
|
54
|
+
| `{BUILD_NUMBER}` | `#{get_build_number}` |
|
|
55
|
+
| `{SHARE_URL}` | Nothing to do. It only applied to `webhook_message`, which AppBox 4 ignores and generates itself. |
|
|
56
|
+
|
|
26
57
|
|
|
27
58
|
## 2. Demo Fastfile with a lane `gymbox` with Different Options
|
|
28
59
|
|
|
@@ -50,7 +81,7 @@ platform :ios do
|
|
|
50
81
|
lane :gymbox do
|
|
51
82
|
gym
|
|
52
83
|
appbox(
|
|
53
|
-
emails: 'you@example.com,
|
|
84
|
+
emails: 'you@example.com,someoneelse@example.com',
|
|
54
85
|
)
|
|
55
86
|
end
|
|
56
87
|
end
|
|
@@ -66,7 +97,7 @@ platform :ios do
|
|
|
66
97
|
gym
|
|
67
98
|
appbox(
|
|
68
99
|
emails: 'you@example.com',
|
|
69
|
-
message: '
|
|
100
|
+
message: 'Please test the new checkout flow.',
|
|
70
101
|
)
|
|
71
102
|
end
|
|
72
103
|
end
|
|
@@ -82,7 +113,7 @@ platform :ios do
|
|
|
82
113
|
gym
|
|
83
114
|
appbox(
|
|
84
115
|
emails: 'you@example.com',
|
|
85
|
-
message: '
|
|
116
|
+
message: 'Here is the latest build.',
|
|
86
117
|
keep_same_link: true,
|
|
87
118
|
)
|
|
88
119
|
end
|
|
@@ -99,7 +130,7 @@ platform :ios do
|
|
|
99
130
|
gym
|
|
100
131
|
appbox(
|
|
101
132
|
emails: 'you@example.com',
|
|
102
|
-
message: '
|
|
133
|
+
message: 'Here is the latest build.',
|
|
103
134
|
keep_same_link: true,
|
|
104
135
|
dropbox_folder_name: 'Fastlane-Demo-Keep-Same-Link',
|
|
105
136
|
)
|
|
@@ -107,33 +138,13 @@ platform :ios do
|
|
|
107
138
|
end
|
|
108
139
|
```
|
|
109
140
|
|
|
110
|
-
#### 6. Upload IPA file where AppBox available at some custom path instead of macOS Application Directory.
|
|
111
|
-
|
|
112
|
-
```rb
|
|
113
|
-
default_platform(:ios)
|
|
114
|
-
|
|
115
|
-
platform :ios do
|
|
116
|
-
lane :gymbox do
|
|
117
|
-
gym
|
|
118
|
-
appbox(
|
|
119
|
-
emails: 'you@example.com,'someoneelse@example.com',
|
|
120
|
-
appbox_path:'/Users/vineetchoudhary/Desktop/AppBox3.4.0/AppBox.app',
|
|
121
|
-
)
|
|
122
|
-
end
|
|
123
|
-
end
|
|
124
|
-
```
|
|
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
|
-
|
|
130
141
|
## 3. Supported AppBox link access via Fastlane SharedValues
|
|
131
142
|
- `APPBOX_SHARE_URL` - AppBox short shareable URL to install uploaded application.
|
|
132
143
|
- `APPBOX_IPA_URL`- Upload IPA file URL to download IPA file.
|
|
133
144
|
- `APPBOX_MANIFEST_URL` - Manifest file URL for upload application.
|
|
134
145
|
|
|
135
146
|
## 4. About AppBox
|
|
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/
|
|
147
|
+
[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/getappbox/AppBox-iOSAppsWirelessInstallation).
|
|
137
148
|
|
|
138
149
|
## 5. Example
|
|
139
150
|
|
|
@@ -142,6 +153,6 @@ Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plu
|
|
|
142
153
|
## 6. Issues and Feedback
|
|
143
154
|
For any other issues and feedback about this plugin, please submit it to this [repository](https://github.com/getappbox/fastlane-plugin-appbox/issues/new).
|
|
144
155
|
|
|
145
|
-
##
|
|
156
|
+
## 7. Troubleshooting
|
|
146
157
|
If you have trouble using plugins, check out the [Plugins Troubleshooting](https://docs.fastlane.tools/plugins/plugins-troubleshooting/) guide.
|
|
147
158
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require "json"
|
|
2
|
+
require "shellwords"
|
|
2
3
|
require 'fastlane/action'
|
|
3
4
|
require_relative '../helper/appbox_helper'
|
|
4
5
|
|
|
@@ -12,23 +13,24 @@ module Fastlane
|
|
|
12
13
|
|
|
13
14
|
class AppboxAction < Action
|
|
14
15
|
def self.run(params)
|
|
15
|
-
|
|
16
|
-
#custom dropbox folder name
|
|
16
|
+
# custom dropbox folder name
|
|
17
17
|
if params[:dropbox_folder_name]
|
|
18
18
|
dropbox_folder_name = params[:dropbox_folder_name]
|
|
19
19
|
UI.message("Dropbox folder name - #{dropbox_folder_name}")
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
#AppBox CLI
|
|
22
|
+
# AppBox CLI
|
|
23
23
|
appboxcli = "appboxcli"
|
|
24
24
|
appboxcli_path = `which #{appboxcli}`.strip
|
|
25
25
|
if appboxcli_path.empty?
|
|
26
|
-
UI.
|
|
27
|
-
exit
|
|
26
|
+
UI.user_error!("AppBox CLI not found. Install it from AppBox Preferences > General, or read more here - https://docs.getappbox.com/CommandLineInterface/")
|
|
28
27
|
end
|
|
29
28
|
|
|
30
|
-
ipa_path = Actions.lane_context[
|
|
31
|
-
|
|
29
|
+
ipa_path = Actions.lane_context[Actions::SharedValues::IPA_OUTPUT_PATH]
|
|
30
|
+
if ipa_path.nil? || ipa_path.to_s.empty?
|
|
31
|
+
UI.user_error!("No IPA found. Run `gym`/`build_app` before `appbox`, or set lane_context[SharedValues::IPA_OUTPUT_PATH] yourself.")
|
|
32
|
+
end
|
|
33
|
+
UI.user_error!("IPA not found at #{ipa_path}") unless File.exist?(ipa_path)
|
|
32
34
|
UI.message("IPA PATH - #{ipa_path}")
|
|
33
35
|
|
|
34
36
|
# Start AppBox
|
|
@@ -36,55 +38,49 @@ module Fastlane
|
|
|
36
38
|
UI.message("Starting AppBox...")
|
|
37
39
|
UI.message("Upload process will start soon. Upload process might take a few minutes. Please don't interrupt the script.")
|
|
38
40
|
|
|
39
|
-
|
|
41
|
+
# Built as an argv array and run without a shell, so a value containing a
|
|
42
|
+
# quote or a space cannot break the command.
|
|
43
|
+
args = [appboxcli, "--ipa", ipa_path.to_s]
|
|
40
44
|
|
|
41
|
-
#Add emails param in command
|
|
42
45
|
if params[:emails]
|
|
43
|
-
|
|
46
|
+
args += ["--emails", params[:emails].to_s]
|
|
44
47
|
UI.message("Emails - #{params[:emails]}")
|
|
45
48
|
end
|
|
46
49
|
|
|
47
|
-
#Add message param in command
|
|
48
50
|
if params[:message]
|
|
49
|
-
|
|
51
|
+
args += ["--message", params[:message].to_s]
|
|
50
52
|
UI.message("Message - #{params[:message]}")
|
|
51
53
|
end
|
|
52
54
|
|
|
53
|
-
#Add Keep Same Link param in command
|
|
54
55
|
if params[:keep_same_link] == true
|
|
55
|
-
|
|
56
|
+
args << "--keepsamelink"
|
|
56
57
|
UI.message("Keep Same Link - #{params[:keep_same_link]}")
|
|
57
58
|
end
|
|
58
59
|
|
|
59
|
-
#Add dropbox folder name param in command
|
|
60
60
|
if dropbox_folder_name
|
|
61
|
-
|
|
61
|
+
args += ["--dbfolder", dropbox_folder_name.to_s]
|
|
62
62
|
UI.message("Dropbox Folder Name - #{dropbox_folder_name}")
|
|
63
63
|
end
|
|
64
64
|
|
|
65
|
-
#Add Slack Webhook URL param in command
|
|
66
65
|
if params[:slack_webhook_url]
|
|
67
|
-
|
|
66
|
+
args += ["--slackwebhook", params[:slack_webhook_url].to_s]
|
|
68
67
|
UI.message("Slack Webhook URL - #{params[:slack_webhook_url]}")
|
|
69
68
|
end
|
|
70
69
|
|
|
71
|
-
#Add MS Teams Webhook URL param in command
|
|
72
70
|
if params[:ms_teams_webhook_url]
|
|
73
|
-
|
|
71
|
+
args += ["--msteamswebhook", params[:ms_teams_webhook_url].to_s]
|
|
74
72
|
UI.message("MS Teams Webhook URL - #{params[:ms_teams_webhook_url]}")
|
|
75
73
|
end
|
|
76
74
|
|
|
77
|
-
#Add Webhook Message param in command
|
|
78
75
|
if params[:webhook_message]
|
|
79
|
-
|
|
80
|
-
UI.message("Webhook Message - #{params[:webhook_message]}")
|
|
76
|
+
UI.important("webhook_message is deprecated and ignored since AppBox 4 - the notification text is generated from the build.")
|
|
81
77
|
end
|
|
82
78
|
|
|
83
|
-
UI.message("AppBox Command - #{
|
|
84
|
-
|
|
85
|
-
# Execute
|
|
86
|
-
exit_status = system(
|
|
87
|
-
|
|
79
|
+
UI.message("AppBox Command - #{Shellwords.join(args)}")
|
|
80
|
+
|
|
81
|
+
# Execute without a shell.
|
|
82
|
+
exit_status = system(*args)
|
|
83
|
+
|
|
88
84
|
# Print upload status
|
|
89
85
|
if exit_status
|
|
90
86
|
UI.success("Successfully uploaded the IPA file to DropBox. Check below summary for more details.")
|
|
@@ -99,10 +95,9 @@ module Fastlane
|
|
|
99
95
|
FastlaneCore::PrintTable.print_values(config: share_urls_values, hide_keys: [], title: "Summary for AppBox")
|
|
100
96
|
end
|
|
101
97
|
UI.success('AppBox finished successfully')
|
|
102
|
-
else
|
|
98
|
+
else
|
|
103
99
|
UI.error('AppBox finished with errors')
|
|
104
|
-
UI.
|
|
105
|
-
exit
|
|
100
|
+
UI.user_error!('AppBox upload failed. Please feel free to open an issue on the project GitHub page, including a description of what is not working. https://github.com/getappbox/fastlane-plugin-appbox/issues/new')
|
|
106
101
|
end
|
|
107
102
|
end
|
|
108
103
|
|
|
@@ -110,7 +105,7 @@ module Fastlane
|
|
|
110
105
|
[
|
|
111
106
|
['APPBOX_IPA_URL', 'Upload IPA file URL to download IPA file.'],
|
|
112
107
|
['APPBOX_MANIFEST_URL', 'Manifest file URL for upload application.'],
|
|
113
|
-
['APPBOX_SHARE_URL', 'AppBox short shareable URL to install uploaded application.']
|
|
108
|
+
['APPBOX_SHARE_URL', 'AppBox short shareable URL to install uploaded application.']
|
|
114
109
|
]
|
|
115
110
|
end
|
|
116
111
|
|
|
@@ -135,7 +130,7 @@ module Fastlane
|
|
|
135
130
|
|
|
136
131
|
FastlaneCore::ConfigItem.new(key: :message,
|
|
137
132
|
env_name: "FL_APPBOX_MESSAGE",
|
|
138
|
-
description: "
|
|
133
|
+
description: "A personal message shown under \"Message from the developer\" in the email, e.g. 'Here is the latest build.'. Sent exactly as written; AppBox 4 does not substitute the {BUILD_NAME}/{BUILD_VERSION}/{BUILD_NUMBER} placeholders AppBox 3 supported",
|
|
139
134
|
optional: true),
|
|
140
135
|
|
|
141
136
|
FastlaneCore::ConfigItem.new(key: :keep_same_link,
|
|
@@ -162,13 +157,13 @@ module Fastlane
|
|
|
162
157
|
|
|
163
158
|
FastlaneCore::ConfigItem.new(key: :webhook_message,
|
|
164
159
|
env_name: "FL_APPBOX_WEBHOOK_MESSAGE",
|
|
165
|
-
description: "
|
|
166
|
-
optional: true)
|
|
160
|
+
description: "Deprecated and ignored since AppBox 4, which generates the notification text from the build. Accepted, with a warning, so existing Fastfiles keep working",
|
|
161
|
+
optional: true)
|
|
167
162
|
]
|
|
168
163
|
end
|
|
169
164
|
|
|
170
165
|
def self.is_supported?(platform)
|
|
171
|
-
[:ios].include?
|
|
166
|
+
[:ios].include?(platform)
|
|
172
167
|
end
|
|
173
168
|
end
|
|
174
169
|
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:
|
|
4
|
+
version: 4.0.1
|
|
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: 2026-09-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: pry
|