anyicon 1.0.0 → 1.0.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 +4 -4
- data/lib/anyicon/collections.rb +8 -3
- data/lib/anyicon/configuration.rb +10 -13
- data/lib/anyicon/icon.rb +2 -2
- data/lib/anyicon/version.rb +1 -1
- data/lib/generators/anyicon/install/install_generator.rb +2 -1
- data/lib/generators/anyicon/install/templates/anyicon.rb +2 -17
- data/lib/tasks/anyicon.rake +2 -3
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8fad6ac847234839b7b7ef533781d9c0a13d0607fe80089e2a5069b6c2608c37
|
4
|
+
data.tar.gz: 61c8707518bfc51a8ab2c9cbd50dab7bcf2ba7fa9dd7dc52ea5f8b4046de8d82
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 340b55c12a7d91031caff6e434c80f2f5d655c7fe38db0fa98ff43404f680cdf67f34efd0517a0b07dbf0261f925b812fadd5d1ed830d60a54d2c73dc1efd24c
|
7
|
+
data.tar.gz: 827a61c212f91f165f483f7714bcd93b08462cf442a154a7fab6557b191726918985e04a341f089e1b2083769a6955a16f3499babab9c69af4c6193d44be19c4
|
data/lib/anyicon/collections.rb
CHANGED
@@ -31,13 +31,18 @@ module Anyicon
|
|
31
31
|
# @return [Array<Hash>] a list of icons with their metadata
|
32
32
|
def list
|
33
33
|
response = fetch(collection_url)
|
34
|
-
JSON.parse(response
|
34
|
+
JSON.parse(response&.body || '{}')
|
35
35
|
end
|
36
36
|
|
37
37
|
# Downloads all icons in the collection and saves them to the local file system.
|
38
38
|
#
|
39
39
|
# @return [void]
|
40
40
|
def download_all
|
41
|
+
if list.empty?
|
42
|
+
puts 'No icons available.'
|
43
|
+
return
|
44
|
+
end
|
45
|
+
|
41
46
|
count = 0
|
42
47
|
list.each do |icon|
|
43
48
|
count += 1
|
@@ -50,7 +55,7 @@ module Anyicon
|
|
50
55
|
#
|
51
56
|
# @return [Hash] the configured collections
|
52
57
|
def collections
|
53
|
-
@collections ||= Anyicon
|
58
|
+
@collections ||= Anyicon.configuration.collections
|
54
59
|
end
|
55
60
|
|
56
61
|
private
|
@@ -66,7 +71,7 @@ module Anyicon
|
|
66
71
|
FileUtils.mkdir_p(icon_path(icon['name']).dirname)
|
67
72
|
response = fetch(icon['download_url'])
|
68
73
|
File.write(icon_path(icon['name']), response.body)
|
69
|
-
rescue ActionView::Template::Error, ::
|
74
|
+
rescue ActionView::Template::Error, Net::HTTPError, Net::HTTPClientException => e
|
70
75
|
::Rails.logger.error "AnyIcon: Failed to download icon: #{e.message}"
|
71
76
|
end
|
72
77
|
|
@@ -7,13 +7,13 @@ module Anyicon
|
|
7
7
|
# Example usage:
|
8
8
|
#
|
9
9
|
# Anyicon.configure do |config|
|
10
|
-
# config.
|
10
|
+
# config.add_collections(
|
11
11
|
# custom_collection: {
|
12
12
|
# repo: 'user/repo',
|
13
13
|
# path: 'path/to/icons',
|
14
14
|
# branch: 'main'
|
15
15
|
# }
|
16
|
-
#
|
16
|
+
# )
|
17
17
|
# end
|
18
18
|
#
|
19
19
|
# The class also allows setting additional configuration options such as
|
@@ -22,9 +22,9 @@ module Anyicon
|
|
22
22
|
# A hash containing the default icon collections. Each collection specifies the
|
23
23
|
# repository, path, and branch where the icons can be found.
|
24
24
|
DEFAULT_COLLECTIONS = {
|
25
|
-
fontawesome_regular: { repo: 'FortAwesome/Font-Awesome', path: 'svgs/regular', branch: '
|
26
|
-
fontawesome_solid: { repo: 'FortAwesome/Font-Awesome', path: 'svgs/solid', branch: '
|
27
|
-
fontawesome_brands: { repo: 'FortAwesome/Font-Awesome', path: 'svgs/brands', branch: '
|
25
|
+
fontawesome_regular: { repo: 'FortAwesome/Font-Awesome', path: 'svgs/regular', branch: '6.x' },
|
26
|
+
fontawesome_solid: { repo: 'FortAwesome/Font-Awesome', path: 'svgs/solid', branch: '6.x' },
|
27
|
+
fontawesome_brands: { repo: 'FortAwesome/Font-Awesome', path: 'svgs/brands', branch: '6.x' },
|
28
28
|
heroicons_outline: { repo: 'tailwindlabs/heroicons', path: 'optimized/24/outline', branch: 'master' },
|
29
29
|
heroicons_solid: { repo: 'tailwindlabs/heroicons', path: 'optimized/24/solid', branch: 'master' },
|
30
30
|
tabler_icons_filled: { repo: 'tabler/tabler-icons', path: 'icons/filled', branch: 'main' },
|
@@ -44,7 +44,11 @@ module Anyicon
|
|
44
44
|
|
45
45
|
# Initializes a new Configuration instance with default settings.
|
46
46
|
def initialize
|
47
|
-
@collections = DEFAULT_COLLECTIONS
|
47
|
+
@collections = DEFAULT_COLLECTIONS.dup
|
48
|
+
end
|
49
|
+
|
50
|
+
def add_collections(new_collections)
|
51
|
+
@collections.merge!(new_collections)
|
48
52
|
end
|
49
53
|
end
|
50
54
|
|
@@ -55,13 +59,6 @@ module Anyicon
|
|
55
59
|
@configuration ||= Configuration.new
|
56
60
|
end
|
57
61
|
|
58
|
-
# Sets the configuration instance.
|
59
|
-
#
|
60
|
-
# @param config [Anyicon::Configuration] the configuration instance to set
|
61
|
-
def self.configuration=(config)
|
62
|
-
@configuration = config
|
63
|
-
end
|
64
|
-
|
65
62
|
# Yields the configuration instance to a block for customization.
|
66
63
|
#
|
67
64
|
# @yieldparam [Anyicon::Configuration] config the configuration instance
|
data/lib/anyicon/icon.rb
CHANGED
@@ -67,8 +67,8 @@ module Anyicon
|
|
67
67
|
FileUtils.mkdir_p(icon_path(icon).dirname)
|
68
68
|
response = fetch(url)
|
69
69
|
File.write(icon_path(icon), response.body) if response.is_a?(Net::HTTPSuccess)
|
70
|
-
rescue ActionView::Template::Error, Net::HTTPError => e
|
71
|
-
::Rails.logger.error "AnyIcon: Failed to download icon: #{e.message}"
|
70
|
+
rescue ActionView::Template::Error, Net::HTTPError, Net::HTTPClientException => e
|
71
|
+
::Rails.logger.error "AnyIcon: Failed to download icon: #{e.message} (#{url})"
|
72
72
|
end
|
73
73
|
|
74
74
|
# Returns the local file path for the specified icon.
|
data/lib/anyicon/version.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'rails/generators'
|
3
4
|
|
4
5
|
module Anyicon
|
@@ -17,7 +18,7 @@ module Anyicon
|
|
17
18
|
# Rails application.
|
18
19
|
class InstallGenerator < ::Rails::Generators::Base
|
19
20
|
source_root File.join(__dir__, 'templates')
|
20
|
-
desc
|
21
|
+
desc 'This generator installs AnyIcon'
|
21
22
|
|
22
23
|
# Copies the anyicon configuration template to the initializers directory.
|
23
24
|
#
|
@@ -7,27 +7,12 @@ Anyicon.configure do |config|
|
|
7
7
|
#
|
8
8
|
# Example:
|
9
9
|
#
|
10
|
-
# config.
|
10
|
+
# config.add_collections(
|
11
11
|
# custom_collection: {
|
12
12
|
# repo: 'user/repo',
|
13
13
|
# path: 'path/to/icons',
|
14
14
|
# branch: 'main'
|
15
15
|
# }
|
16
|
-
#
|
16
|
+
# )
|
17
17
|
#
|
18
|
-
|
19
|
-
config.collections = {
|
20
|
-
# Add your icon collections here
|
21
|
-
# Example:
|
22
|
-
# fontawesome_regular: {
|
23
|
-
# repo: 'FortAwesome/Font-Awesome',
|
24
|
-
# path: 'svgs/regular',
|
25
|
-
# branch: 'master'
|
26
|
-
# },
|
27
|
-
# heroicons_solid: {
|
28
|
-
# repo: 'tailwindlabs/heroicons',
|
29
|
-
# path: 'optimized/24/solid',
|
30
|
-
# branch: 'master'
|
31
|
-
# }
|
32
|
-
}
|
33
18
|
end
|
data/lib/tasks/anyicon.rake
CHANGED
@@ -4,8 +4,7 @@ namespace :anyicon do
|
|
4
4
|
desc 'Download a specific icon collection'
|
5
5
|
task :download_collection, [:collection] => :environment do |_t, args|
|
6
6
|
collection = args[:collection]
|
7
|
-
|
8
|
-
if Anyicon::Configuration.new.collections.keys.include?(collection.to_sym)
|
7
|
+
if Anyicon.configuration.collections.keys.include?(collection.to_sym)
|
9
8
|
Anyicon::Collection.new(collection.to_sym).download_all
|
10
9
|
else
|
11
10
|
puts "Collection #{collection} not found."
|
@@ -15,7 +14,7 @@ namespace :anyicon do
|
|
15
14
|
desc 'Download all icon collections'
|
16
15
|
task download_all_collections: :environment do
|
17
16
|
puts 'Downloading all icon collections'
|
18
|
-
Anyicon
|
17
|
+
Anyicon.configuration.collections.each_key do |collection|
|
19
18
|
puts "Downloading #{collection}..."
|
20
19
|
Anyicon::Collection.new(collection).download_all
|
21
20
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: anyicon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arthur Molina
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-05-
|
11
|
+
date: 2024-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -132,7 +132,13 @@ files:
|
|
132
132
|
homepage: https://github.com/arthurmolina/anyicon
|
133
133
|
licenses:
|
134
134
|
- MIT
|
135
|
-
metadata:
|
135
|
+
metadata:
|
136
|
+
homepage_uri: https://github.com/arthurmolina/anyicon
|
137
|
+
documentation_uri: https://rubydoc.info/github/arthurmolina/anyicon
|
138
|
+
changelog_uri: https://github.com/arthurmolina/anyicon/blob/main/docs/CHANGELOG.md
|
139
|
+
source_code_uri: https://github.com/arthurmolina/anyicon
|
140
|
+
bug_tracker_uri: https://github.com/arthurmolina/anyicon/issues
|
141
|
+
wiki_uri: https://github.com/arthurmolina/anyicon/wiki
|
136
142
|
post_install_message:
|
137
143
|
rdoc_options: []
|
138
144
|
require_paths:
|