tp_common 0.2.1 → 0.2.2

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: 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