web-puc 0.4.0 → 0.4.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
- SHA1:
3
- metadata.gz: 8dafbe39ec8bf7e214f0e33396b3c842b3aaaf25
4
- data.tar.gz: db6a8fd688f4bd70bb0f1bb63aaab5feb056c229
2
+ SHA256:
3
+ metadata.gz: 340505a85ca7da37714a19c89ee124f58b48f7da8c5c1490cb729cf6d1b56160
4
+ data.tar.gz: d7d7efa0a100905caf47476887be91184645e3e3c2f8f32c96f5887557ae9b76
5
5
  SHA512:
6
- metadata.gz: 7df86d59ddf67b66a579497927fd29b00909837f7f5aeb581d4f716d4b7fe950d50e2918a9ae0bf1cf0f566758ac7c411e7c7f5a3f5c4a3c115ca57fd44a80db
7
- data.tar.gz: df6ec4c08b020436b315bfe3c0d8ec4c10b1bdaf147291131483edfa26d15da12ba5ba371515c565ac4dce0bf2e44232bee0c34f6e126247887a343e609bb2f5
6
+ metadata.gz: 318dd140ae45e73a5f5d73d4a75c79670779b0a2cec426be23c9b1f875f023b631668e294e1025ab9a8388b559f9fd4bb47fa3be862a9095086c455b959c2baa
7
+ data.tar.gz: 33d9dae6e2ae85a954bb2b01dd403a6545ceb7e0a99a5f828f9bca8ccadc87538ff8b094a0c8c815319449a508ff356177a6a27fe724e4e5e872f8456f54a64a
data/bin/web-puc CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env ruby
2
- require 'web-puc'
2
+ require_relative '../lib/web-puc'
data/lib/web-puc.rb CHANGED
@@ -1,15 +1,24 @@
1
1
  #!/usr/bin/env ruby
2
- require 'rake'
3
- require 'stat'
2
+ require "ostruct"
3
+ require "optparse"
4
+ require "yaml"
5
+ require "structured-acceptance-test"
6
+ require "net/http"
4
7
  require 'shellwords'
5
- require_relative 'version'
8
+ #require "gemrake"
6
9
 
7
- class Optparse
10
+ DATA_STORE_FILENAME = File.expand_path('~/.web-puc-data.yml')
11
+ CACHE_EXPIRATION_PERIOD = 7*24*60*60
12
+
13
+ class LibraryNotImplementedException < Exception
14
+ end
8
15
 
16
+ class Optparse
9
17
  def self.parse(args)
10
18
  options = OpenStruct.new
11
19
  options.exclude = []
12
- options.update = false
20
+ options.libs = []
21
+ options.clear = false
13
22
  options.stat = false
14
23
 
15
24
  opt_parser = OptionParser.new do |opts|
@@ -19,11 +28,8 @@ class Optparse
19
28
  options.exclude = list
20
29
  end
21
30
 
22
- opts.on('-s', '--allow-supported', 'Allow supported versions even if not latest') do
23
- end
24
-
25
- opts.on('-u', '--update', 'Update web package database') do
26
- options.update = true
31
+ opts.on('-c', '--clear', 'Clear cached version data') do
32
+ options.clear = true
27
33
  end
28
34
 
29
35
  opts.on('--stat', 'Output in STAT format') do
@@ -35,30 +41,41 @@ class Optparse
35
41
  exit
36
42
  end
37
43
 
38
- opts.on_tail('-v', '--version', 'Show version') do
39
- puts "web-puc #{WebPuc::VERSION}"
40
- exit
44
+ opts.on('-l', '--libs GLOB', Array, 'libs to search') do |list|
45
+ options.libs = list
41
46
  end
47
+
48
+ # TODO:
49
+ #opts.on_tail('-v', '--version', 'Show version') do
50
+ # spec = Gem::Specification::load(File.expand_path('../web-puc.gemspec', __FILE__))
51
+ # puts "web-puc #{spec.version}"
52
+ # exit
53
+ #end
42
54
  end
43
55
 
44
56
  opt_parser.parse!(args)
45
57
  options
46
58
  end
59
+ end
47
60
 
