binda-shopify 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0de8e1630d6d3ca6fe0992c338bf2f1183969b48
4
+ data.tar.gz: 2a4d86220701a66cd14003d69d2d2cf57493c196
5
+ SHA512:
6
+ metadata.gz: 67f93ad5bbe7a74860849871ec3d6235306eda5af4d82416cdc8acfe20335ed6fd3c482e93b82ac804704133b78e1daf66df726a408250d08b16d46c349e8798
7
+ data.tar.gz: 931d0fb4afeb6bf8f970f9a37e8e311dfae2673836d63a62f4c6f0129708955adfc200438610eca4d33d1948389a52f29fae2c1a3b74ceb215c7933a48c786e0
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2018 Marco Crepaldi
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # Binda Shopify
2
+ Extension that lets you import your Shopify products into your Binda application.
3
+
4
+ **Binda** is a headless CMS with an intuitive out-of-the-box interface which makes very easy creating application infrastructures. For more info about Binda structure please visit the [official documentation](http://www.rubydoc.info/gems/binda)
5
+
6
+ [![Maintainability](https://api.codeclimate.com/v1/badges/00f7b3a4bb33ea7637c2/maintainability)](https://codeclimate.com/github/lacolonia/binda-shopify/maintainability)
7
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/00f7b3a4bb33ea7637c2/test_coverage)](https://codeclimate.com/github/lacolonia/binda-shopify/test_coverage)
8
+
9
+ # Installation
10
+
11
+ Install Binda via terminal
12
+
13
+ Just add the gem to your application's Gemfile:
14
+
15
+ ```ruby
16
+ gem 'binda-shopify', github: 'lacolonia/binda-shopify'
17
+ ```
18
+
19
+ Then, run:
20
+
21
+ ```bash
22
+ bundle install
23
+ ```
24
+
25
+ After that, you need to setup your connection to Shopify and create `Binda::Structures` where your data will be imported.
26
+
27
+ ```bash
28
+ bundle exec rails generate binda:shopify:install
29
+ ```
30
+
31
+ Now you are good to go!
data/Rakefile ADDED
@@ -0,0 +1,36 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'Binda::Shopify'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.md')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
18
+ load 'rails/tasks/engine.rake'
19
+
20
+
21
+ load 'rails/tasks/statistics.rake'
22
+
23
+
24
+
25
+ require 'bundler/gem_tasks'
26
+
27
+ require 'rake/testtask'
28
+
29
+ Rake::TestTask.new(:test) do |t|
30
+ t.libs << 'test'
31
+ t.pattern = 'test/**/*_test.rb'
32
+ t.verbose = false
33
+ end
34
+
35
+
36
+ task default: :test
@@ -0,0 +1,7 @@
1
+ module Binda
2
+ module Shopify
3
+ class ApplicationController < ActionController::Base
4
+ protect_from_forgery with: :exception
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,18 @@
1
+ require_dependency "binda/application_controller"
2
+
3
+ module Binda
4
+ module Shopify
5
+ class ImportsController < ::Binda::ApplicationController
6
+ def import
7
+ importer = ::Binda::Shopify::Importer.new
8
+ importer.run!
9
+
10
+ structure_name = STRUCTURES.keys.first
11
+ settings = ::Binda::Structure.find_by(slug: 'shopify-settings').board
12
+ structure_slug = settings.get_string("#{settings.slug}-#{structure_name.to_s.gsub('_', '-')}").strip.parameterize
13
+ structure = ::Binda::Structure.find_by slug: structure_slug
14
+ redirect_to binda.structure_components_path( structure ), notice: 'Import was succesful!'
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,6 @@
1
+ module Binda
2
+ module Shopify
3
+ module ApplicationHelper
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module Binda
2
+ module Shopify
3
+ class ApplicationJob < ActiveJob::Base
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,8 @@
1
+ module Binda
2
+ module Shopify
3
+ class ApplicationMailer < ActionMailer::Base
4
+ default from: 'from@example.com'
5
+ layout 'mailer'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ module Binda
2
+ module Shopify
3
+ class ApplicationRecord < ActiveRecord::Base
4
+ self.abstract_class = true
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ Deface::Override.new(virtual_path: 'layouts/binda/application',
2
+ name: 'head',
3
+ insert_bottom: 'head',
4
+ partial: 'shared/javascript'
5
+ )
@@ -0,0 +1,4 @@
1
+ Deface::Override.new :virtual_path => "layouts/binda/_sidebar",
2
+ :name => 'main_sidebar',
3
+ :insert_before => "[data-hook='main-sidebar-log-out']",
4
+ :partial => 'shared/synchronize'
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Binda shopify</title>
5
+ <%= stylesheet_link_tag "binda/shopify/application", media: "all" %>
6
+ <%= javascript_include_tag "binda/shopify/application" %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+
11
+ <%= yield %>
12
+
13
+ </body>
14
+ </html>
@@ -0,0 +1,36 @@
1
+ <script>
2
+ $(function(){
3
+ $( window ).on('beforeunload', function(){
4
+ if($('.popup-warning').css('opacity') == '1'){
5
+ return 'Please, wait until popup is closed.';
6
+ }
7
+ });
8
+
9
+ $('.main-sidebar--nav').on("click", ".synch-with-shopify", function(){
10
+ var $this = $(this);
11
+ var $popup = $(".popup-warning");
12
+ var $loader = $(".popup-warning--loader");
13
+ var $message = $(".popup-warning--message");
14
+ var $success = $(".popup-warning--success");
15
+ var synch_url = $this.attr('href');
16
+
17
+ if($loader.hasClass('popup-warning--loader--hidden')){
18
+ $loader.removeClass('popup-warning--loader--hidden');
19
+ }
20
+ if(!$success.hasClass('popup-warning--loader--hidden')){
21
+ $success.addClass('popup-warning--success--hidden');
22
+ }
23
+ $message.text($this.data("message"));
24
+ $popup.removeClass("popup-warning--hidden");
25
+ $.get(synch_url, function(data){
26
+ $message.text($this.data("success"));
27
+ $loader.addClass('popup-warning--loader--hidden');
28
+ $(".popup-warning--success").removeClass('popup-warning--success--hidden');
29
+ window.setTimeout(function(){
30
+ $(".popup-warning").addClass("popup-warning--hidden");
31
+ }, 2000);
32
+ })
33
+ return false;
34
+ });
35
+ });
36
+ </script>
@@ -0,0 +1,5 @@
1
+ <li>
2
+ <a class="synch-with-shopify" data-message="<%= I18n.t('binda.shopify.loading') %>" data-success="<%= I18n.t('binda.shopify.success') %>" href="<%= shopify_import_path %>">
3
+ <i class="fas fa-sync"></i> <%= I18n.t('binda.shopify.synch_with_shopify') %>
4
+ </a>
5
+ </li>
@@ -0,0 +1,3 @@
1
+ test:
2
+ adapter: postgresql
3
+ database: travis_ci_test
@@ -0,0 +1,6 @@
1
+ en:
2
+ binda:
3
+ shopify:
4
+ synch_with_shopify: Synch with Shopify
5
+ loading: Synch in progress. It might take a few minutes.
6
+ success: Synch completed succesfully!
@@ -0,0 +1,6 @@
1
+ it:
2
+ binda:
3
+ shopify:
4
+ synch_with_shopify: Sincronizza con Shopify
5
+ loading: Sincronizazzione in corso. Potrebbe richiedere qualche minuto.
6
+ success: Sincronizzazione completata con successo!
data/config/routes.rb ADDED
@@ -0,0 +1,5 @@
1
+ Binda::Engine.routes.draw do
2
+ namespace :shopify do
3
+ get '/import' => 'imports#import', as: 'import'
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ module Binda
2
+ module Shopify
3
+ class Collection < Item
4
+ def sorted_products
5
+ item.products.map(&:id).join(",")
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ module Binda
2
+ module Shopify
3
+ class Engine < ::Rails::Engine
4
+ isolate_namespace Binda::Shopify
5
+ config.autoload_paths += %W(#{config.root}/lib)
6
+
7
+ config.generators do |g|
8
+ g.test_framework :rspec
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,89 @@
1
+ require 'shopify_api'
2
+
3
+ module Binda
4
+ module Shopify
5
+ class Importer
6
+ attr_accessor :client, :settings
7
+
8
+ def initialize
9
+ settings_slug = 'shopify-settings'
10
+ @settings = ::Binda::Structure.find_by(slug: 'shopify-settings').board
11
+ api_key, password, shared_secret, shop_name = ::Binda::Shopify::CONNECTION_KEYS.map{|field| settings.get_string("#{settings_slug}-#{field.to_s.gsub('_', '-')}").strip }
12
+
13
+ @client = ::ShopifyAPI
14
+ @client::Base.site = "https://#{api_key}:#{password}@#{shop_name}.myshopify.com/admin"
15
+ @client::Session.setup(api_key: api_key, secret: shared_secret)
16
+ end
17
+
18
+ def run!
19
+ start_time = Time.now
20
+ ::Binda::Shopify::STRUCTURES.each do |name, structure_fields|
21
+ structure_slug = settings.get_string("#{@settings.slug}-#{name.to_s.gsub('_', '-')}").strip.parameterize
22
+ structure = ::Binda::Structure.find_by slug: structure_slug
23
+ send("fetch_#{name.to_s.pluralize}").each do |item|
24
+ if item.id.present?
25
+ component = ::Binda::Component.find_or_initialize_by slug: item.id, structure: structure
26
+ component.name ||= item.title
27
+ component.publish_state = 'published'
28
+ component.updated_at = Time.now
29
+ component.save
30
+ structure_fields.each do |field_group_slug, fields|
31
+ field_group_slug = "#{structure_slug}-#{field_group_slug}"
32
+ field_group = structure.field_groups.find_by slug: field_group_slug
33
+ if field_group
34
+ fields.each do |field_slug_and_type, method|
35
+ field_slug, type = field_slug_and_type.split(':')
36
+ type ||= 'string'
37
+
38
+ field_setting = field_group.field_settings.find_by(slug: "#{field_group_slug}-#{field_slug}")
39
+ field_type_association = type.pluralize
40
+ if ::Binda::Component.reflections.keys.include? field_type_association
41
+ component.send(field_type_association).find_by(field_setting_id: field_setting.id).update content: item.send(method) if field_setting
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ structure.components.where("updated_at < ?", start_time).update_all publish_state: 'draft'
49
+ end
50
+
51
+ ::Binda::Shopify::STRUCTURES.keys
52
+ end
53
+
54
+ def fetch_collections
55
+ items = []
56
+ number_of_pages = (@client::CustomCollection.count / 250.0).ceil
57
+ number_of_pages.times do |i|
58
+ @client::CustomCollection.find(:all, params: { limit: 250, page: i+1}).each do |p|
59
+ items << ::Binda::Shopify::Collection.new(p, shop)
60
+ end
61
+ end
62
+
63
+ items
64
+ end
65
+
66
+ def fetch_products
67
+ items = []
68
+ number_of_pages = (@client::Product.count / 250.0).ceil
69
+ number_of_pages.times do |i|
70
+ @client::Product.find(:all, params: { limit: 250, page: i+1}).each do |p|
71
+ items << ::Binda::Shopify::Product.new(p, shop)
72
+ end
73
+ end
74
+
75
+ items
76
+ end
77
+
78
+ def fetch_product_types
79
+ products = fetch_products
80
+ product_types = products.map(&:product_type).uniq
81
+ product_types.map{|p| ::Binda::Shopify::ProductType.new(p, shop) }
82
+ end
83
+
84
+ def shop
85
+ @shop ||= @client::Shop.current
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,49 @@
1
+ module Binda
2
+ module Shopify
3
+ class Installer
4
+ def create_settings_board values
5
+ raise ArgumentError.new 'You must provide an array or hash of settings values' unless values.is_a?(Array) || values.is_a?(Hash)
6
+ values = Hash[(CONNECTION_KEYS+STRUCTURES.keys).zip(values)] if values.is_a? Array
7
+ structure = Binda::Structure.find_or_create_by( name: 'Shopify Settings', slug: 'shopify-settings', instance_type: 'board' )
8
+ board = structure.board
9
+ field_settings = structure.field_groups.first.field_settings
10
+ CONNECTION_KEYS.each do |field_name|
11
+ field_value = values[field_name]
12
+ slug = [structure.slug, field_name.to_s.parameterize].join('-').gsub('_', '-')
13
+ field = field_settings.find_or_create_by( name: field_name.to_s.titleize, slug: slug, field_type: 'string' )
14
+ board.strings.find_or_create_by( field_setting_id: field.id ).update_attribute('content', field_value.strip)
15
+ end
16
+
17
+ STRUCTURES.keys.each do |structure_name|
18
+ field_value = values[structure_name]
19
+ slug = [structure.slug, structure_name.to_s.parameterize].join('-').gsub('_', '-')
20
+ field = field_settings.find_or_create_by( name: structure_name.to_s.titleize, slug: slug, field_type: 'string' )
21
+ board.strings.find_or_create_by( field_setting_id: field.id ).update_attribute('content', field_value.strip)
22
+ end
23
+
24
+ board
25
+ end
26
+
27
+ def create_item_structure structure_name, name
28
+ structure_slug = name.parameterize
29
+ structure = Binda::Structure.find_or_create_by name: name, slug: structure_slug, instance_type: 'component', has_categories: false
30
+ Binda::Shopify::STRUCTURES[structure_name.to_sym].each do |field_group_slug, fields|
31
+ field_group = structure.field_groups.find_by slug: "#{structure_slug}-#{field_group_slug}"
32
+ if field_group.nil?
33
+ field_group = structure.field_groups.create! name: field_group_slug.titleize, slug: "#{structure_slug}-#{field_group_slug}"
34
+ end
35
+ fields.each do |name_and_type, mapping|
36
+ name, type = name_and_type.split(':')
37
+ type ||= 'string'
38
+ humanized_name = name.humanize(keep_id_suffix: true).gsub('-', ' ')
39
+ field_group.field_settings.create! name: humanized_name, field_type: type, read_only: true
40
+ end
41
+ field_group.save
42
+ end
43
+
44
+ structure
45
+ end
46
+
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,28 @@
1
+ module Binda
2
+ module Shopify
3
+ class Item
4
+ attr_accessor :item, :shop
5
+
6
+ def initialize item, shop
7
+ @item = item
8
+ @shop = shop
9
+ end
10
+
11
+ def id
12
+ item.id
13
+ end
14
+
15
+ def edit_url
16
+ "https://#{shop.domain}/admin/#{item.model_name.element.pluralize}/#{item.id}"
17
+ end
18
+
19
+ def method_missing name, params = nil, &block
20
+ if item.respond_to? name
21
+ item.send(name, params)
22
+ else
23
+ super
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,36 @@
1
+ module Binda
2
+ module Shopify
3
+ class Product
4
+ attr_accessor :product, :shop
5
+ def initialize product, shop
6
+ @product = product
7
+ @shop = shop
8
+ end
9
+
10
+ def id
11
+ product.id
12
+ end
13
+
14
+ def inventory_item_id
15
+ variant = variants.first
16
+ if variant.respond_to? :inventory_item_id
17
+ variant.inventory_item_id if !variant.nil?
18
+ else
19
+ nil
20
+ end
21
+ end
22
+
23
+ def edit_url
24
+ "https://#{shop.domain}/admin/products/#{product.id}"
25
+ end
26
+
27
+ def method_missing name, params = nil, &block
28
+ if product.respond_to? name
29
+ product.send(name, params)
30
+ else
31
+ super
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,20 @@
1
+ require 'digest'
2
+
3
+ module Binda
4
+ module Shopify
5
+ class ProductType
6
+ attr_accessor :name
7
+ def initialize name, shop
8
+ @name = name
9
+ end
10
+
11
+ def title
12
+ name
13
+ end
14
+
15
+ def id
16
+ Digest::MD5.hexdigest self.title if self.title.present?
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,5 @@
1
+ module Binda
2
+ module Shopify
3
+ VERSION = '0.1.1'
4
+ end
5
+ end
@@ -0,0 +1,35 @@
1
+ require 'binda'
2
+ require "binda/shopify/engine"
3
+ require 'binda/shopify/importer'
4
+ require 'binda/shopify/item'
5
+ require 'binda/shopify/product'
6
+ require 'binda/shopify/collection'
7
+ require 'binda/shopify/product_type'
8
+ require 'deface'
9
+
10
+ module Binda
11
+ module Shopify
12
+ CONNECTION_KEYS = %i(api_key password shared_secret shop_name)
13
+ STRUCTURES = {
14
+ product: {
15
+ 'shopify-details' => {
16
+ 'handle' => 'handle',
17
+ 'edit-product-url' => 'edit_url',
18
+ 'inventory-item-id' => 'inventory_item_id'
19
+ }
20
+ },
21
+ collection: {
22
+ 'shopify-details' => {
23
+ 'edit-collection-url' => 'edit_url',
24
+ 'handle' => 'handle',
25
+ 'sorted-products:text' => 'sorted_products'
26
+ }
27
+ },
28
+ product_type: {
29
+ 'shopify-details' => {
30
+ 'handle' => 'name'
31
+ }
32
+ }
33
+ }
34
+ end
35
+ end
@@ -0,0 +1,44 @@
1
+ module Binda
2
+ module Shopify
3
+ class InstallGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../templates',__FILE__)
5
+ attr_accessor :structure
6
+
7
+ def start
8
+ puts "Ok, let'do this!"
9
+ end
10
+
11
+ def create_shopify_settings
12
+ puts "1) Setting up Shopify Connection"
13
+ @installer = Installer.new
14
+ @settings = {}
15
+ Binda::Shopify::CONNECTION_KEYS.each do |field_name|
16
+ STDOUT.puts "What is your Shopify #{field_name.to_s.titleize}?"
17
+ @settings[field_name] = STDIN.gets.strip
18
+ end
19
+ Binda::Shopify::STRUCTURES.each do |structure_name, structure_fields|
20
+ default_name = "Shopify #{structure_name.to_s.titleize}"
21
+ puts "How would you like to name your #{structure_name} structure? ['#{default_name}']"
22
+ @settings[structure_name] = STDIN.gets.strip.presence || default_name
23
+ end
24
+ @settings_board = @installer.create_settings_board @settings
25
+ puts
26
+ end
27
+
28
+ def setup_structures
29
+ Binda::Shopify::STRUCTURES.each.with_index do |(structure_name, structure_fields), index|
30
+ name = @settings[structure_name].presence || structure_name.to_s.titleize
31
+ puts "#{index+2}) Setting up #{name} Structure"
32
+ @installer.create_item_structure structure_name, name
33
+ puts
34
+ end
35
+ end
36
+
37
+ def finish
38
+ puts "Done!"
39
+ puts
40
+ end
41
+
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :binda_shopify do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,225 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: binda-shopify
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Marco Crepaldi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-05-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: binda
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.1.9
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.1.9
41
+ - !ruby/object:Gem::Dependency
42
+ name: shopify_api
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.11'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4.11'
55
+ - !ruby/object:Gem::Dependency
56
+ name: deface
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pg
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec-rails
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '3.5'
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '3.8'
93
+ type: :development
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '3.5'
100
+ - - "<"
101
+ - !ruby/object:Gem::Version
102
+ version: '3.8'
103
+ - !ruby/object:Gem::Dependency
104
+ name: byebug
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '10.0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '10.0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: factory_bot_rails
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '4.8'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '4.8'
131
+ - !ruby/object:Gem::Dependency
132
+ name: database_cleaner
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '1.6'
138
+ - - "<"
139
+ - !ruby/object:Gem::Version
140
+ version: '2'
141
+ type: :development
142
+ prerelease: false
143
+ version_requirements: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '1.6'
148
+ - - "<"
149
+ - !ruby/object:Gem::Version
150
+ version: '2'
151
+ - !ruby/object:Gem::Dependency
152
+ name: shopify-mock
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: 0.1.2
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: 0.1.2
165
+ description: ''
166
+ email:
167
+ - marco.crepaldi@gmail.com
168
+ executables: []
169
+ extensions: []
170
+ extra_rdoc_files: []
171
+ files:
172
+ - MIT-LICENSE
173
+ - README.md
174
+ - Rakefile
175
+ - app/controllers/binda/shopify/application_controller.rb
176
+ - app/controllers/binda/shopify/imports_controller.rb
177
+ - app/helpers/binda/shopify/application_helper.rb
178
+ - app/jobs/binda/shopify/application_job.rb
179
+ - app/mailers/binda/shopify/application_mailer.rb
180
+ - app/models/binda/shopify/application_record.rb
181
+ - app/overrides/head.rb
182
+ - app/overrides/main_sidebar.rb
183
+ - app/views/layouts/binda/shopify/application.html.erb
184
+ - app/views/shared/_javascript.html.erb
185
+ - app/views/shared/_synchronize.html.erb
186
+ - config/database.yml.travis
187
+ - config/locales/en.yml
188
+ - config/locales/it.yml
189
+ - config/routes.rb
190
+ - lib/binda/shopify.rb
191
+ - lib/binda/shopify/collection.rb
192
+ - lib/binda/shopify/engine.rb
193
+ - lib/binda/shopify/importer.rb
194
+ - lib/binda/shopify/installer.rb
195
+ - lib/binda/shopify/item.rb
196
+ - lib/binda/shopify/product.rb
197
+ - lib/binda/shopify/product_type.rb
198
+ - lib/binda/shopify/version.rb
199
+ - lib/generators/binda/shopify/install_generator.rb
200
+ - lib/tasks/binda/shopify_tasks.rake
201
+ homepage: http://lacolonia.studio
202
+ licenses:
203
+ - MIT
204
+ metadata: {}
205
+ post_install_message:
206
+ rdoc_options: []
207
+ require_paths:
208
+ - lib
209
+ required_ruby_version: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ required_rubygems_version: !ruby/object:Gem::Requirement
215
+ requirements:
216
+ - - ">="
217
+ - !ruby/object:Gem::Version
218
+ version: '0'
219
+ requirements: []
220
+ rubyforge_project:
221
+ rubygems_version: 2.6.12
222
+ signing_key:
223
+ specification_version: 4
224
+ summary: Binda plugin that lets you import products from your Shopify store.
225
+ test_files: []