forked from twbs/bootstrap-rubygem
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdater.rb
67 lines (56 loc) · 1.88 KB
/
updater.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# coding: utf-8
require 'open-uri'
require 'json'
require 'strscan'
require 'forwardable'
require 'term/ansicolor'
require 'fileutils'
require_relative 'updater/scss'
require_relative 'updater/js'
require_relative 'updater/logger'
require_relative 'updater/network'
class Updater
extend Forwardable
include Network
include Js
include Scss
def initialize(repo: 'twbs/bootstrap', branch: 'master', save_to: {}, cache_path: 'tmp/bootstrap-cache')
@logger = Logger.new
@repo = repo
@branch = branch || 'master'
@branch_sha = get_branch_sha
@cache_path = cache_path
@repo_url = "https://github.com/#@repo"
@save_to = {
js: 'assets/javascripts/bootstrap',
scss: 'assets/stylesheets/bootstrap'}.merge(save_to)
end
def_delegators :@logger, :log, :log_status, :log_processing, :log_transform, :log_file_info, :log_processed, :log_http_get_file, :log_http_get_files, :silence_log
def update_bootstrap
log_status 'Updating Bootstrap'
puts " repo : #@repo_url"
puts " branch : #@branch_sha #@repo_url/tree/#@branch"
puts " save to: #{@save_to.to_json}"
puts " twbs cache: #{@cache_path}"
puts '-' * 60
FileUtils.rm_rf('assets')
@save_to.each { |_, v| FileUtils.mkdir_p(v) }
update_scss_assets
update_javascript_assets
store_version
end
def save_file(path, content, mode='w')
dir = File.dirname(path)
FileUtils.mkdir_p(dir) unless File.directory?(dir)
File.open(path, mode) { |file| file.write(content) }
end
def upstream_version
@upstream_version ||= get_json(file_url 'package.json')['version']
end
# Update version.rb file with BOOTSTRAP_SHA
def store_version
path = 'lib/bootstrap/version.rb'
content = File.read(path).sub(/BOOTSTRAP_SHA\s*=\s*['"][^'"]*['"]/, "BOOTSTRAP_SHA = '#@branch_sha'")
File.open(path, 'w') { |f| f.write(content) }
end
end