fastlane-plugin-appbox 3.5.0 → 4.0.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: 8a3d1c761409556356ec39f0991325907fcb51f6d3cdc003500f22818a0d31ab
4
- data.tar.gz: 907b7f796e46350974092ea21e578c2fae8af565d3075b5ebc11f6f7038c6516
3
+ metadata.gz: 3db84f527f2c015f99d005447b3f209bfca6a1c020ca56fed4a099eb13ceff6e
4
+ data.tar.gz: fd340764d6fa68040b93ec7f7b88874850eadc71ae2eb2a67cd0666f620f78f5
5
5
  SHA512:
6
- metadata.gz: 547103bab6e974465c46c235af121279b801d400680c2f1b034dc6a0c8ea9e38a5ef64c0431f4840d1cf60b2d87018167c22d445d4233d2acf00ed40336532ea
7
- data.tar.gz: 0d08e26a75304f1c8563c850f0dd5e6ecd500daa536bf7527b637f2c5e651bdf22630343a17521f3ce3a49cbc2087033e5dd39e59283ef5a97d23a77a231f3f1
6
+ metadata.gz: f1ee9fbc055c6c129638af19988c734229a1bde2b0466e83d230b115d2bf80318e792153eb49cfa8714280765cdaf45a5a1a095d9a66ee8d70909b59cd81f6ba
7
+ data.tar.gz: 5729b9846272dc136a5d413195c1d44110f56a779e65355e7f44e5edbb39043107fdb662156317bf5dda83f1b800a327a6c8daadc3bd2b8e67c2a3024dff45d7
data/README.md CHANGED
@@ -10,17 +10,28 @@
10
10
  fastlane add_plugin appbox
11
11
  ```
12
12
 
13
- **Step 2** - Download the latest version of AppBox from [here](https://github.com/vineetchoudhary/AppBox-iOSAppsWirelessInstallation/releases) or [here](https://getappbox.com/download) and install it into `/Applications` directory of you mac. Now, open AppBox and login with your Dropbox account.
13
+ **Step 2** - Install AppBox using one of the following methods:
14
+
15
+ - **Direct Install:**
16
+ ```bash
17
+ curl -s https://getappbox.com/install.sh | bash
18
+ ```
19
+
20
+ - **Homebrew:**
21
+ ```bash
22
+ brew install --cask appbox
23
+ ```
24
+
25
+ Now, open AppBox and login with your Dropbox account.
14
26
 
15
27
  **Step 3** - Define appbox action in your project Fastfile with emails and message. Here the available params for appbox plugins -
16
28
 
17
- - `emails` (Required | String) - Comma-separated list of email address that should receive application installation link.
18
- - `message` (Optional | String) - Attach personal message in the email. Supported Keywords:
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`
29
+ - `emails` (Optional | String) - Comma-separated list of email address that should receive application installation link.
30
+ - `message` (Optional | String) - A personal message shown under "Message from the developer" in the email. Sent verbatim — AppBox 4 no longer substitutes `{PROJECT_NAME}` / `{BUILD_VERSION}` / `{BUILD_NUMBER}` placeholders, so build them yourself from fastlane's own variables (see the examples below).
23
31
  - `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/).
32
+ - `slack_webhook_url` (Optional | String) - Slack Incoming Webhook URL to post a notification to a Slack channel.
33
+ - `ms_teams_webhook_url` (Optional | String) - Microsoft Teams Incoming Webhook URL to post a notification to a Teams channel.
34
+ - `webhook_message` (Optional | String) - **Deprecated and ignored since AppBox 4.** The CLI prints a note and generates the notification text from the build itself. Still accepted so existing Fastfiles keep working.
24
35
  - `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
36
 
26
37
 
@@ -50,7 +61,7 @@ platform :ios do
50
61
  lane :gymbox do
51
62
  gym
52
63
  appbox(
53
- emails: 'you@example.com,'someoneelse@example.com',
64
+ emails: 'you@example.com,someoneelse@example.com',
54
65
  )
55
66
  end
56
67
  end
@@ -66,7 +77,7 @@ platform :ios do
66
77
  gym
67
78
  appbox(
68
79
  emails: 'you@example.com',
69
- message: '{PROJECT_NAME} - {BUILD_VERSION}({BUILD_NUMBER}) is ready to test.',
80
+ message: "#{lane_context[SharedValues::IPA_OUTPUT_PATH] ? File.basename(lane_context[SharedValues::IPA_OUTPUT_PATH], '.ipa') : 'Build'} is ready to test.",
70
81
  )
