maglove 0.8.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.rubocop.yml +157 -0
  4. data/Gemfile.lock +59 -49
  5. data/bin/maglove +13 -13
  6. data/data/maglove/export.haml +11 -0
  7. data/data/maglove/index.haml +17 -0
  8. data/data/maglove/maglove.css +62 -0
  9. data/data/maglove/maglove.haml +18 -0
  10. data/data/maglove/maglove.js +68 -0
  11. data/lib/block_resolver.rb +6 -0
  12. data/lib/ext/thor/option.rb +43 -0
  13. data/lib/magloft/api.rb +39 -0
  14. data/lib/magloft/api_caller.rb +67 -0
  15. data/lib/magloft/remote_collection.rb +50 -0
  16. data/lib/magloft/remote_resource.rb +124 -0
  17. data/lib/magloft/transformable.rb +11 -0
  18. data/lib/magloft/typeloft_block.rb +18 -0
  19. data/lib/magloft/typeloft_image.rb +18 -0
  20. data/lib/magloft/typeloft_template.rb +18 -0
  21. data/lib/magloft/typeloft_theme.rb +41 -0
  22. data/lib/magloft.rb +3 -0
  23. data/lib/maglove/application.rb +10 -12
  24. data/lib/maglove/asset/theme.rb +37 -32
  25. data/lib/maglove/commands/assets.rb +85 -0
  26. data/lib/maglove/commands/base.rb +55 -0
  27. data/lib/maglove/commands/fonts.rb +69 -0
  28. data/lib/maglove/commands/main.rb +24 -0
  29. data/lib/maglove/commands/theme.rb +197 -0
  30. data/lib/maglove/helper/log_helper.rb +3 -18
  31. data/lib/maglove/middleware/live_reload.rb +97 -0
  32. data/lib/maglove/phantom_script.rb +9 -10
  33. data/lib/maglove/server.rb +46 -78
  34. data/lib/maglove/tilt/coffee_template.rb +7 -6
  35. data/lib/maglove/tilt/haml_template.rb +4 -4
  36. data/lib/maglove/tilt/js_template.rb +8 -8
  37. data/lib/maglove/tilt/less_template.rb +5 -4
  38. data/lib/maglove/tilt/scss_template.rb +17 -11
  39. data/lib/maglove/tilt/yaml_template.rb +3 -2
  40. data/lib/maglove/version.rb +1 -1
  41. data/lib/maglove/workspace.rb +41 -0
  42. data/lib/maglove.rb +38 -49
  43. data/lib/powersnap.rb +24 -0
  44. data/lib/workspace/workspace_dir/archive.rb +18 -0
  45. data/lib/workspace/workspace_dir.rb +98 -0
  46. data/lib/workspace/workspace_file/archive.rb +45 -0
  47. data/lib/workspace/workspace_file/media.rb +19 -0
  48. data/lib/workspace/workspace_file/net.rb +18 -0
  49. data/lib/workspace/workspace_file/parse.rb +21 -0
  50. data/lib/workspace/workspace_file.rb +99 -0
  51. data/lib/workspace.rb +11 -0
  52. data/maglove.gemspec +12 -12
  53. metadata +100 -86
  54. data/data/maglove/dump.haml +0 -58
  55. data/data/maglove/sdk.haml +0 -27
  56. data/lib/ext/commander/command.rb +0 -32
  57. data/lib/ext/commander/methods.rb +0 -8
  58. data/lib/maglove/asset/base_theme.rb +0 -17
  59. data/lib/maglove/command/compile.rb +0 -44
  60. data/lib/maglove/command/compress.rb +0 -28
  61. data/lib/maglove/command/copy.rb +0 -35
  62. data/lib/maglove/command/core.rb +0 -23
  63. data/lib/maglove/command/font.rb +0 -80
  64. data/lib/maglove/command/server.rb +0 -16
  65. data/lib/maglove/command/sync.rb +0 -17
  66. data/lib/maglove/command/theme.rb +0 -175
  67. data/lib/maglove/command/util.rb +0 -45
  68. data/lib/maglove/helper/asset_helper.rb +0 -24
  69. data/lib/maglove/helper/command_helper.rb +0 -67
  70. data/lib/maglove/helper/theme_helper.rb +0 -105
  71. data/lib/maglove/server/hpub.rb +0 -185
  72. data/lib/maglove/template/tumblr.rb +0 -81
  73. data/lib/maglove/tilt/twig_template.rb +0 -49
