Module: Appship::Ipa
- Defined in:
- lib/appship/ipa.rb
Class Method Summary collapse
- .apply_badge!(ipa_path, assets:, app_icon:, text:, runner: Runner.new) ⇒ Object
- .package!(app, output:, badge: nil, assets: nil, app_icon: nil, runner: Runner.new) ⇒ Object
- .zip_directory!(root, output, runner, exclude: []) ⇒ Object
Class Method Details
.apply_badge!(ipa_path, assets:, app_icon:, text:, runner: Runner.new) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/appship/ipa.rb', line 24 def apply_badge!(ipa_path, assets:, app_icon:, text:, runner: Runner.new) runner.require_command!("unzip", "macOS 通常自带 unzip") runner.require_command!("zip", "macOS 通常自带 zip") root = Dir.mktmpdir("appship-badge-") begin runner.run!(["unzip", "-q", ipa_path, "-d", root]) app = Dir[File.join(root, "Payload", "*.app")].first raise ConfigurationError, "IPA 内没有找到 Payload/*.app" unless app Badger.apply!(app, assets: assets, app_icon: app_icon, text: text, runner: runner) replacement = File.join(root, "rebuilt.ipa") zip_directory!(root, replacement, runner, exclude: [File.basename(replacement)]) FileUtils.mv(replacement, ipa_path, force: true) ensure FileUtils.rm_rf(root) end ipa_path end |
.package!(app, output:, badge: nil, assets: nil, app_icon: nil, runner: Runner.new) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/appship/ipa.rb', line 7 def package!(app, output:, badge: nil, assets: nil, app_icon: nil, runner: Runner.new) runner.require_command!("zip", "macOS 通常自带 zip") root = Dir.mktmpdir("appship-ipa-") begin payload = File.join(root, "Payload") FileUtils.mkdir_p(payload) FileUtils.cp_r(app, File.join(payload, File.basename(app))) if badge Badger.apply!(File.join(payload, File.basename(app)), assets: assets, app_icon: app_icon, text: badge, runner: runner) end zip_directory!(root, output, runner) ensure FileUtils.rm_rf(root) end output end |
.zip_directory!(root, output, runner, exclude: []) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/appship/ipa.rb', line 43 def zip_directory!(root, output, runner, exclude: []) FileUtils.mkdir_p(File.dirname(output)) entries = Dir.children(root).reject { |entry| exclude.include?(entry) } raise CommandError, "没有可打包的 IPA 内容" if entries.empty? runner.run!(["zip", "-qr", output, *entries], chdir: root) end |