71
82
  end
72
83
  end
@@ -82,7 +93,7 @@ platform :ios do
82
93
  gym
83
94
  appbox(
84
95
  emails: 'you@example.com',
85
- message: '{PROJECT_NAME} - {BUILD_VERSION}({BUILD_NUMBER}) is ready to test.',
96
+ message: "#{lane_context[SharedValues::IPA_OUTPUT_PATH] ? File.basename(lane_context[SharedValues::IPA_OUTPUT_PATH], '.ipa') : 'Build'} is ready to test.",
86
97
  keep_same_link: true,
87
98
  )
88
99
  end
@@ -99,7 +110,7 @@ platform :ios do
99
110
  gym
100
111
  appbox(
101
112
  emails: 'you@example.com',
102
- message: '{PROJECT_NAME} - {BUILD_VERSION}({BUILD_NUMBER}) is ready to test.',
113
+ message: "#{lane_context[SharedValues::IPA_OUTPUT_PATH] ? File.basename(lane_context[SharedValues::IPA_OUTPUT_PATH], '.ipa') : 'Build'} is ready to test.",
103
114
  keep_same_link: true,
104
115
  dropbox_folder_name: 'Fastlane-Demo-Keep-Same-Link',
105
116
  )
@@ -107,22 +118,6 @@ platform :ios do
107
118
  end
108
119
  ```
109
120
 
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
121
  #### Note
127
122
  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
123
  ![](/AppBox-Fastlane-Demo-Project/images/terminal-permission.webp)
@@ -133,7 +128,7 @@ When you run this for the first time, a pop-up will appear stating that "Termina
133
128
  - `APPBOX_MANIFEST_URL` - Manifest file URL for upload application.
134
129
 
135
130
  ## 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/vineetchoudhary/AppBox-iOSAppsWirelessInstallation).
131
+ [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
132
 
138
133
  ## 5. Example
139
134
 
@@ -142,6 +137,6 @@ Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plu
142
137
  ## 6. Issues and Feedback
143
138
  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
139
 
145
- ## 6. Troubleshooting
140
+ ## 7. Troubleshooting
146
141
  If you have trouble using plugins, check out the [Plugins Troubleshooting](https://docs.fastlane.tools/plugins/plugins-troubleshooting/) guide.
147
142
 
@@ -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
 
@@ -19,16 +20,18 @@ module Fastlane
19
20
  UI.message("Dropbox folder name - #{dropbox_folder_name}")
20
21
  end
21
22
 
22
- #AppBox CLI
23
+ # AppBox CLI
23
24
  appboxcli = "appboxcli"
24
25
  appboxcli_path = `which #{appboxcli}`.strip
25
26
  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
27
+ UI.user_error!("AppBox CLI not found. Install it from AppBox Preferences > General, or read more here - https://docs.getappbox.com/CommandLineInterface/")
28
28
  end
29
29
 
30
- ipa_path = Actions.lane_context[ Actions::SharedValues::IPA_OUTPUT_PATH ]
31
- ipa_file_name = File.basename(ipa_path)
30
+ ipa_path = Actions.lane_context[Actions::SharedValues::IPA_OUTPUT_PATH]
31
+ if ipa_path.nil? || ipa_path.to_s.empty?
32
+ UI.user_error!("No IPA found. Run `gym`/`build_app` before `appbox`, or set lane_context[SharedValues::IPA_OUTPUT_PATH] yourself.")
33
+ end
34
+ UI.user_error!("IPA not found at #{ipa_path}") unless File.exist?(ipa_path)
32
35
  UI.message("IPA PATH - #{ipa_path}")
33
36
 
34
37
  # Start AppBox
@@ -36,55 +39,50 @@ module Fastlane
36
39
  UI.message("Starting AppBox...")
37
40
  UI.message("Upload process will start soon. Upload process might take a few minutes. Please don't interrupt the script.")
38
41
 
39
- command = "#{appboxcli} --ipa '#{ipa_path}'"
42
+ # Built as an argv array and run without a shell, so a value containing a
43
+ # quote or a space cannot break the command.
44
+ args = [appboxcli, "--ipa", ipa_path.to_s]
40
45
 
41
- #Add emails param in command
42
46
  if params[:emails]
