tp_common 0.2.1 → 0.2.2

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: 956a9496037f69163ca3b611cdd1c28924e5bd43feb14637cca37d7f742c3a69
4
- data.tar.gz: de9e90f3593f8d2cbebbf24cb6c5cd5f184fd0e00653ecfed8f54c4c68c62deb
3
+ metadata.gz: 9e220ac3f4edbe18ef730546eae1101798b4077c9a99919f56914efdc5791632
4
+ data.tar.gz: 1946d2c05f1c3bb9f59321f65ce8d2e6c5e9c128b7400f74082cfcf38ede5c74
5
5
  SHA512:
6
- metadata.gz: 612270814d47910a62c93fe0fe3d37591b3d670ef1eebd7d9e37c0c75fb458cd2bdc256fb7cb187298c8a55ec7f07c35b2b5742d3d31d5b96a9a4128695c9154
7
- data.tar.gz: 20fad257e557778b89eeafdb4d669d048367ff27ba334c61320634a24787d487e4867bf849c4866120f3302ecb4ef6703140a1a8c5202577f4cd118f05f34cd0
6
+ metadata.gz: d9fbc13d47a5660448dd162a0f8835cadc05b985876b7a8ee0174c27fb987042a8a20d596e255cb158235d885c0b4e35f5a8a1336a1ca1a1c1db90aee094564d
7
+ data.tar.gz: 600a8864bcd467f1a604d5c4852829536ad35cffe5675900ac357a7981e29fb6265e5fdcb74b9fa56cb4cc89dab44999d4215e231a4a08660b6ad505a36463f6
data/.gitignore CHANGED
@@ -10,3 +10,4 @@
10
10
 
11
11
  # rspec failure tracking
12
12
  .rspec_status
13
+ .DS_Store
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- tp_common (0.2.1)
4
+ tp_common (0.2.2)
5
5
  activesupport (>= 4.2.0, <= 5.0.3)
6
6
  tzinfo (~> 1.2, >= 1.2.0)
7
7
 
@@ -152,4 +152,4 @@ DEPENDENCIES
152
152
  tp_common!
153
153
 
154
154
  BUNDLED WITH
155
- 1.16.0
155
+ 1.16.2
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- tp_common (0.2.1)
4
+ tp_common (0.2.2)
5
5
  activesupport (>= 4.2.0, <= 5.0.3)
6
6
  tzinfo (~> 1.2, >= 1.2.0)
7
7
 
@@ -158,4 +158,4 @@ DEPENDENCIES
158
158
  tp_common!
159
159
 
160
160
  BUNDLED WITH
161
- 1.16.0
161
+ 1.16.2
@@ -0,0 +1,92 @@
1
+ module TpCommon
2
+ class AssetsLoader
3
+ class AssetNotFound < ::StandardError; end
4
+ class ManifestNotFound < ::StandardError; end
5
+ class ManifestFileBroken < ::StandardError; end
6
+ class PackageIsNotLoaded < ::StandardError; end
7
+
8
+ LoaderConfiguration = Struct.new(:autoload, :asset_root_path, :version)
9
+
10
+ #
11
+ # Clear all config + loaded package
12
+ # Use for test only, but feel free to use in app if need
13
+ def self.clear!
14
+ @config = LoaderConfiguration.new(false, '/public', :latest)
15
+ @packages = {}
16
+ end
17
+
18
+ def self.configure
19
+ yield(config)
20
+ end
21
+
22
+ def self.build(package_name, external_manifest_file)
23
+ # TODO: Implement
24
+ # Skip if "/public/#{package_name}" exists
25
+ # Download manifest.json from #{external_manifest_file}?version=#{@config.version}
26
+ # to "/public/#{package_name}/assets/manifest.json"
27
+ # Validate "/public/#{package_name}/assets/manifest.json"
28
+ end
29
+
30
+ def self.load(package_name)
31
+ package_name = package_name.to_sym
32
+ packages[package_name] = new(package_name)
33
+ packages
34
+ end
35
+
36
+ def self.[](package_name)
37
+ package_name = package_name.to_sym
38
+
39
+ unless packages.key?(package_name)
40
+ if @config.autoload
41
+ load(package_name)
42
+ else
43
+ raise PackageIsNotLoaded.new("Package #{package_name} is not loaded yet.")
44
+ end
45
+ end
46
+
47
+ packages[package_name]
48
+ end
49
+
50
+ def self.asset_root_path
51
+ @config.asset_root_path
52
+ end
53
+
54
+ def self.packages
55
+ @packages ||= {}
56
+ end
57
+
58
+ def self.new_config
59
+ LoaderConfiguration.new(false, '/public', :latest)
60
+ end
61
+
62
+ def self.config
63
+ @config ||= new_config
64
+ end
65
+
66
+ private_class_method :packages, :new_config, :config
67
+
68
+ def initialize(package_name)
69
+ @package_name = package_name.to_sym
70
+ file_path = File.join(self.class.asset_root_path, @package_name.to_s, 'assets', 'manifest.json')
71
+
72
+ @manifest = begin
73
+ JSON.parse(File.read(file_path))
74
+ rescue SystemCallError
75
+ raise ManifestNotFound.new(
76
+ "Unable to load manifest file for package #{@package_name} at: #{file_path}"
77
+ )
78
+ rescue StandardError
79
+ raise ManifestFileBroken.new("Manifest file for package #{@package_name} is unable to load")
80
+ end
81
+ return true
82
+ end
83
+
84
+ def [](asset_name)
85
+ @manifest[asset_name].tap do |asset|
86
+ if asset.nil?
87
+ raise AssetNotFound.new("Asset #{@package_name}/#{asset_name} is not found.")
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
@@ -1,3 +1,3 @@
1
1
  module TpCommon
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
data/lib/tp_common.rb CHANGED
@@ -16,3 +16,4 @@ end
16
16
 
17
17
  require "tp_common/timezones"
18
18
  require "tp_common/timezones/zone"
19
+ require "tp_common/assets_loader"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tp_common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - TINYpulse Devops
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-16 00:00:00.000000000 Z
11
+ date: 2018-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -166,6 +166,7 @@ files:
166
166
  - gemfiles/rails_5.gemfile
167
167
  - gemfiles/rails_5.gemfile.lock
168
168
  - lib/tp_common.rb
169
+ - lib/tp_common/assets_loader.rb
169
170
  - lib/tp_common/railtie.rb
170
171
  - lib/tp_common/timezones.rb
171
172
  - lib/tp_common/timezones/config.rb
@@ -194,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
194
195
  version: '0'
195
196
  requirements: []
196
197
  rubyforge_project:
197
- rubygems_version: 2.7.6
198
+ rubygems_version: 2.7.7
198
199
  signing_key:
199
200
  specification_version: 4
200
201
  summary: Common libraries used for TINYpulse apps