fastlane-plugin-create_dmg 0.1.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 +7 -0
- data/LICENSE +48 -0
- data/README.md +52 -0
- data/lib/fastlane/plugin/create_dmg/actions/create_dmg_action.rb +226 -0
- data/lib/fastlane/plugin/create_dmg/actions/update_dmg_action.rb +118 -0
- data/lib/fastlane/plugin/create_dmg/assets/update-dmg.sh +206 -0
- data/lib/fastlane/plugin/create_dmg/helper/create_dmg_helper.rb +86 -0
- data/lib/fastlane/plugin/create_dmg/helper/update_dmg_helper.rb +43 -0
- data/lib/fastlane/plugin/create_dmg/vendor/create-dmg/LICENSE +22 -0
- data/lib/fastlane/plugin/create_dmg/vendor/create-dmg/Makefile +33 -0
- data/lib/fastlane/plugin/create_dmg/vendor/create-dmg/README.md +115 -0
- data/lib/fastlane/plugin/create_dmg/vendor/create-dmg/builder/create-dmg.builder +26 -0
- data/lib/fastlane/plugin/create_dmg/vendor/create-dmg/create-dmg +484 -0
- data/lib/fastlane/plugin/create_dmg/vendor/create-dmg/doc-project/Developer Notes.md +35 -0
- data/lib/fastlane/plugin/create_dmg/vendor/create-dmg/doc-project/Release Checklist.md +10 -0
- data/lib/fastlane/plugin/create_dmg/vendor/create-dmg/examples/01-main-example/installer_background.png +0 -0
- data/lib/fastlane/plugin/create_dmg/vendor/create-dmg/examples/01-main-example/sample +25 -0
- data/lib/fastlane/plugin/create_dmg/vendor/create-dmg/examples/01-main-example/source_folder/Application.app +0 -0
- data/lib/fastlane/plugin/create_dmg/vendor/create-dmg/support/eula-resources-template.xml +105 -0
- data/lib/fastlane/plugin/create_dmg/vendor/create-dmg/support/template.applescript +74 -0
- data/lib/fastlane/plugin/create_dmg/vendor/create-dmg/tests/007-space-in-dir-name/my files/hello.txt +1 -0
- data/lib/fastlane/plugin/create_dmg/vendor/create-dmg/tests/007-space-in-dir-name/run-test +5 -0
- data/lib/fastlane/plugin/create_dmg/version.rb +5 -0
- data/lib/fastlane/plugin/create_dmg.rb +16 -0
- data/lib/fastlane.dmg +0 -0
- metadata +207 -0
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'fastlane_core/ui/ui'
|
2
|
+
|
3
|
+
module Fastlane
|
4
|
+
module Helper
|
5
|
+
class CreateDmgHelper
|
6
|
+
attr_accessor :verbose, :source, :source_basename, :output_filename
|
7
|
+
|
8
|
+
def initialize(params: nil)
|
9
|
+
self.params = params
|
10
|
+
self.verbose = self.params[:verbose] == true
|
11
|
+
self.source = File.expand_path(self.params[:source])
|
12
|
+
self.source_basename = File.basename(self.source)
|
13
|
+
self.source_basename_no_extension = File.basename(self.source, File.extname(self.source))
|
14
|
+
output_filename = self.params[:output_filename] || "#{File.dirname(self.source)}/#{self.source_basename_no_extension}.dmg"
|
15
|
+
self.output_filename = File.expand_path(output_filename)
|
16
|
+
end
|
17
|
+
|
18
|
+
# rubocop:disable Metrics/PerceivedComplexity
|
19
|
+
def create_dmg_parameters
|
20
|
+
volume_name = self.params[:volume_name] || self.source_basename_no_extension
|
21
|
+
addiional_files = self.params[:addiional_files] || []
|
22
|
+
|
23
|
+
self.verbose = self.params[:verbose] == true
|
24
|
+
|
25
|
+
if params[:hdiutil_sandbox_safe]
|
26
|
+
## TODO: Warnings about turned off but used options
|
27
|
+
end
|
28
|
+
|
29
|
+
parameters = {
|
30
|
+
'--volname' => volume_name,
|
31
|
+
'--volicon' => self.params[:volume_icon],
|
32
|
+
'--format' => self.params[:volume_format],
|
33
|
+
'--disk-image-size' => self.params[:volume_size],
|
34
|
+
|
35
|
+
'--window-pos' => self.params[:window_position],
|
36
|
+
'--window_size' => self.params[:window_size],
|
37
|
+
|
38
|
+
'--background' => self.params[:background],
|
39
|
+
'--text-size' => self.params[:text_size],
|
40
|
+
'--icon-size' => self.params[:icon_size],
|
41
|
+
|
42
|
+
'--app-drop-link' => self.params[:applications_folder_position],
|
43
|
+
'--ql-drop-link' => self.params[:quick_look_folder_position],
|
44
|
+
|
45
|
+
'--eula' => self.params[:eula_filename]
|
46
|
+
}
|
47
|
+
|
48
|
+
if self.params[:source_icon_position]
|
49
|
+
parameters['--icon'] = "#{self.source_basename} #{self.params[:source_icon_position]}"
|
50
|
+
end
|
51
|
+
|
52
|
+
if self.params[:hide_source_extension]
|
53
|
+
parameters['--hide-extension'] = self.source_basename
|
54
|
+
end
|
55
|
+
|
56
|
+
create_dmg_parameters = []
|
57
|
+
parameters.each do |key, value|
|
58
|
+
if value
|
59
|
+
create_dmg_parameters << key.to_s
|
60
|
+
create_dmg_parameters << value.to_s
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
addiional_files.each do |additional_file|
|
65
|
+
create_dmg_parameters << '--file'
|
66
|
+
create_dmg_parameters << additional_file
|
67
|
+
end
|
68
|
+
|
69
|
+
create_dmg_parameters << '--hdiutil-verbose' if self.params[:hdiutil_verbose]
|
70
|
+
create_dmg_parameters << '--hdiutil-quiet' if self.params[:hdiutil_quiet]
|
71
|
+
create_dmg_parameters << '--sandbox-safe' if self.params[:hdiutil_sandbox_safe]
|
72
|
+
|
73
|
+
create_dmg_parameters << '--no-internet-enable' # `internet-enable` is not supported any more.
|
74
|
+
|
75
|
+
create_dmg_parameters << self.output_filename
|
76
|
+
|
77
|
+
return create_dmg_parameters
|
78
|
+
end
|
79
|
+
# rubocop:enable Metrics/PerceivedComplexity
|
80
|
+
|
81
|
+
private
|
82
|
+
|
83
|
+
attr_accessor :params, :source_basename_no_extension
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'fastlane_core/ui/ui'
|
2
|
+
|
3
|
+
module Fastlane
|
4
|
+
module Helper
|
5
|
+
class UpdateDmgHelper
|
6
|
+
attr_accessor :verbose, :source, :output_filename
|
7
|
+
|
8
|
+
def initialize(params: nil)
|
9
|
+
self.params = params
|
10
|
+
self.verbose = self.params[:verbose] == true
|
11
|
+
self.source = File.expand_path(self.params[:source])
|
12
|
+
source_basename_no_extension = File.basename(self.source, File.extname(source))
|
13
|
+
output_filename = self.params[:output_filename] || "#{File.dirname(self.source)}/#{source_basename_no_extension}.dmg"
|
14
|
+
self.output_filename = File.expand_path(output_filename)
|
15
|
+
end
|
16
|
+
|
17
|
+
def update_dmg_parameters
|
18
|
+
parameters = {
|
19
|
+
'--source' => self.source,
|
20
|
+
'--output-dmg' => self.output_filename,
|
21
|
+
'--template-dmg' => self.params[:template]
|
22
|
+
}
|
23
|
+
|
24
|
+
update_dmg_parameters = []
|
25
|
+
parameters.each do |key, value|
|
26
|
+
if value
|
27
|
+
update_dmg_parameters << key.to_s
|
28
|
+
update_dmg_parameters << value.to_s
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
update_dmg_parameters << '--hdiutil-verbose' if self.params[:hdiutil_verbose]
|
33
|
+
update_dmg_parameters << '--hdiutil-quiet' if self.params[:hdiutil_quiet]
|
34
|
+
|
35
|
+
return update_dmg_parameters
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
attr_accessor :params
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2008-2014 Andrey Tarantsov
|
4
|
+
Copyright (c) 2020 Andrew Janke
|
5
|
+
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
8
|
+
in the Software without restriction, including without limitation the rights
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
11
|
+
furnished to do so, subject to the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
14
|
+
copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
22
|
+
SOFTWARE.
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# Makefile for Cowsay
|
2
|
+
|
3
|
+
PACKAGE_TARNAME = create-dmg
|
4
|
+
|
5
|
+
prefix = /usr/local
|
6
|
+
exec_prefix = ${prefix}
|
7
|
+
bindir = ${exec_prefix}/bin
|
8
|
+
datarootdir = ${prefix}/share
|
9
|
+
datadir = ${datarootdir}
|
10
|
+
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
|
11
|
+
sysconfdir = ${prefix}/etc
|
12
|
+
mandir=${datarootdir}/man
|
13
|
+
srcdir = .
|
14
|
+
|
15
|
+
SHELL = /bin/sh
|
16
|
+
INSTALL = install
|
17
|
+
INSTALL_PROGRAM = $(INSTALL)
|
18
|
+
INSTALL_DATA = ${INSTALL} -m 644
|
19
|
+
|
20
|
+
.PHONY: install uninstall
|
21
|
+
|
22
|
+
install: create-dmg
|
23
|
+
$(INSTALL) -d $(DESTDIR)$(prefix)
|
24
|
+
$(INSTALL) -d $(DESTDIR)$(bindir)
|
25
|
+
$(INSTALL_PROGRAM) create-dmg $(DESTDIR)$(bindir)/create-dmg
|
26
|
+
$(INSTALL) -d $(DESTDIR)$(datadir)/$(PACKAGE_TARNAME)
|
27
|
+
cp -R support $(DESTDIR)$(datadir)/$(PACKAGE_TARNAME)
|
28
|
+
cp -R examples $(DESTDIR)$(datadir)/$(PACKAGE_TARNAME)
|
29
|
+
cp -R tests $(DESTDIR)$(datadir)/$(PACKAGE_TARNAME)
|
30
|
+
|
31
|
+
uninstall:
|
32
|
+
rm -f $(DESTDIR)$(bindir)/create-dmg
|
33
|
+
rm -rf $(DESTDIR)$(datadir)/$(PACKAGE_TARNAME)
|
@@ -0,0 +1,115 @@
|
|
1
|
+
create-dmg
|
2
|
+
==========
|
3
|
+
|
4
|
+
A shell script to build fancy DMGs.
|
5
|
+
|
6
|
+
Status and contribution policy
|
7
|
+
------------------------------
|
8
|
+
|
9
|
+
Create-dmg is maintained thanks to the contributors who send pull requests.
|
10
|
+
As of May 2020, [Andrew Janke](https://github.com/apjanke) is the primary maintainer, and (since September 2018) [@aonez](https://github.com/aonez) has helped with the maintenance.
|
11
|
+
The project home page is <https://github.com/create-dmg/create-dmg>.
|
12
|
+
|
13
|
+
We will merge any pull request that adds something useful and does not break existing things.
|
14
|
+
|
15
|
+
If you're an active user and want to be a maintainer, or just want to chat, please ping us on Gitter at [gitter.im/create-dmg/Lobby](https://gitter.im/create-dmg/Lobby), or [email Andrew directly](floss@apjanke.net).
|
16
|
+
|
17
|
+
Create-dmg was originally created by [Andrey Tarantsov](https://github.com/andreyvit).
|
18
|
+
|
19
|
+
Installation
|
20
|
+
------------
|
21
|
+
|
22
|
+
- You can install this script using [Homebrew](https://brew.sh):
|
23
|
+
|
24
|
+
```sh
|
25
|
+
brew install create-dmg
|
26
|
+
```
|
27
|
+
|
28
|
+
- You can download the [latest release](https://github.com/create-dmg/create-dmg/releases/latest) and install it from there:
|
29
|
+
|
30
|
+
```sh
|
31
|
+
make install
|
32
|
+
```
|
33
|
+
|
34
|
+
- You can also clone the entire repository and run it locally from there:
|
35
|
+
|
36
|
+
```sh
|
37
|
+
git clone https://github.com/create-dmg/create-dmg.git
|
38
|
+
```
|
39
|
+
|
40
|
+
Usage
|
41
|
+
-----
|
42
|
+
|
43
|
+
```sh
|
44
|
+
create-dmg [options ...] <output_name.dmg> <source_folder>
|
45
|
+
```
|
46
|
+
|
47
|
+
All contents of source\_folder will be copied into the disk image.
|
48
|
+
|
49
|
+
**Options:**
|
50
|
+
|
51
|
+
- **--volname \<name\>:** set volume name (displayed in the Finder sidebar and window title)
|
52
|
+
- **--volicon \<icon.icns\>:** set volume icon
|
53
|
+
- **--background \<pic.png\>:** set folder background image (provide png, gif, jpg)
|
54
|
+
- **--window-pos \<x\> \<y\>:** set position the folder window
|
55
|
+
- **--window-size \<width\> \<height\>:** set size of the folder window
|
56
|
+
- **--text-size \<text_size\>:** set window text size (10-16)
|
57
|
+
- **--icon-size \<icon_size\>:** set window icons size (up to 128)
|
58
|
+
- **--icon \<file_name\> \<x\> \<y\>:** set position of the file's icon
|
59
|
+
- **--hide-extension \<file_name\>:** hide the extension of file
|
60
|
+
- **--custom-icon \<file_name|custom_icon|sample_file\> \<x\> \<y\>:** set position and -tom icon
|
61
|
+
- **--app-drop-link \<x\> \<y\>:** make a drop link to Applications, at location x, y
|
62
|
+
- **--ql-drop-link \<x\> \<y\>:** make a drop link to /Library/QuickLook, at location x, y
|
63
|
+
- **--eula \<eula_file\>:** attach a license file to the dmg
|
64
|
+
- **--rez \<rez_path\>:** specify custom path to Rez tool used to include license file
|
65
|
+
- **--no-internet-enable:** disable automatic mount©
|
66
|
+
- **--format:** specify the final image format (default is UDZO)
|
67
|
+
- **--add-file \<target_name\> \<file|folder\> \<x\> \<y\>:** add additional file or folder (can be used multiple times)
|
68
|
+
- **--disk-image-size \<x\>:** set the disk image size manually to x MB
|
69
|
+
- **--hdiutil-verbose:** execute hdiutil in verbose mode
|
70
|
+
- **--hdiutil-quiet:** execute hdiutil in quiet mode
|
71
|
+
- **--sandbox-safe:** execute hdiutil with sandbox compatibility, do not bless and do not execute the cosmetic AppleScript
|
72
|
+
- **--version:** show tool version number
|
73
|
+
- **-h, --help:** display the help
|
74
|
+
|
75
|
+
Example
|
76
|
+
-------
|
77
|
+
|
78
|
+
```sh
|
79
|
+
#!/bin/sh
|
80
|
+
test -f Application-Installer.dmg && rm Application-Installer.dmg
|
81
|
+
create-dmg \
|
82
|
+
--volname "Application Installer" \
|
83
|
+
--volicon "application_icon.icns" \
|
84
|
+
--background "installer_background.png" \
|
85
|
+
--window-pos 200 120 \
|
86
|
+
--window-size 800 400 \
|
87
|
+
--icon-size 100 \
|
88
|
+
--icon "Application.app" 200 190 \
|
89
|
+
--hide-extension "Application.app" \
|
90
|
+
--app-drop-link 600 185 \
|
91
|
+
"Application-Installer.dmg" \
|
92
|
+
"source_folder/"
|
93
|
+
```
|
94
|
+
|
95
|
+
See the `examples` folder in the source tree for more examples.
|
96
|
+
|
97
|
+
Requirements
|
98
|
+
------------
|
99
|
+
|
100
|
+
Nothing except a standard installation of macOS/OS X is required.
|
101
|
+
|
102
|
+
We think this works in OS X 10.6 Snow Leopard and later.
|
103
|
+
|
104
|
+
We'd like to keep it working in as many versions as possible, but unfortunately, we just don't have test boxes running old versions of OS X adequate to make this happen. Development and testing mostly happens in the last 3-5 years' worth of macOS releases; as of 2020, this means macOS 10.12 and later.
|
105
|
+
|
106
|
+
But if you find a bug in an older version, go ahead and report it! We'll try to work with you to get it fixed.
|
107
|
+
|
108
|
+
If you're running OS X 10.5 or later, you're SOL. That's just too hard to deal with in 2020. ;)
|
109
|
+
|
110
|
+
Alternatives
|
111
|
+
------------
|
112
|
+
|
113
|
+
- [node-appdmg](https://github.com/LinusU/node-appdmg)
|
114
|
+
- [dmgbuild](https://pypi.python.org/pypi/dmgbuild)
|
115
|
+
- see the [StackOverflow question](http://stackoverflow.com/questions/96882/how-do-i-create-a-nice-looking-dmg-for-mac-os-x-using-command-line-tools)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
SET app_name create-dmg
|
2
|
+
|
3
|
+
VERSION create-dmg.cur create-dmg heads/master
|
4
|
+
|
5
|
+
NEWDIR build.dir temp %-build -
|
6
|
+
|
7
|
+
NEWFILE create-dmg.zip featured %.zip %
|
8
|
+
|
9
|
+
|
10
|
+
COPYTO [build.dir]
|
11
|
+
INTO create-dmg [create-dmg.cur]/create-dmg
|
12
|
+
INTO sample [create-dmg.cur]/sample
|
13
|
+
INTO support [create-dmg.cur]/support
|
14
|
+
|
15
|
+
SUBSTVARS [build.dir<alter>]/create-dmg [[]]
|
16
|
+
|
17
|
+
|
18
|
+
ZIP [create-dmg.zip]
|
19
|
+
INTO [build-files-prefix] [build.dir]
|
20
|
+
|
21
|
+
|
22
|
+
PUT megabox-builds create-dmg.zip
|
23
|
+
PUT megabox-builds build.log
|
24
|
+
|
25
|
+
PUT s3-builds create-dmg.zip
|
26
|
+
PUT s3-builds build.log
|