61
+ def get_link(lib, version)
62
+ case lib
63
+ when 'twitter-bootstrap'
64
+ "//netdna.bootstrapcdn.com/bootstrap/#{version}/"
65
+ when 'font-awesome'
66
+ "//netdna.bootstrapcdn.com/font-awesome/#{version}/"
67
+ else
68
+ raise LibraryNotImplementedException
69
+ end
48
70
  end
49
71
 
50
72
  ARGV << '-h' if ARGV.empty?
51
73
 
52
74
  options = Optparse.parse(ARGV)
53
75
 
54
- if options.update
55
- FileUtils.rm_r Dir[File.expand_path File.dirname(__FILE__) + '/packages/*']
56
-
57
- Dir[File.expand_path File.dirname(__FILE__) + '/package-spiders/*.sh'].each { |file|
58
- puts "UPDATING #{file}"
59
- puts %x[ bash #{file} ]
60
- $stdout.flush
61
- }
76
+ if options.clear
77
+ File.delete(DATA_STORE_FILENAME) if File.exists? DATA_STORE_FILENAME
78
+ puts 'Cleared'
62
79
  exit
63
80
  end
64
81
 
@@ -75,11 +92,37 @@ cmd = "find #{files.join(' ')} -type f #{exclude_block}"
75
92
  files = %x[ #{cmd}].split("\n")
76
93
  abort 'command failed' unless $?.success?
77
94
 
78
- good_files = Dir[File.expand_path File.dirname(__FILE__) + '/packages/*.good']
79
- bad_files = good_files.map { |good_file| good_file[0, good_file.length - 'good'.length] + 'bad' }
95
+ libs_versions = Hash.new
96
+ if File.exists? DATA_STORE_FILENAME
97
+ libs_cached = YAML.load_file(DATA_STORE_FILENAME)
98
+ else
99
+ libs_cached = Hash.new
100
+ end
101
+
102
+ options.libs.each { |lib|
103
+ if !libs_cached.nil? && !libs_cached[lib].nil? && Time.at(libs_cached[lib]['expired']) < Time.now
104
+ libs_versions[lib] = libs_cached[lib]
105
+ else
106
+ # Fetch using net/http
107
+ response_text = Net::HTTP.get(URI("https://api.cdnjs.com/libraries/#{lib}?fields=assets"))
108
+ # response = JSON.parse HTTP.get("https://api.cdnjs.com/libraries/#{lib}?fields=assets").body
109
+ response = JSON.parse response_text
110
+ unless response['assets'].nil?
111
+ libs_versions[lib] = Hash.new
112
+ libs_versions[lib]['version'] = Array.new
113
+ libs_versions[lib]['expired'] = Time.now.to_i + CACHE_EXPIRATION_PERIOD
114
+ response['assets'].each_with_index { |asset, index|
115
+ # first version is a most actual
116
+ next if index == 0
117
+ libs_versions[lib]['version'].push asset['version']
118
+ }
119
+ end
120
+ end
121
+ }
122
+ File.write(DATA_STORE_FILENAME, libs_cached.merge(libs_versions).to_yaml)
80
123
 
81
124
  process = StatModule::Process.new('WebPuc')
82
- process.version = "#{WebPuc::VERSION}"
125
+ # TODO: process.version = ...
83
126
  process.description = 'Validate your web project uses the latest CSS & JS includes.'
84
127
  process.maintainer = 'William Entriken'
85
128
  process.email = 'github.com@phor.net'
@@ -87,29 +130,34 @@ process.website = 'https://github.com/fulldecent/web-puc'
87
130
  process.repeatability = 'Volatile'
88
131
  stat = StatModule::Stat.new(process)
89
132
 
133
+ stat.print_header if options.stat
90
134
  files.each { |file|
91
- bad_files.each { |bad_file|
92
- file = file.shellescape
93
- bad_file = bad_file.shellescape
94
-
95
- matches = %x[ grep -o -nh -F -f #{bad_file} #{file} 2>/dev/null].lines
96
- matches.each { |match|
97
- description = match[match.index(':') + 1, match.length]
98
- line = match[0, match.index(':')].to_i
99
- location = StatModule::Location.new(file)
100
- location.begin_line = line
101
- location.end_line = line
102
-
103
- finding = StatModule::Finding.new(true, description, 'Old version')
104
- finding.location = location
105
-
106
- stat.findings.push(finding)
135
+ file = file.shellescape
136
+ libs_versions.each { |lib, val|
137
+ val['version'].each { |v|
138
+
139
+ link = get_link(lib, v)
140
+ matches = %x[ grep -nh -F #{link} #{file} 2>/dev/null].lines
141
+ matches.each { |match|
142
+ description = match[match.index(':') + 1, match.length]
143
+ line = match[0, match.index(':')].to_i
144
+ location = StatModule::Location.new(file)
145
+ location.begin_line = line
146
+ location.end_line = line
147
+
148
+ finding = StatModule::Finding.new(true, description, 'Old version')
149
+ finding.location = location
150
+
151
+ stat.findings.push(finding)
152
+
153
+ stat.print_finding if options.stat
154
+ }
107
155
  }
108
156
  }
109
157
  }
110
158
 
111
159
  if options.stat
112
- puts stat.to_json
160
+ stat.print_footer
113
161
  else
114
162
  if stat.findings.length > 0
115
163
  stat.findings.each { |finding|
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: web-puc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Entriken
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-23 00:00:00.000000000 Z
11
+ date: 2022-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '12'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '12'
27
27
  - !ruby/object:Gem::Dependency
@@ -30,28 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.0.6
33
+ version: 0.0.7
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.0.6
40
+ version: 0.0.7
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: http
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.5'
48
- type: :development
47
+ version: '5.1'
48
+ type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.5'
54
+ version: '5.1'
55
55
  description: Validate your web project uses the latest CSS & JS includes
56
56
  email: github.com@phor.net
57
57
  executables:
@@ -60,19 +60,12 @@ extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
62
  - bin/web-puc
63
- - lib/package-spiders/bootstrap-maxcdn.sh
64
- - lib/package-spiders/fontawesome-maxcdn.sh
65
- - lib/packages/bootstrap.bad
66
- - lib/packages/bootstrap.good
67
- - lib/packages/font-awesome.bad
68
- - lib/packages/font-awesome.good
69
- - lib/version.rb
70
63
  - lib/web-puc.rb
71
64
  homepage: https://github.com/fulldecent/web-puc
72
65
  licenses:
73
66
  - MIT
74
67
  metadata: {}
75
- post_install_message:
68
+ post_install_message:
76
69
  rdoc_options: []
77
70
  require_paths:
78
71
  - lib
@@ -87,9 +80,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
80
  - !ruby/object:Gem::Version
88
81
  version: '0'
89
82
  requirements: []
90
- rubyforge_project:
91
- rubygems_version: 2.6.11
92
- signing_key:
83
+ rubygems_version: 3.3.11
84
+ signing_key:
93
85
  specification_version: 4
94
86
  summary: Web Package Update Checker
95
87
  test_files: []
@@ -1,29 +0,0 @@
1
- #!/bin/bash
2
-
3
- echo "Creating package files for bootstrap"
4
-
5
- BASEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
6
- BASEDIR="$(dirname "$BASEDIR")"
7
- GOODFILE=$BASEDIR/packages/bootstrap.good
8
- BADFILE=$BASEDIR/packages/bootstrap.bad
9
-
10
- # Clone or pull
11
- [ ! -d "$BASEDIR/package-spiders/maxcdn-bootstrap/.git" ] &&
12
- git clone https://github.com/MaxCDN/bootstrap-cdn.git "$BASEDIR/package-spiders/maxcdn-bootstrap" ||
13
- cd "$BASEDIR/package-spiders/maxcdn-bootstrap/" && git pull
14
-
15
- cd "$BASEDIR/package-spiders/maxcdn-bootstrap/public/twitter-bootstrap/"
16
- for VER in $(ls); do
17
- [ -L $VER ] && continue
18
- [ -f $VER ] && continue
19
- if [ "$(readlink latest)" = "$VER" ]
20
- then
21
- echo '//netdna.bootstrapcdn.com/bootstrap/'$VER'/css/bootstrap.min.css' > $GOODFILE
22
- else
23
- echo '//netdna.bootstrapcdn.com/bootstrap/'$VER'/css/bootstrap.min.css' >> $BADFILE
24
- echo "Bootstrap v$VER (http://getbootstrap.com)" >> $BADFILE
25
- fi
26
- echo '//netdna.bootstrapcdn.com/bootstrap/'$VER'/css/bootstrap.css' >> $BADFILE
27
- done
28
-
29
- sort -u -o $BADFILE $BADFILE
@@ -1,29 +0,0 @@
1
- #!/bin/bash
2
-
3
- echo "Creating package files for font-awesome"
4
-
5
- BASEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
6
- BASEDIR="$(dirname "$BASEDIR")"
7
- GOODFILE=$BASEDIR/packages/font-awesome.good
8
- BADFILE=$BASEDIR/packages/font-awesome.bad
9
-
10
- # Clone or pull
11
- [ ! -d "$BASEDIR/package-spiders/maxcdn-bootstrap/.git" ] &&
12
- git clone https://github.com/MaxCDN/bootstrap-cdn.git "$BASEDIR/package-spiders/maxcdn-bootstrap" ||
13
- cd "$BASEDIR/package-spiders/maxcdn-bootstrap/" && git pull
14
-
15
- cd "$BASEDIR/package-spiders/maxcdn-bootstrap/public/font-awesome/"
16
- for VER in $(ls); do
17
- [ -L $VER ] && continue
18
- [ -f $VER ] && continue
19
- if [ "$(readlink latest)" = "$VER/" ]
20
- then
21
- echo '//netdna.bootstrapcdn.com/font-awesome/'$VER'/css/font-awesome.min.css' > $GOODFILE
22
- else
23
- echo '//netdna.bootstrapcdn.com/font-awesome/'$VER'/css/font-awesome.min.css' >> $BADFILE
24
- echo "Font Awesome $VER by @davegandy" >> $BADFILE
25
- fi
26
- echo '//netdna.bootstrapcdn.com/font-awesome/'$VER'/css/font-awesome.css' >> $BADFILE
27
- done
28
-
29
- sort -u -o $BADFILE $BADFILE
@@ -1,94 +0,0 @@
1
- Bootstrap v2.0.4 (http://getbootstrap.com)
2
- Bootstrap v2.1.0 (http://getbootstrap.com)
3
- Bootstrap v2.1.1 (http://getbootstrap.com)
4
- Bootstrap v2.2.0 (http://getbootstrap.com)
5
- Bootstrap v2.2.1 (http://getbootstrap.com)
6
- Bootstrap v2.2.2 (http://getbootstrap.com)
7
- Bootstrap v2.3.0 (http://getbootstrap.com)
8
- Bootstrap v2.3.1 (http://getbootstrap.com)
9
- Bootstrap v2.3.2 (http://getbootstrap.com)
10
- Bootstrap v3.0.0 (http://getbootstrap.com)
11
- Bootstrap v3.0.0-rc1 (http://getbootstrap.com)
12
- Bootstrap v3.0.0-rc2 (http://getbootstrap.com)
13
- Bootstrap v3.0.0-wip (http://getbootstrap.com)
14
- Bootstrap v3.0.1 (http://getbootstrap.com)
15
- Bootstrap v3.0.2 (http://getbootstrap.com)
16
- Bootstrap v3.0.3 (http://getbootstrap.com)
17
- Bootstrap v3.1.0 (http://getbootstrap.com)
18
- Bootstrap v3.1.1 (http://getbootstrap.com)
19
- Bootstrap v3.2.0 (http://getbootstrap.com)
20
- Bootstrap v3.3.0 (http://getbootstrap.com)
21
- Bootstrap v3.3.1 (http://getbootstrap.com)
22
- Bootstrap v3.3.2 (http://getbootstrap.com)
23
- Bootstrap v3.3.4 (http://getbootstrap.com)
24
- Bootstrap v3.3.5 (http://getbootstrap.com)
25
- Bootstrap v3.3.6 (http://getbootstrap.com)
26
- Bootstrap v4.0.0-alpha.2 (http://getbootstrap.com)
27
- Bootstrap v4.0.0-alpha.3 (http://getbootstrap.com)
28
- Bootstrap v4.0.0-alpha.4 (http://getbootstrap.com)
29
- Bootstrap v4.0.0-alpha.5 (http://getbootstrap.com)
30
- Bootstrap v4.0.0-alpha.6 (http://getbootstrap.com)
31
- Bootstrap v4.0.0-alpha (http://getbootstrap.com)
32
- //netdna.bootstrapcdn.com/bootstrap/2.0.4/css/bootstrap.css
33
- //netdna.bootstrapcdn.com/bootstrap/2.0.4/css/bootstrap.min.css
34
- //netdna.bootstrapcdn.com/bootstrap/2.1.0/css/bootstrap.css
35
- //netdna.bootstrapcdn.com/bootstrap/2.1.0/css/bootstrap.min.css
36
- //netdna.bootstrapcdn.com/bootstrap/2.1.1/css/bootstrap.css
37
- //netdna.bootstrapcdn.com/bootstrap/2.1.1/css/bootstrap.min.css
38
- //netdna.bootstrapcdn.com/bootstrap/2.2.0/css/bootstrap.css
39
- //netdna.bootstrapcdn.com/bootstrap/2.2.0/css/bootstrap.min.css
40
- //netdna.bootstrapcdn.com/bootstrap/2.2.1/css/bootstrap.css
41
- //netdna.bootstrapcdn.com/bootstrap/2.2.1/css/bootstrap.min.css
42
- //netdna.bootstrapcdn.com/bootstrap/2.2.2/css/bootstrap.css
43
- //netdna.bootstrapcdn.com/bootstrap/2.2.2/css/bootstrap.min.css
44
- //netdna.bootstrapcdn.com/bootstrap/2.3.0/css/bootstrap.css
45
- //netdna.bootstrapcdn.com/bootstrap/2.3.0/css/bootstrap.min.css
46
- //netdna.bootstrapcdn.com/bootstrap/2.3.1/css/bootstrap.css
47
- //netdna.bootstrapcdn.com/bootstrap/2.3.1/css/bootstrap.min.css
48
- //netdna.bootstrapcdn.com/bootstrap/2.3.2/css/bootstrap.css
49
- //netdna.bootstrapcdn.com/bootstrap/2.3.2/css/bootstrap.min.css
50
- //netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.css
51
- //netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css
52
- //netdna.bootstrapcdn.com/bootstrap/3.0.0-rc1/css/bootstrap.css
53
- //netdna.bootstrapcdn.com/bootstrap/3.0.0-rc1/css/bootstrap.min.css
54
- //netdna.bootstrapcdn.com/bootstrap/3.0.0-rc2/css/bootstrap.css
55
- //netdna.bootstrapcdn.com/bootstrap/3.0.0-rc2/css/bootstrap.min.css
56
- //netdna.bootstrapcdn.com/bootstrap/3.0.0-wip/css/bootstrap.css
57
- //netdna.bootstrapcdn.com/bootstrap/3.0.0-wip/css/bootstrap.min.css
58
- //netdna.bootstrapcdn.com/bootstrap/3.0.1/css/bootstrap.css
59
- //netdna.bootstrapcdn.com/bootstrap/3.0.1/css/bootstrap.min.css
60
- //netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.css
61
- //netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css
62
- //netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.css
63
- //netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css
64
- //netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.css
65
- //netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css
66
- //netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.css
67
- //netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css
68
- //netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.css
69
- //netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css
70
- //netdna.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.css
71
- //netdna.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css
72
- //netdna.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.css
73
- //netdna.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css
74
- //netdna.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.css
75
- //netdna.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css
76
- //netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.css
77
- //netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css
78
- //netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.css
79
- //netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css
80
- //netdna.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css
81
- //netdna.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css
82
- //netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css
83
- //netdna.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.css
84
- //netdna.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css
85
- //netdna.bootstrapcdn.com/bootstrap/4.0.0-alpha.3/css/bootstrap.css
86
- //netdna.bootstrapcdn.com/bootstrap/4.0.0-alpha.3/css/bootstrap.min.css
87
- //netdna.bootstrapcdn.com/bootstrap/4.0.0-alpha.4/css/bootstrap.css
88
- //netdna.bootstrapcdn.com/bootstrap/4.0.0-alpha.4/css/bootstrap.min.css
89
- //netdna.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.css
90
- //netdna.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css
91
- //netdna.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.css
92
- //netdna.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css
93
- //netdna.bootstrapcdn.com/bootstrap/4.0.0-alpha/css/bootstrap.css
94
- //netdna.bootstrapcdn.com/bootstrap/4.0.0-alpha/css/bootstrap.min.css
@@ -1 +0,0 @@
1
- //netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css
@@ -1,61 +0,0 @@
1
- Font Awesome 2.0 by @davegandy
2
- Font Awesome 3.0.2 by @davegandy
3
- Font Awesome 3.0 by @davegandy
4
- Font Awesome 3.1.0 by @davegandy
5
- Font Awesome 3.1.1 by @davegandy
6
- Font Awesome 3.2.0 by @davegandy
7
- Font Awesome 3.2.1 by @davegandy
8
- Font Awesome 4.0.0 by @davegandy
9
- Font Awesome 4.0.1 by @davegandy
10
- Font Awesome 4.0.2 by @davegandy
11
- Font Awesome 4.0.3 by @davegandy
12
- Font Awesome 4.1.0 by @davegandy
13
- Font Awesome 4.2.0 by @davegandy
14
- Font Awesome 4.3.0 by @davegandy
15
- Font Awesome 4.4.0 by @davegandy
16
- Font Awesome 4.5.0 by @davegandy
17
- Font Awesome 4.6.0 by @davegandy
18
- Font Awesome 4.6.1 by @davegandy
19
- Font Awesome 4.6.2 by @davegandy
20
- Font Awesome 4.6.3 by @davegandy
21
- //netdna.bootstrapcdn.com/font-awesome/2.0/css/font-awesome.css
22
- //netdna.bootstrapcdn.com/font-awesome/2.0/css/font-awesome.min.css
23
- //netdna.bootstrapcdn.com/font-awesome/3.0.2/css/font-awesome.css
24
- //netdna.bootstrapcdn.com/font-awesome/3.0.2/css/font-awesome.min.css
25
- //netdna.bootstrapcdn.com/font-awesome/3.0/css/font-awesome.css
26
- //netdna.bootstrapcdn.com/font-awesome/3.0/css/font-awesome.min.css
27
- //netdna.bootstrapcdn.com/font-awesome/3.1.0/css/font-awesome.css
28
- //netdna.bootstrapcdn.com/font-awesome/3.1.0/css/font-awesome.min.css
29
- //netdna.bootstrapcdn.com/font-awesome/3.1.1/css/font-awesome.css
30
- //netdna.bootstrapcdn.com/font-awesome/3.1.1/css/font-awesome.min.css
31
- //netdna.bootstrapcdn.com/font-awesome/3.2.0/css/font-awesome.css
32
- //netdna.bootstrapcdn.com/font-awesome/3.2.0/css/font-awesome.min.css
33
- //netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css
34
- //netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.min.css
35
- //netdna.bootstrapcdn.com/font-awesome/4.0.0/css/font-awesome.css
36
- //netdna.bootstrapcdn.com/font-awesome/4.0.0/css/font-awesome.min.css
37
- //netdna.bootstrapcdn.com/font-awesome/4.0.1/css/font-awesome.css
38
- //netdna.bootstrapcdn.com/font-awesome/4.0.1/css/font-awesome.min.css
39
- //netdna.bootstrapcdn.com/font-awesome/4.0.2/css/font-awesome.css
40
- //netdna.bootstrapcdn.com/font-awesome/4.0.2/css/font-awesome.min.css
41
- //netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css
42
- //netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css
43
- //netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.css
44
- //netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css
45
- //netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.css
46
- //netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css
47
- //netdna.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.css
48
- //netdna.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css
49
- //netdna.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.css
50
- //netdna.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css
51
- //netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css
52
- //netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css
53
- //netdna.bootstrapcdn.com/font-awesome/4.6.0/css/font-awesome.css
54
- //netdna.bootstrapcdn.com/font-awesome/4.6.0/css/font-awesome.min.css
55
- //netdna.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.css
56
- //netdna.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css
57
- //netdna.bootstrapcdn.com/font-awesome/4.6.2/css/font-awesome.css
58
- //netdna.bootstrapcdn.com/font-awesome/4.6.2/css/font-awesome.min.css
59
- //netdna.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.css
60
- //netdna.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css
61
- //netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.css
@@ -1 +0,0 @@
1
- //netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css
data/lib/version.rb DELETED
@@ -1,3 +0,0 @@
1
- module WebPuc
2
- VERSION = '0.4.0'
3
- end