Module: Shoes::Package::Configuration
- Extended by:
- Furoshiki::Util
- Defined in:
- shoes-package/lib/shoes/package/configuration.rb
Overview
Configuration for Shoes packagers.
Constant Summary collapse
- JAR_APP_TEMPLATE_URL =
'https://s3.amazonaws.com/net.wasnotrice.shoes/wrappers/shoes-app-template-0.0.2.zip'
Class Method Summary collapse
-
.config_for_single_file_app(pathname) ⇒ Object
If it exists, load default options.
- .create(config = {}) ⇒ Object
-
.load(path, base_config = {}) ⇒ Object
Convenience method for loading config from a file.
-
.merge_gems(base, additional) ⇒ Object
We want to retain all of the gems, but simply merging the hash will replace the whole array, so we handle the gems separately.
Instance Method Summary collapse
Class Method Details
.config_for_single_file_app(pathname) ⇒ Object
If it exists, load default options. If not, let the filesystem raise an error.
119 120 121 122 123 124 125 126 127 |
# File 'shoes-package/lib/shoes/package/configuration.rb', line 119 def self.config_for_single_file_app(pathname) = { run: pathname.basename.to_s, name: pathname.basename(pathname.extname).to_s.gsub(/\W/, '-') }.to_yaml = pathname.exist? ? : pathname dummy_file = Struct.new(:read) [dummy_file.new(), pathname.parent] end |
.create(config = {}) ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'shoes-package/lib/shoes/package/configuration.rb', line 88 def self.create(config = {}) defaults = { name: 'Shoes App', version: '0.0.0', release: 'Rookie', run: nil, ignore: 'pkg', # TODO: Add actual paths. Keep these keys for compatibility with Shoes 3 icons: { # osx: 'path/to/default/App.icns', # gtk: 'path/to/default/app.png', # win32: 'path/to/default/App.ico', }, # TODO: Add actual paths. Keep these keys for compatibility with Shoes 3 dmg: { # ds_store: 'path/to/default/.DS_Store', # background: 'path/to/default/background.png' }, working_dir: Dir.pwd, gems: ['shoes-core'], validator: Validator, warbler_extensions: WarblerExtensions } symbolized_config = deep_symbolize_keys(config) symbolized_config[:gems] = merge_gems(defaults, symbolized_config) Furoshiki::Configuration.new defaults.merge(symbolized_config) end |
.load(path, base_config) ⇒ Object .load(path) ⇒ Object .load(path) ⇒ Object
Convenience method for loading config from a file. Note that you can pass four kinds of paths to the loader. Given the following file structure:
|– a | |– app.yaml | |– shoes-app-a.rb | |– b |– shoes-app-b.rb
To package an app that has an ‘app.yaml`, like `shoes-app-a.rb`, you can call the loader with any of:
-
a/app.yaml
-
a
-
a/shoes-app-a.rb
These will all find and use your configuration in ‘a/app.yaml`. To package an app that does not have an `app.yaml`, like `b/shoes-app-b.rb`, you must call the loader with the path of the script itself. Note that without an `app.yaml`, you will only bundle a single file, and your app will simply use the Shoes app icon.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'shoes-package/lib/shoes/package/configuration.rb', line 63 def self.load(path, base_config = {}) pathname = Pathname.new(path) app_yaml = Pathname.new('app.yaml') if pathname.basename == app_yaml file = pathname dir = pathname.dirname elsif pathname.directory? file = pathname.join(app_yaml) dir = pathname elsif pathname.file? && pathname.parent.children.include?(pathname.parent.join(app_yaml)) file = pathname.parent.join(app_yaml) dir = pathname.parent else file, dir = config_for_single_file_app(pathname) end config = YAML.safe_load(file.read, [Symbol]) config[:working_dir] = dir config[:gems] = merge_gems(base_config, config) config[:gems] << "shoes-swt" create(config) end |
.merge_gems(base, additional) ⇒ Object
We want to retain all of the gems, but simply merging the hash will replace the whole array, so we handle the gems separately. Note that keys may not have been symbolized yet
132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'shoes-package/lib/shoes/package/configuration.rb', line 132 def self.merge_gems(base, additional) base_gems = begin base.fetch(:gems) rescue base['gems'] end additional_gems = begin additional.fetch(:gems) rescue additional['gems'] end Array(base_gems).concat(Array(additional_gems)).uniq end |
Instance Method Details
#backend ⇒ Object
22 23 24 |
# File 'shoes-package/lib/shoes/package/configuration.rb', line 22 def backend "swt" end |