@@ -4,24 +4,22 @@ module MagLove
4
4
  self.default_mime_type = 'application/javascript'
5
5
 
6
6
  def prepare
7
-
8
7
  end
9
8
 
10
9
  def evaluate(scope, locals, &block)
11
-
12
10
  # handle includes
13
- @data = @data.gsub(/^\/\/=\srequire\s(.+)$/) do |match|
11
+ @data = @data.gsub(%r{^//=\srequire\s(.+)$}) do |match|
14
12
  path = Regexp.last_match[1]
15
13
  include_path = File.absolute_path(path, File.dirname(file))
16
-
14
+
17
15
  # check if base path exists
18
- if not File.exists?(include_path)
16
+ unless File.exist?(include_path)
19
17
  include_path = File.absolute_path(path, locals[:base_path])
20
18
  end
21
-
22
- if File.exists?(include_path)
19
+
20
+ if File.exist?(include_path)
23
21
  include_template = ::Tilt.new(include_path)
24
- include_contents = include_template.render(Object.new, locals)
22
+ include_template.render(Object.new, locals)
25
23
  else
26
24
  raise "Path not found: #{include_path}"
27
25
  end
@@ -36,3 +34,5 @@ module MagLove
36
34
  end
37
35
  end
38
36
  end
37
+
38
+ Tilt.mappings["js"] = [MagLove::Tilt::JsTemplate]
@@ -4,15 +4,16 @@ module MagLove
4
4
  self.default_mime_type = 'theme/html'
5
5
 
6
6
  def prepare
7
- @parser = ::Less::Parser.new(options.merge :filename => eval_file, :line => line, :relativeUrls => false)
7
+ @parser = ::Less::Parser.new(options.merge(filename: eval_file, line: line, relativeUrls: false))
8
8
  end
9
-
9
+
10
10
  def evaluate(scope, locals, &block)
11
- prepared_data = "@base: \"#{locals[:base_path].sub("src/", "../../")}\";\n#{data}"
11
+ prepared_data = "@base: \"#{locals[:base_path].sub('src/', '../../')}\";\n#{data}"
12
12
  @engine = @parser.parse(prepared_data)
13
13
  @output ||= @engine.to_css(options)
14
14
  end
15
-
16
15
  end
17
16
  end
18
17
  end
18
+
19
+ Tilt.mappings["less"] = [MagLove::Tilt::LessTemplate]
@@ -1,10 +1,13 @@
1
- module Sass::Script::Functions
1
+ module Sass::Script::Functions
2
2
  def asset(url)
3
3
  assert_type url, :String
4
- Sass::Script::Value::String.new("url(\"#{::Hamloft::Options.defaults[:asset_uri]}/#{url.value}\")")
4
+ Sass::Script::Value::String.new("url(\"#{asset_uri}/#{url.value}\")")
5
5
  end
6
- # declare(:asset, [:url])
7
-
6
+
7
+ def asset_uri
8
+ options[:locals][:asset_uri] || Hamloft.asset_uri
9
+ end
10
+
8
11
  def asset_data(url)
9
12
  assert_type url, :String
10
13
  theme = options[:locals][:theme]
@@ -23,20 +26,23 @@ module MagLove
23
26
  module Tilt
24
27
  class ScssTemplate < ::Tilt::SassTemplate
25
28
  self.default_mime_type = 'text/css'
26
-
29
+
27
30
  def prepare
28
31
  end
29
32
 
30
33
  def evaluate(scope, locals, &block)
31
- prepared_data = "@base: \"#{locals[:base_path].sub("src/", "../../")}\";\n#{data}"
32
- engine = Sass::Engine.new(prepared_data, sass_options.merge({locals: locals}))
34
+ prepared_data = "@base: \"#{locals[:base_path].sub('src/', '../../')}\";\n#{data}"
35
+ engine = Sass::Engine.new(prepared_data, sass_options.merge({ locals: locals }))
33
36
  @output ||= engine.render
34
37
  end
35
-
38
+
36
39
  private
37
- def sass_options
38
- options.merge(:filename => eval_file, :line => line, :syntax => :scss)
39
- end
40
+
41
+ def sass_options
42
+ options.merge(filename: eval_file, line: line, syntax: :scss)
43
+ end
40
44
  end
41
45
  end
42
46
  end
47
+
48
+ Tilt.mappings["scss"] = [MagLove::Tilt::ScssTemplate]
@@ -2,9 +2,8 @@ module MagLove
2
2
  module Tilt
3
3
  class YamlTemplate < ::Tilt::Template
4
4
  self.default_mime_type = 'application/json'
5
-
5
+
6
6
  def prepare
7
-
8
7
  end
9
8
 
10
9
  def evaluate(scope, locals, &block)
@@ -17,3 +16,5 @@ module MagLove
17
16
  end
18
17
  end
19
18
  end
19
+
20
+ Tilt.mappings["yml"] = [MagLove::Tilt::YamlTemplate]
@@ -1,3 +1,3 @@
1
1
  module MagLove
2
- VERSION = "0.8.1"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -0,0 +1,41 @@
1
+ module Workspace
2
+ def theme_dir(root: "src", theme: options[:theme])
3
+ workspace_dir("#{root}/themes/#{theme}")
4
+ end
5
+
6
+ def theme_file(path, root: "src", theme: options[:theme])
7
+ workspace_file("#{root}/themes/#{theme}", path)
8
+ end
9
+
10
+ def theme_base_file(path, theme: options[:theme])
11
+ theme_base_dir(theme: theme).file(path)
12
+ end
13
+
14
+ def theme_base_dir(theme: options[:theme])
15
+ base_version = theme_config(:base_version, theme: theme)
16
+ workspace_dir("src/base/#{base_version}")
17
+ end
18
+
19
+ def gem_dir
20
+ workspace_dir(Gem.datadir("maglove"))
21
+ end
22
+
23
+ def theme_config(key = nil, theme: options[:theme])
24
+ Maglove.theme_config(key, theme)
25
+ end
26
+
27
+ class WorkspaceFile
28
+ def asset(theme: workspace_theme, base: false, asset_uri: ".")
29
+ MagLove::Asset::Theme.new(path, { theme: theme, base: base, asset_uri: asset_uri })
30
+ end
31
+
32
+ def workspace_theme
33
+ match = self.workspace.match(%r{/themes/([^/]+)})
34
+ match ? match[1] : nil
35
+ end
36
+
37
+ def read_hamloft(options = {})
38
+ Hamloft.render(read, options)
39
+ end
40
+ end
41
+ end
data/lib/maglove.rb CHANGED
@@ -1,51 +1,40 @@
1
- require "tilt"
2
- require "hamloft"
1
+ require 'magloft'
2
+ require "maglove/workspace"
3
+ require "maglove/widgets"
4
+ require "maglove/commands/base"
5
+ require "maglove/commands/fonts"
6
+ require "maglove/commands/theme"
7
+ require "maglove/commands/assets"
8
+ require "maglove/commands/main"
9
+ require "block_resolver"
3
10
 
4
- require "rubygems"
5
- require "bundler"
6
- require "active_support/all"
7
- require "dotenv"
8
- require "webrick"
9
- require "filewatcher"
10
- require "logging"
11
- require "coffee_script"
12
- require "therubyracer"
13
- require "less"
14
- require "sass"
15
- require "action_dispatch/http/mime_type"
16
- require "commander"
17
- require "image_optim"
18
- require "zlib"
19
- require 'zip'
20
- require "archive/tar/minitar"
11
+ module Maglove
12
+ def self.theme_config(key = nil, theme)
13
+ @theme_config ||= {}
14
+ unless @theme_config[theme]
15
+ config_file = Workspace::WorkspaceFile.new("src/themes/#{theme}", "theme.yml")
16
+ @theme_config[theme] = config_file.read_yaml
17
+ end
18
+ if key.nil?
19
+ @theme_config[theme]
20
+ else
21
+ @theme_config[theme][key.to_s]
22
+ end
23
+ end
21
24
 
22
- require "maglove/version"
23
- require "maglove/tilt/twig_template"
24
- require "maglove/tilt/haml_template"
25
- require "maglove/tilt/less_template"
26
- require "maglove/tilt/scss_template"
27
- require "maglove/tilt/coffee_template"
28
- require "maglove/tilt/js_template"
29
- require "maglove/tilt/yaml_template"
30
- require "maglove/helper/log_helper"
31
- require "maglove/helper/theme_helper"
32
- require "maglove/helper/asset_helper"
33
- require "maglove/helper/command_helper"
34
- require "ext/commander/command"
35
- require "ext/commander/methods"
36
- require "maglove/command/theme"
37
- require "maglove/command/core"
38
- require "maglove/command/compile"
39
- require "maglove/command/compress"
40
- require "maglove/command/copy"
41
- require "maglove/command/util"
42
- require "maglove/command/font"
43
- require "maglove/command/sync"
44
- require "maglove/command/server"
45
- require "maglove/phantom_script"
46
- require "maglove/application"
47
- require "maglove/asset/theme"
48
- require "maglove/asset/base_theme"
49
- require "maglove/server/hpub"
50
- require "maglove/server"
51
- require "maglove/template/tumblr"
25
+ def self.logger
26
+ if @logger.nil?
27
+ Logging.color_scheme("bright",
28
+ levels: { debug: :blue, info: :green, warn: :yellow, error: :red, fatal: [:white, :on_red] },
29
+ date: :blue,
30
+ mdc: :cyan,
31
+ logger: :cyan,
32
+ message: :black)
33
+ Logging.appenders.stdout("stdout", layout: Logging.layouts.pattern(pattern: '[%d] %-5l %-18X{full_command} %x %m\n', color_scheme: 'bright'))
34
+ @logger = Logging::Logger.new(self.class.name)
35
+ @logger.level = :debug
36
+ @logger.add_appenders('stdout')
37
+ end
38
+ @logger
39
+ end
40
+ end
data/lib/powersnap.rb ADDED
@@ -0,0 +1,24 @@
1
+ class Powersnap
2
+ attr_accessor :urls, :prefix
3
+
4
+ def initialize(urls, prefix: nil)
5
+ @urls = urls.map { |url| URI.encode(url) }
6
+ @prefix = prefix
7
+ end
8
+
9
+ def generate(dir: ".", width: 768, height: 1024, pattern: "image-{index}.png", zoom: 1.0, page: false, quality: 100, css: nil)
10
+ extension = File.extname(pattern)
11
+ if extension == ".jpg"
12
+ format = "jpeg"
13
+ elsif extension == ".png"
14
+ format = "png"
15
+ else
16
+ raise "Invalid file extension: #{extension}"
17
+ end
18
+ cmd = "#{@prefix} powersnap -j -d \"#{dir}\" -t \"#{format}\" -q #{quality} -z #{zoom} #{page ? '--page' : ''} -w #{width.to_i} -h #{height.to_i} #{(css and "-c #{css}")} -f \"#{pattern}\" #{@urls.join(' ')}"
19
+ json_response = `#{cmd}`
20
+
21
+ response = JSON.parse(json_response)
22
+ return response["stats"] == "success"
23
+ end
24
+ end
@@ -0,0 +1,18 @@
1
+ module Workspace
2
+ class WorkspaceDir
3
+ module Archive
4
+ extend ActiveSupport::Concern
5
+
6
+ def compress_zip(target_file)
7
+ target_file.delete!
8
+ require "zip"
9
+ Zip::File.open(target_file.to_s, 'w') do |zipfile|
10
+ Dir["#{self}/**/**"].each do |file|
11
+ zipfile.add(file.sub("#{self}/", ''), file)
12
+ end
13
+ end
14
+ self
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,98 @@
1
+ require 'workspace/workspace_dir/archive'
2
+ module Workspace
3
+ class WorkspaceDir
4
+ include Workspace::WorkspaceDir::Archive
5
+
6
+ attr_accessor :workspace, :path
7
+
8
+ def initialize(workspace, path = "")
9
+ @workspace = workspace
10
+ @path = path
11
+ end
12
+
13
+ def to_s
14
+ File.join(@workspace, @path)
15
+ end
16
+
17
+ def name
18
+ File.basename(to_s)
19
+ end
20
+
21
+ def create
22
+ FileUtils.mkdir_p(to_s)
23
+ self
24
+ end
25
+
26
+ def exists?
27
+ File.directory?(to_s)
28
+ end
29
+
30
+ def copy(target_dir)
31
+ target_dir.parent_dir.create unless target_dir.parent_dir.exists?
32
+ FileUtils.cp_r(to_s, target_dir.to_s)
33
+ end
34
+
35
+ def delete!
36
+ FileUtils.rm_rf(to_s)
37
+ end
38
+
39
+ def reset!
40
+ delete!
41
+ create
42
+ end
43
+
44
+ def file(file_path)
45
+ WorkspaceFile.new(@workspace, File.join(@path, file_path))
46
+ end
47
+
48
+ def dir(dir_path)
49
+ self.class.new(@workspace, File.join(@path, dir_path))
50
+ end
51
+
52
+ def root_dir
53
+ self.class.new(@workspace, "")
54
+ end
55
+
56
+ def chdir(target_dir = nil)
57
+ if target_dir.nil?
58
+ self.class.new(to_s, "")
59
+ else
60
+ self.class.new(dir(target_dir).to_s, "")
61
+ end
62
+ end
63
+
64
+ def parent_dir
65
+ root_dir.dir(File.expand_path("..", @path))
66
+ end
67
+
68
+ def children
69
+ entries = []
70
+ Dir.chdir(to_s) do
71
+ Dir["*"].each do |path|
72
+ entries.push(dir(path))
73
+ end
74
+ end
75
+ entries
76
+ end
77
+
78
+ def files(glob = "*")
79
+ entries = []
80
+ Dir.chdir(to_s) do
81
+ Dir[glob].each do |path|
82
+ entries.push(file(path))
83
+ end
84
+ end
85
+ entries
86
+ end
87
+
88
+ def each_dir(&block)
89
+ children.each do |subdir|
90
+ yield(subdir)
91
+ end
92
+ end
93
+
94
+ def absolute_path
95
+ File.absolute_path(to_s)
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,45 @@
1
+ module Workspace
2
+ class WorkspaceFile
3
+ module Archive
4
+ extend ActiveSupport::Concern
5
+
6
+ def extract(target_dir)
7
+ target_dir.create
8
+ if extension == "zip"
9
+ extract_zip(target_dir)
10
+ elsif extension == "gz"
11
+ extract_gz(target_dir)
12
+ end
13
+ self
14
+ end
15
+
16
+ private
17
+
18
+ def extract_zip(target_dir)
19
+ require "zip"
20
+ Zip::File.open(to_s) do |archive|
21
+ archive.each do |entry|
22
+ entry.extract(File.join(target_dir.to_s, entry.name))
23
+ end
24
+ end
25
+ end
26
+
27
+ def extract_gz(target_dir)
28
+ require 'rubygems/package'
29
+ workspace_dir = target_dir.root_dir
30
+ archive = Gem::Package::TarReader.new(Zlib::GzipReader.open(to_s))
31
+ archive.rewind
32
+ archive.each do |entry|
33
+ if entry.directory?
34
+ archive_dir = workspace_dir.dir(entry.full_name)
35
+ archive_dir.create
36
+ elsif entry.file?
37
+ archive_file = workspace_dir.file(entry.full_name)
38
+ archive_file.write(entry.read)
39
+ end
40
+ end
41
+ archive.close
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,19 @@
1
+ module Workspace
2
+ class WorkspaceFile
3
+ module Media
4
+ extend ActiveSupport::Concern
5
+
6
+ def image?
7
+ ["jpg", "jpeg", "gif", "png"].include?(extension)
8
+ end
9
+
10
+ def video?
11
+ ["mp4"].include?(extension)
12
+ end
13
+
14
+ def audio?
15
+ ["mp3"].include?(extension)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ require "open-uri"
2
+ require "open_uri_redirections"
3
+
4
+ module Workspace
5
+ class WorkspaceFile
6
+ module Net
7
+ extend ActiveSupport::Concern
8
+
9
+ def download(url)
10
+ url = "http:#{url}" if url[0..1] == "//"
11
+ contents = open(url, { ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE, allow_redirections: :safe }).read
12
+ dir.create unless dir.exists?
13
+ write(contents)
14
+ self
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ module Workspace
2
+ class WorkspaceFile
3
+ module Parse
4
+ extend ActiveSupport::Concern
5
+
6
+ def read_json
7
+ JSON.parse(read)
8
+ end
9
+
10
+ def read_yaml
11
+ Psych.load_file(to_s)
12
+ end
13
+
14
+ def read_haml(options)
15
+ require "haml"
16
+ engine = Haml::Engine.new(read)
17
+ engine.render(Object.new, options)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,99 @@
1
+ require 'workspace/workspace_file/archive'
2
+ require 'workspace/workspace_file/media'
3
+ require 'workspace/workspace_file/net'
4
+ require 'workspace/workspace_file/parse'
5
+
6
+ module Workspace
7
+ class WorkspaceFile
8
+ include Workspace::WorkspaceFile::Archive
9
+ include Workspace::WorkspaceFile::Media
10
+ include Workspace::WorkspaceFile::Net
11
+ include Workspace::WorkspaceFile::Parse
12
+
13
+ attr_accessor :workspace, :path
14
+
15
+ def initialize(workspace, path)
16
+ @workspace = workspace
17
+ @path = path
18
+ end
19
+
20
+ def set(data)
21
+ @contents = data
22
+ self
23
+ end
24
+
25
+ def contents
26
+ @contents ||= read
27
+ end
28
+
29
+ def replace(key, value)
30
+ contents.gsub!(key, value)
31
+ self
32
+ end
33
+
34
+ def write(data = nil)
35
+ data ||= @contents
36
+ dir.create unless dir.exists?
37
+ File.open(to_s, "wb") { |file| file << data }
38
+ self
39
+ end
40
+
41
+ def copy(target_file)
42
+ target_file.dir.create unless target_file.dir.exists?
43
+ FileUtils.cp(to_s, target_file.to_s)
44
+ end
45
+
46
+ def to_s
47
+ File.join(@workspace, @path)
48
+ end
49
+
50
+ def relative_path
51
+ @path.sub(%r{^/}, "")
52
+ end
53
+
54
+ def exists?
55
+ File.exist?(to_s) and !File.directory?(to_s)
56
+ end
57
+
58
+ def read
59
+ File.open(to_s).read
60
+ end
61
+
62
+ def dir
63
+ Workspace::WorkspaceDir.new(@workspace, File.dirname(@path))
64
+ end
65
+
66
+ def md5
67
+ Digest::MD5.hexdigest(read)
68
+ end
69
+
70
+ def url
71
+ "file://#{absolute_path}"
72
+ end
73
+
74
+ def delete!
75
+ FileUtils.rm_f(to_s)
76
+ end
77
+
78
+ def basename
79
+ File.basename(path, ".*")
80
+ end
81
+
82
+ def slug
83
+ relative_path.chomp(File.extname(self.relative_path))
84
+ end
85
+
86
+ def extension
87
+ File.extname(to_s).gsub(/^\./, "")
88
+ end
89
+
90
+ def rename!(filename)
91
+ FileUtils.mv(to_s, dir.file(filename).to_s) if exists?
92
+ @path = dir.file(filename).path
93
+ end
94
+
95
+ def absolute_path
96
+ File.absolute_path(to_s)
97
+ end
98
+ end
99
+ end
data/lib/workspace.rb ADDED
@@ -0,0 +1,11 @@
1
+ require "workspace/workspace_dir"
2
+ require "workspace/workspace_file"
3
+ module Workspace
4
+ def workspace_dir(workspace, path = "")
5
+ Workspace::WorkspaceDir.new(workspace, path)
6
+ end
7
+
8
+ def workspace_file(workspace, path = "")
9
+ Workspace::WorkspaceFile.new(workspace, path)
10
+ end
11
+ end
data/maglove.gemspec CHANGED
@@ -14,26 +14,26 @@ Gem::Specification.new do |s|
14
14
  s.description = "This gem contains development and built tools for creating MagLoft themes."
15
15
  s.required_rubygems_version = '>= 2.4.7'
16
16
  s.add_runtime_dependency "bundler", "~> 1.10"
17
- s.add_runtime_dependency "dotenv", "~> 2.0"
18
17
  s.add_runtime_dependency 'haml', "~> 4.0"
19
- s.add_runtime_dependency 'hamloft', "~> 0.2.1"
20
- s.add_runtime_dependency "rubyzip", "~> 1.1"
21
- s.add_runtime_dependency "activesupport", "~> 5.0"
22
- s.add_runtime_dependency "actionpack", "~> 5.0"
18
+ s.add_runtime_dependency "thor", "~> 0.19"
19
+ s.add_runtime_dependency 'hamloft', "~> 0.2.4"
20
+ s.add_runtime_dependency "activesupport", ">= 4.0"
21
+ s.add_runtime_dependency "actionpack", ">= 4.0"
22
+ s.add_runtime_dependency "maglove-widgets", "~> 1.0"
23
+ s.add_runtime_dependency "open_uri_redirections", "~> 0.2"
23
24
  s.add_runtime_dependency "logging", "~> 2.0"
24
25
  s.add_runtime_dependency "tilt", "~> 1.4"
25
26
  s.add_runtime_dependency "coffee-script", "~> 2.4"
26
- s.add_runtime_dependency "minitar", "~> 0.5"
27
- s.add_runtime_dependency "therubyracer", "~> 0.12"
28
27
  s.add_runtime_dependency "less", "~> 2.6"
29
28
  s.add_runtime_dependency "sass", "~> 3.4"
30
- s.add_runtime_dependency "webrick", "~> 1.3"
31
- s.add_runtime_dependency "commander", "~> 4.3"
32
- s.add_runtime_dependency "filewatcher", "~> 0.5"
29
+ s.add_runtime_dependency "dialers", "~> 0.2"
30
+ s.add_runtime_dependency "rubyzip", "~> 1.1"
33
31
  s.add_runtime_dependency "image_optim", "~> 0.21"
34
32
  s.add_runtime_dependency "image_optim_pack", "~> 0.2"
35
- s.add_development_dependency "rspec", "~> 3.3"
36
- s.add_development_dependency "pry", "~> 0.10"
33
+ s.add_runtime_dependency "puma", "~> 3.6"
34
+ s.add_runtime_dependency "filewatcher", "~> 0.5"
35
+ s.add_runtime_dependency "faye", "~> 1.2"
36
+ s.add_runtime_dependency "faraday", "~> 0.9"
37
37
  s.add_development_dependency "rubocop", "~> 0.32"
38
38
  s.files = `git ls-files`.split("\n")
39
39
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }