create_bundle 0.1.0 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 19e6a1ce28d7de962b1588b95752e87307329a1794dcddbf46adf6bf22b70a90
4
- data.tar.gz: 6fbcccc3ab2f82e2cb3430a6b838b0ad9199af1b981f8ec4472c12ae6b8a8942
3
+ metadata.gz: 6f0de999eecf8968d214418bea0d4e63a35f8ee6311605337aaf5207f3fc5709
4
+ data.tar.gz: 1d69de6e5346e7c141478d839846951fec3d8c9c46441477dc045ecfa736649f
5
5
  SHA512:
6
- metadata.gz: b4f781f3f6c07e5e645b557b34bd798cbf684950c5e73f2da26d9d0e693f840a6d46413736b8720062c5dd467b866e9ed51b589b55f352da5eeae9f1fc267040
7
- data.tar.gz: d379f9e15d425b2fc695e1a518fcbaa7e2449d7f8456601b5c189900aa82ecf07f48d8b61c903e48c39b2578bb3a2f77cbe6fb0c4e9dd2f5c383c541b8f1cde0
6
+ metadata.gz: 5d17d6a141ccf17b1c4039b41633a1e2aa86c1d0569db18071bc9ef325b1b1e40ea4d0583ff516576a64dabe2a2cd93611d559ae910a6488c49283a30d8e688a
7
+ data.tar.gz: cb5f0db9849b1c85f20aedc32066ac99e474bb046958fdd90636c5c8b9da403030cd756b275ea844ba99a428f26517ebcbdcc7b88f1df3f79b1dc68e74918b41
data/README.md CHANGED
@@ -1,6 +1,12 @@
1
- # CreateBundle
1
+ [![Maintainability](https://api.codeclimate.com/v1/badges/355d543c76280628d326/maintainability)](https://codeclimate.com/github/aladac/create_bundle/maintainability)
2
+ # create_bundle
2
3
 
3
- A simple tool for creating bare MacOS application bundles containing an icon and launch command copied from the source application.
4
+ Tool for creating MacOS application bundles containing an icon and launch command copied from the source application.
5
+
6
+ ## Why?
7
+ - Can't you just create a link? _Yes I can but I can't add commands to be run before an app is started_
8
+ - Can't you just do it all using a bash one liner? _Yes I can but I'm lazy and the gem exec provides some basic error handling_
9
+ - To create bare bundles to edit later
4
10
 
5
11
  ## Installation
6
12
 
@@ -9,9 +15,23 @@ A simple tool for creating bare MacOS application bundles containing an icon and
9
15
  ## Usage
10
16
 
11
17
  ```
12
- Usage: cb SOURCE_APP [DESTINATION_PATH]
18
+ Usage: cb [OPTIONS] SOURCE_APP [DESTINATION_APP]
19
+ Usage: cb -i ICON -s SCRIPT -b DESTINATION_APP
20
+ -v, --[no-]verbose Run verbosely
21
+ -i, --icon PATH Use a custom icon
22
+ -s, --script PATH Use a custom executable
23
+ -b, --bare Create a bare bundle
13
24
  ```
14
25
 
26
+ $ cb -v /Applications/iTerm.app ~/Desktop/iTerm.app
27
+ $ cb -b -i Icon.icns -s start.sh New.app
28
+
29
+ ## What does it actually do?
30
+ The script when run for a source app bundle copies the icon file from the bundle (trying to parse the Info.plist, falling back to AppIcon.icns when failed), creates a new app bundle with this icon and a script to open the original app bundle.
31
+ You may say the end result is kind of like creating a filesystem link.
32
+
33
+ You can create a _"bare"_ bundle with a custom script and icon
34
+
15
35
  ## License
16
36
 
17
37
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/exe/cb CHANGED
@@ -43,6 +43,6 @@ if options[:bare]
43
43
  end
44
44
  end
45
45
 
46
- c = CreateBundle::Base.new(ARGV[0], ARGV[1], options[:script], options[:icon], options[:bare])
46
+ c = CreateBundle::Base.new(source: ARGV[0], target: ARGV[1], script: options[:script], icon: options[:icon], bare: options[:bare])
47
47
  c.verbose = options[:verbose]
48
48
  c.create
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CreateBundle
4
- VERSION = '0.1.0'
4
+ VERSION = '0.1.4'
5
5
  end
data/lib/create_bundle.rb CHANGED
@@ -11,17 +11,13 @@ module CreateBundle
11
11
  class Base
12
12
  attr_accessor :logger, :app_path, :target_path, :verbose
13
13
 
14
- def initialize(path, target_path = nil, custom_script = nil, custom_icon = nil, bare = false)
14
+ def initialize(options)
15
15
  @logger = Logger.new(STDOUT)
16
- @app_path = Pathname(path)
17
- @custom_icon = custom_icon
18
- @custom_script = custom_script
19
- if bare
20
- target_path = path
21
- else
22
- (logger.info("Source doesn't look like an app bundle") && exit) unless plist_path.exist?
23
- end
24
- @target_path = target_path ? Pathname(target_path) : Pathname(@app_path.basename.to_s)
16
+ @app_path = Pathname(options[:source])
17
+ @custom_icon = options[:icon]
18
+ @custom_script = options[:script]
19
+ options[:target] = options[:source] if options[:bare]
20
+ @target_path = options[:target] ? Pathname(options[:target]) : Pathname(@app_path.basename.to_s)
25
21
  end
26
22
 
27
23
  def custom_icon_path
@@ -35,7 +31,7 @@ module CreateBundle
35
31
  end
36
32
 
37
33
  def icon_path
38
- app_path + 'Contents' + 'Resources' + icon_file
34
+ custom_icon_path || app_path + 'Contents' + 'Resources' + icon_file
39
35
  rescue ArgumentError
40
36
  logger.warn 'Problem reading source plist file, probably binary format, falling back to default icon name'
41
37
  icon = app_path + 'Contents' + 'Resources' + 'AppIcon.icns'
@@ -43,7 +39,8 @@ module CreateBundle
43
39
  end
44
40
 
45
41
  def plist_path
46
- app_path + 'Contents' + 'Info.plist'
42
+ path = app_path + 'Contents' + 'Info.plist'
43
+ path.exist? ? path : (logger.info("Source doesn't look like an app bundle") && exit)
47
44
  end
48
45
 
49
46
  def plist
@@ -87,7 +84,7 @@ module CreateBundle
87
84
  end
88
85
 
89
86
  def copy_icon
90
- File.link(custom_icon_path || icon_path, resources_dir + 'applet.icns')
87
+ File.link(icon_path, resources_dir + 'applet.icns')
91
88
  logger.debug "Copied icon to: #{(resources_dir + 'applet.icns')}" if verbose
92
89
  end
93
90
 
@@ -95,7 +92,6 @@ module CreateBundle
95
92
  f = File.new(macos_dir + 'applet', 'w')
96
93
  f.puts "#!/bin/sh\nopen -a \"#{ARGV[0]}\""
97
94
  f.close
98
- FileUtils.chmod 0o755, macos_dir + 'applet'
99
95
  logger.debug "Created exec: #{(macos_dir + 'applet')}" if verbose
100
96
  end
101
97
 
@@ -112,6 +108,7 @@ module CreateBundle
112
108
 
113
109
  def create_exec
114
110
  copy_script || write_script
111
+ FileUtils.chmod 0o755, macos_dir + 'applet'
115
112
  end
116
113
 
117
114
  def create
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: create_bundle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Ladachowski