43
- command << " --emails '#{params[:emails]}'"
47
+ args += ["--emails", params[:emails].to_s]
44
48
  UI.message("Emails - #{params[:emails]}")
45
49
  end
46
50
 
47
- #Add message param in command
48
51
  if params[:message]
49
- command << " --message '#{params[:message]}'"
52
+ args += ["--message", params[:message].to_s]
50
53
  UI.message("Message - #{params[:message]}")
51
54
  end
52
55
 
53
- #Add Keep Same Link param in command
54
56
  if params[:keep_same_link] == true
55
- command << " --keepsamelink"
57
+ args << "--keepsamelink"
56
58
  UI.message("Keep Same Link - #{params[:keep_same_link]}")
57
59
  end
58
60
 
59
- #Add dropbox folder name param in command
60
61
  if dropbox_folder_name
61
- command << " --dbfolder '#{dropbox_folder_name}'"
62
+ args += ["--dbfolder", dropbox_folder_name.to_s]
62
63
  UI.message("Dropbox Folder Name - #{dropbox_folder_name}")
63
64
  end
64
65
 
65
- #Add Slack Webhook URL param in command
66
66
  if params[:slack_webhook_url]
67
- command << " --slackwebhook '#{params[:slack_webhook_url]}'"
67
+ args += ["--slackwebhook", params[:slack_webhook_url].to_s]
68
68
  UI.message("Slack Webhook URL - #{params[:slack_webhook_url]}")
69
69
  end
70
70
 
71
- #Add MS Teams Webhook URL param in command
72
71
  if params[:ms_teams_webhook_url]
73
- command << " --msteamswebhook '#{params[:ms_teams_webhook_url]}'"
72
+ args += ["--msteamswebhook", params[:ms_teams_webhook_url].to_s]
74
73
  UI.message("MS Teams Webhook URL - #{params[:ms_teams_webhook_url]}")
75
74
  end
76
75
 
77
- #Add Webhook Message param in command
78
76
  if params[:webhook_message]
79
- command << " --webhookmessage '#{params[:webhook_message]}'"
77
+ args += ["--webhookmessage", params[:webhook_message].to_s]
80
78
  UI.message("Webhook Message - #{params[:webhook_message]}")
81
79
  end
82
80
 
83
- UI.message("AppBox Command - #{command}")
84
-
85
- # Execute command
86
- exit_status = system("exec #{command}")
87
-
81
+ UI.message("AppBox Command - #{Shellwords.join(args)}")
82
+
83
+ # Execute without a shell.
84
+ exit_status = system(*args)
85
+
88
86
  # Print upload status
89
87
  if exit_status
90
88
  UI.success("Successfully uploaded the IPA file to DropBox. Check below summary for more details.")
@@ -99,10 +97,9 @@ module Fastlane
99
97
  FastlaneCore::PrintTable.print_values(config: share_urls_values, hide_keys: [], title: "Summary for AppBox")
100
98
  end
101
99
  UI.success('AppBox finished successfully')
102
- else
100
+ else
103
101
  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
102
+ 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
103
  end
107
104
  end
108
105
 
@@ -135,7 +132,7 @@ module Fastlane
135
132
 
136
133
  FastlaneCore::ConfigItem.new(key: :message,
137
134
  env_name: "FL_APPBOX_MESSAGE",
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",
135
+ description: "A personal message shown under \"Message from the developer\" in the email. Sent verbatim; AppBox 4 does not substitute {BUILD_NAME}/{BUILD_VERSION}/{BUILD_NUMBER} placeholders",
139
136
  optional: true),
140
137
 
141
138
  FastlaneCore::ConfigItem.new(key: :keep_same_link,
@@ -162,7 +159,7 @@ module Fastlane
162
159
 
163
160
  FastlaneCore::ConfigItem.new(key: :webhook_message,
164
161
  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}",
162
+ description: "Deprecated and ignored since AppBox 4 the notification text is generated from the build. Accepted so existing Fastfiles keep working",
166
163
  optional: true),
167
164
  ]
168
165
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module Appbox
3
- VERSION = "3.5.0"
3
+ VERSION = "4.0.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.5.0
4
+ version: 4.0.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-09-21 00:00:00.000000000 Z
11
+ date: 2026-09-06 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.0.3.1
171
- signing_key:
170
+ rubygems_version: 3.5.22
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.