Class: ShopifyTheme::Cli
- Inherits:
-
Thor
- Object
- Thor
- ShopifyTheme::Cli
- Includes:
- Thor::Actions
- Defined in:
- lib/shopify_theme/cli.rb
Constant Summary collapse
- BINARY_EXTENSIONS =
%w(png gif jpg jpeg eot svg ttf woff otf swf ico)
- IGNORE =
%w(config.yml)
- DEFAULT_WHITELIST =
%w(layout/ assets/ config/ snippets/ templates/)
- TIMEFORMAT =
"%H:%M:%S"
Instance Method Summary collapse
- #check ⇒ Object
- #configure(api_key = nil, password = nil, store = nil, theme_id = nil) ⇒ Object
- #download(*keys) ⇒ Object
- #open(*keys) ⇒ Object
- #remove(*keys) ⇒ Object
- #replace(*keys) ⇒ Object
- #systeminfo ⇒ Object
- #upload(*keys) ⇒ Object
- #watch ⇒ Object
Instance Method Details
#check ⇒ Object
25 26 27 28 29 30 31 |
# File 'lib/shopify_theme/cli.rb', line 25 def check if ShopifyTheme.check_config say("Configuration [OK]", :green) else say("Configuration [FAIL]", :red) end end |
#configure(api_key = nil, password = nil, store = nil, theme_id = nil) ⇒ Object
34 35 36 37 |
# File 'lib/shopify_theme/cli.rb', line 34 def configure(api_key=nil, password=nil, store=nil, theme_id=nil) config = {:api_key => api_key, :password => password, :store => store, :theme_id => theme_id} create_file('config.yml', config.to_yaml) end |
#download(*keys) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/shopify_theme/cli.rb', line 42 def download(*keys) assets = keys.empty? ? ShopifyTheme.asset_list : keys if ['exclude'] assets = assets.delete_if { |asset| asset =~ Regexp.new(['exclude']) } end assets.each do |asset| download_asset(asset) say("#{ShopifyTheme.api_usage} Downloaded: #{asset}", :green) unless ['quiet'] end say("Done.", :green) unless ['quiet'] end |
#open(*keys) ⇒ Object
57 58 59 60 61 |
# File 'lib/shopify_theme/cli.rb', line 57 def open(*keys) if Launchy.open shop_theme_url say("Done.", :green) end end |
#remove(*keys) ⇒ Object
94 95 96 97 98 99 |
# File 'lib/shopify_theme/cli.rb', line 94 def remove(*keys) keys.each do |key| delete_asset(key, ['quiet']) end say("Done.", :green) unless ['quiet'] end |
#replace(*keys) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/shopify_theme/cli.rb', line 75 def replace(*keys) say("Are you sure you want to completely replace your shop theme assets? This is not undoable.", :yellow) if ask("Continue? (Y/N): ") == "Y" # only delete files on remote that are not present locally # files present on remote and present locally get overridden anyway remote_assets = keys.empty? ? (ShopifyTheme.asset_list - local_assets_list) : keys remote_assets.each do |asset| delete_asset(asset, ['quiet']) end local_assets = keys.empty? ? local_assets_list : keys local_assets.each do |asset| send_asset(asset, ['quiet']) end say("Done.", :green) unless ['quiet'] end end |
#systeminfo ⇒ Object
120 121 122 123 124 125 126 127 128 129 |
# File 'lib/shopify_theme/cli.rb', line 120 def systeminfo ruby_version = "#{RUBY_VERSION}" ruby_version += "-p#{RUBY_PATCHLEVEL}" if RUBY_PATCHLEVEL puts "Ruby: v#{ruby_version}" puts "Operating System: #{RUBY_PLATFORM}" %w(Thor Listen HTTParty Launchy).each do |lib| require "#{lib.downcase}/version" puts "#{lib}: v" + Kernel.const_get("#{lib}::VERSION") end end |
#upload(*keys) ⇒ Object
65 66 67 68 69 70 71 |
# File 'lib/shopify_theme/cli.rb', line 65 def upload(*keys) assets = keys.empty? ? local_assets_list : keys assets.each do |asset| send_asset(asset, ['quiet']) end say("Done.", :green) unless ['quiet'] end |
#watch ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/shopify_theme/cli.rb', line 104 def watch puts "Watching current folder: #{Dir.pwd}" watcher do |filename, event| filename = filename.gsub("#{Dir.pwd}/", '') if local_assets_list.include?(filename) action = case event when :changed, :new then :send_asset when :delete then :delete_asset else raise NotImplementedError, "Unknown event -- #{event}" end send(action, filename, ['quiet']) end end end |