solidus_starter_frontend 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.circleci/config.yml +57 -0
- data/.erb-lint.yml +22 -0
- data/.eslintrc +5 -0
- data/.gem_release.yml +5 -0
- data/.github/pull_request_template.md +28 -0
- data/.github/stale.yml +17 -0
- data/.gitignore +17 -0
- data/.hound.yml +16 -0
- data/.rspec +2 -0
- data/.rubocop.yml +19 -0
- data/.rubocop_todo.yml +229 -0
- data/.scss-lint.yml +4 -0
- data/Gemfile +34 -0
- data/LICENSE +26 -0
- data/README.md +69 -0
- data/Rakefile +6 -0
- data/app/assets/config/solidus_starter_frontend_manifest.js +2 -0
- data/app/assets/javascripts/spree/frontend.js +6 -0
- data/app/assets/javascripts/spree/frontend/cart.js +26 -0
- data/app/assets/javascripts/spree/frontend/checkout.js +34 -0
- data/app/assets/javascripts/spree/frontend/checkout/address.js +124 -0
- data/app/assets/javascripts/spree/frontend/checkout/payment.js +44 -0
- data/app/assets/javascripts/spree/frontend/locale_selector.js +9 -0
- data/app/assets/javascripts/spree/frontend/product.js +21 -0
- data/app/assets/javascripts/spree/frontend/solidus_starter_frontend.js +9 -0
- data/app/assets/javascripts/spree/frontend/utils.js.erb +18 -0
- data/app/assets/stylesheets/spree/frontend.css +8 -0
- data/app/assets/stylesheets/spree/frontend/base/_base.scss +29 -0
- data/app/assets/stylesheets/spree/frontend/base/_reset.scss +179 -0
- data/app/assets/stylesheets/spree/frontend/base/_responsive.scss +21 -0
- data/app/assets/stylesheets/spree/frontend/components/account/_account_order.scss +23 -0
- data/app/assets/stylesheets/spree/frontend/components/account/_account_summary.scss +17 -0
- data/app/assets/stylesheets/spree/frontend/components/auth/_auth_container.scss +11 -0
- data/app/assets/stylesheets/spree/frontend/components/auth/_auth_form.scss +5 -0
- data/app/assets/stylesheets/spree/frontend/components/brand/_logo.scss +4 -0
- data/app/assets/stylesheets/spree/frontend/components/buttons/_button_inline.scss +8 -0
- data/app/assets/stylesheets/spree/frontend/components/buttons/_button_primary.scss +26 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_adjustments.scss +6 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_amount_row.scss +11 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_empty.scss +10 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_footer.scss +20 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_header.scss +12 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_item.scss +86 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_link.scss +22 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_page.scss +15 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_cart_secondary_actions.scss +19 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_coupon_code.scss +8 -0
- data/app/assets/stylesheets/spree/frontend/components/cart/_item_info.scss +19 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_checkout.scss +27 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_checkout_header.scss +19 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_checkout_summary.scss +31 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_existing_cards.scss +27 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_payment_method_controls.scss +5 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_payment_method_selector.scss +14 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_progress_steps.scss +38 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_proposed_shipment.scss +18 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_shipment_items.scss +50 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/_shipping_methods.scss +9 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/payments/_gateway_payment_method.scss +11 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/steps/_address_step.scss +20 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/steps/_confirm_step.scss +13 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/steps/_delivery_step.scss +13 -0
- data/app/assets/stylesheets/spree/frontend/components/checkout/steps/_payment_step.scss +13 -0
- data/app/assets/stylesheets/spree/frontend/components/forms/_address_inputs.scss +13 -0
- data/app/assets/stylesheets/spree/frontend/components/forms/inputs/_checkbox_input.scss +3 -0
- data/app/assets/stylesheets/spree/frontend/components/forms/inputs/_radio_input.scss +3 -0
- data/app/assets/stylesheets/spree/frontend/components/forms/inputs/_select_input.scss +27 -0
- data/app/assets/stylesheets/spree/frontend/components/forms/inputs/_text.scss +32 -0
- data/app/assets/stylesheets/spree/frontend/components/forms/inputs/_textarea_input.scss +25 -0
- data/app/assets/stylesheets/spree/frontend/components/general/_flash.scss +20 -0
- data/app/assets/stylesheets/spree/frontend/components/layout/_aside.scss +4 -0
- data/app/assets/stylesheets/spree/frontend/components/layout/_breadcrumbs.scss +16 -0
- data/app/assets/stylesheets/spree/frontend/components/layout/_category_navigation.scss +3 -0
- data/app/assets/stylesheets/spree/frontend/components/layout/_footer.scss +8 -0
- data/app/assets/stylesheets/spree/frontend/components/layout/_header.scss +12 -0
- data/app/assets/stylesheets/spree/frontend/components/layout/_horizontal_input_group.scss +7 -0
- data/app/assets/stylesheets/spree/frontend/components/layout/_top_bar.scss +44 -0
- data/app/assets/stylesheets/spree/frontend/components/navigation/_auth_link.scss +11 -0
- data/app/assets/stylesheets/spree/frontend/components/navigation/_categories.scss +29 -0
- data/app/assets/stylesheets/spree/frontend/components/navigation/_locale_selector.scss +21 -0
- data/app/assets/stylesheets/spree/frontend/components/navigation/_taxonomies.scss +7 -0
- data/app/assets/stylesheets/spree/frontend/components/navigation/_taxonomy.scss +28 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_address_overview.scss +27 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_coupon_codes.scss +4 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_line_items.scss +20 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_order_details.scss +18 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_order_item.scss +85 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_order_page.scss +41 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_order_shipments.scss +27 -0
- data/app/assets/stylesheets/spree/frontend/components/orders/_payment_info.scss +29 -0
- data/app/assets/stylesheets/spree/frontend/components/presentation/_hero.scss +18 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_card.scss +35 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_image.scss +7 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_info.scss +14 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_page.scss +31 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_properties.scss +23 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_submit.scss +9 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_taxons.scss +27 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_thumbnails.scss +7 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_product_variants.scss +20 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_products.scss +13 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_products_by_taxon.scss +6 -0
- data/app/assets/stylesheets/spree/frontend/components/products/_products_grid.scss +18 -0
- data/app/assets/stylesheets/spree/frontend/components/search/_filter.scss +32 -0
- data/app/assets/stylesheets/spree/frontend/components/search/_search_bar.scss +34 -0
- data/app/assets/stylesheets/spree/frontend/components/typography/_hero_title.scss +6 -0
- data/app/assets/stylesheets/spree/frontend/components/typography/_subtitle.scss +7 -0
- data/app/assets/stylesheets/spree/frontend/placeholders/main.scss +5 -0
- data/app/assets/stylesheets/spree/frontend/screen.scss +89 -0
- data/app/assets/stylesheets/spree/frontend/solidus_starter_frontend.css +7 -0
- data/app/assets/stylesheets/spree/frontend/variables/_colors.scss +20 -0
- data/app/controllers/concerns/solidus_starter_frontend/auth_views.rb +16 -0
- data/app/controllers/concerns/solidus_starter_frontend/taxonomies.rb +16 -0
- data/app/controllers/spree/checkout_controller.rb +249 -0
- data/app/controllers/spree/coupon_codes_controller.rb +35 -0
- data/app/controllers/spree/home_controller.rb +13 -0
- data/app/controllers/spree/locale_controller.rb +20 -0
- data/app/controllers/spree/orders_controller.rb +126 -0
- data/app/controllers/spree/products_controller.rb +51 -0
- data/app/controllers/spree/store_controller.rb +31 -0
- data/app/controllers/spree/taxons_controller.rb +30 -0
- data/app/helpers/spree/orders_helper.rb +18 -0
- data/app/helpers/spree/taxon_filters_helper.rb +13 -0
- data/app/views/spree/address/_form_hidden.html.erb +12 -0
- data/app/views/spree/checkout/_terms_and_conditions.en.html.erb +1 -0
- data/app/views/spree/checkout/edit.html.erb +16 -0
- data/app/views/spree/checkout/existing_payment/_gateway.html.erb +9 -0
- data/app/views/spree/checkout/payment/_check.html.erb +0 -0
- data/app/views/spree/checkout/payment/_gateway.html.erb +43 -0
- data/app/views/spree/components/auth/_change_form.html.erb +40 -0
- data/app/views/spree/components/auth/_forgot_form.html.erb +28 -0
- data/app/views/spree/components/auth/_guest_form.html.erb +31 -0
- data/app/views/spree/components/auth/_login_form.html.erb +42 -0
- data/app/views/spree/components/auth/_signup_form.html.erb +48 -0
- data/app/views/spree/components/brand/_logo.html.erb +3 -0
- data/app/views/spree/components/buttons/_button_inline.html.erb +23 -0
- data/app/views/spree/components/buttons/_button_primary.html.erb +29 -0
- data/app/views/spree/components/cart/_cart_adjustment.html.erb +15 -0
- data/app/views/spree/components/cart/_cart_adjustments.html.erb +47 -0
- data/app/views/spree/components/cart/_cart_amount_row.html.erb +12 -0
- data/app/views/spree/components/cart/_cart_empty.html.erb +9 -0
- data/app/views/spree/components/cart/_cart_footer.html.erb +15 -0
- data/app/views/spree/components/cart/_cart_header.html.erb +17 -0
- data/app/views/spree/components/cart/_cart_item.html.erb +52 -0
- data/app/views/spree/components/cart/_cart_items.html.erb +23 -0
- data/app/views/spree/components/cart/_cart_link.html.erb +9 -0
- data/app/views/spree/components/cart/_cart_secondary_actions.html.erb +17 -0
- data/app/views/spree/components/cart/_item_info.html.erb +26 -0
- data/app/views/spree/components/checkout/_checkout_header.html.erb +8 -0
- data/app/views/spree/components/checkout/_checkout_step.html.erb +21 -0
- data/app/views/spree/components/checkout/_checkout_summary.html.erb +70 -0
- data/app/views/spree/components/checkout/_existing_cards.html.erb +39 -0
- data/app/views/spree/components/checkout/_payment_method_controls.html.erb +10 -0
- data/app/views/spree/components/checkout/_payment_method_selector.html.erb +14 -0
- data/app/views/spree/components/checkout/_proposed_shipment.erb +18 -0
- data/app/views/spree/components/checkout/_shipment_items.html.erb +22 -0
- data/app/views/spree/components/checkout/_shipping_methods.html.erb +20 -0
- data/app/views/spree/components/checkout/_unshippable_items.html.erb +7 -0
- data/app/views/spree/components/checkout/steps/_address_step.html.erb +60 -0
- data/app/views/spree/components/checkout/steps/_confirm_step.html.erb +31 -0
- data/app/views/spree/components/checkout/steps/_delivery_step.html.erb +31 -0
- data/app/views/spree/components/checkout/steps/_payment_step.html.erb +25 -0
- data/app/views/spree/components/forms/_address_inputs.html.erb +152 -0
- data/app/views/spree/components/forms/inputs/_checkbox_input.html.erb +29 -0
- data/app/views/spree/components/forms/inputs/_collection_select.html.erb +42 -0
- data/app/views/spree/components/forms/inputs/_radio_input.html.erb +29 -0
- data/app/views/spree/components/forms/inputs/_select_input.html.erb +31 -0
- data/app/views/spree/components/forms/inputs/_text.html.erb +54 -0
- data/app/views/spree/components/forms/inputs/_textarea_input.html.erb +42 -0
- data/app/views/spree/components/layout/_category_navigation.html.erb +3 -0
- data/app/views/spree/components/layout/_footer.html.erb +7 -0
- data/app/views/spree/components/layout/_header.html.erb +8 -0
- data/app/views/spree/components/layout/_top_bar.html.erb +8 -0
- data/app/views/spree/components/navigation/_auth_link.html.erb +1 -0
- data/app/views/spree/components/navigation/_breadcrumbs.html.erb +47 -0
- data/app/views/spree/components/navigation/_categories.html.erb +12 -0
- data/app/views/spree/components/navigation/_locale_selector.html.erb +25 -0
- data/app/views/spree/components/navigation/_taxonomies.html.erb +17 -0
- data/app/views/spree/components/navigation/_taxons.html.erb +17 -0
- data/app/views/spree/components/navigation/_taxons_tree.html.erb +29 -0
- data/app/views/spree/components/orders/_address_overview.html.erb +40 -0
- data/app/views/spree/components/orders/_coupon_code.html.erb +22 -0
- data/app/views/spree/components/orders/_line_items.html.erb +55 -0
- data/app/views/spree/components/orders/_order_details.html.erb +35 -0
- data/app/views/spree/components/orders/_order_item.html.erb +33 -0
- data/app/views/spree/components/orders/_order_items.html.erb +5 -0
- data/app/views/spree/components/orders/_order_shipments.html.erb +25 -0
- data/app/views/spree/components/orders/_payment_info.html.erb +31 -0
- data/app/views/spree/components/presentation/_hero.html.erb +14 -0
- data/app/views/spree/components/products/_product-card.html.erb +36 -0
- data/app/views/spree/components/products/_product_availability.html.erb +19 -0
- data/app/views/spree/components/products/_product_form.html.erb +21 -0
- data/app/views/spree/components/products/_product_image.html.erb +6 -0
- data/app/views/spree/components/products/_product_info.html.erb +9 -0
- data/app/views/spree/components/products/_product_promotions.html.erb +25 -0
- data/app/views/spree/components/products/_product_properties.html.erb +19 -0
- data/app/views/spree/components/products/_product_submit.html.erb +39 -0
- data/app/views/spree/components/products/_product_taxons.html.erb +15 -0
- data/app/views/spree/components/products/_product_thumbnails.html.erb +19 -0
- data/app/views/spree/components/products/_product_variants.html.erb +36 -0
- data/app/views/spree/components/products/_products-grid.html.erb +13 -0
- data/app/views/spree/components/products/_products.html.erb +28 -0
- data/app/views/spree/components/products/_products_by_taxon.html.erb +7 -0
- data/app/views/spree/components/products/_variants_list.html.erb +12 -0
- data/app/views/spree/components/search/_filter.html.erb +42 -0
- data/app/views/spree/components/search/_filters.html.erb +20 -0
- data/app/views/spree/components/search/_form.html.erb +12 -0
- data/app/views/spree/components/search/_products_search.html.erb +36 -0
- data/app/views/spree/components/search/_search_bar.html.erb +36 -0
- data/app/views/spree/components/typography/_hero_title.html.erb +11 -0
- data/app/views/spree/components/typography/_subtitle.html.erb +11 -0
- data/app/views/spree/home/index.html.erb +7 -0
- data/app/views/spree/layouts/spree_application.html.erb +27 -0
- data/app/views/spree/orders/edit.html.erb +21 -0
- data/app/views/spree/orders/show.html.erb +29 -0
- data/app/views/spree/products/index.html.erb +22 -0
- data/app/views/spree/products/show.html.erb +18 -0
- data/app/views/spree/shared/_image.html.erb +12 -0
- data/app/views/spree/shared/_link_to_cart.html.erb +1 -0
- data/app/views/spree/shared/_login_bar_items.html.erb +1 -0
- data/app/views/spree/shared/_shipment_tracking.html.erb +11 -0
- data/app/views/spree/shared/unauthorized.html.erb +0 -0
- data/app/views/spree/taxons/show.html.erb +17 -0
- data/bin/console +17 -0
- data/bin/r +13 -0
- data/bin/rails +7 -0
- data/bin/rake +7 -0
- data/bin/rspec +29 -0
- data/bin/sandbox +84 -0
- data/bin/sandbox_rails +18 -0
- data/bin/setup +8 -0
- data/bin/solidus_compare +155 -0
- data/config/initializers/assets.rb +1 -0
- data/config/initializers/canonical_rails.rb +16 -0
- data/config/locales/en.yml +5 -0
- data/config/routes.rb +33 -0
- data/config/solidus_compare.yml +33 -0
- data/docs/development.md +28 -0
- data/exe/solidus_starter_frontend +9 -0
- data/lib/generators/solidus_starter_frontend/install/install_generator.rb +15 -0
- data/lib/generators/solidus_starter_frontend/solidus_starter_frontend_generator.rb +30 -0
- data/lib/generators/solidus_starter_frontend/views/override_generator.rb +50 -0
- data/lib/solidus_starter_frontend.rb +12 -0
- data/lib/solidus_starter_frontend/config.rb +7 -0
- data/lib/solidus_starter_frontend/engine.rb +34 -0
- data/lib/solidus_starter_frontend/factories.rb +4 -0
- data/lib/solidus_starter_frontend/solidus_support_extensions.rb +9 -0
- data/lib/solidus_starter_frontend/version.rb +5 -0
- data/lib/solidus_starter_frontend_configuration.rb +8 -0
- data/lib/views/auth/spree/checkout/registration.html.erb +7 -0
- data/lib/views/auth/spree/components/navigation/_auth_link.html.erb +5 -0
- data/lib/views/auth/spree/user_passwords/edit.html.erb +7 -0
- data/lib/views/auth/spree/user_passwords/new.html.erb +5 -0
- data/lib/views/auth/spree/user_registrations/new.html.erb +7 -0
- data/lib/views/auth/spree/user_sessions/guest.html.erb +5 -0
- data/lib/views/auth/spree/user_sessions/new.html.erb +7 -0
- data/lib/views/auth/spree/users/edit.html.erb +45 -0
- data/lib/views/auth/spree/users/show.html.erb +55 -0
- data/solidus_starter_frontend.gemspec +43 -0
- data/spec/controllers/controller_helpers_spec.rb +29 -0
- data/spec/controllers/locale_controller_spec.rb +57 -0
- data/spec/controllers/spree/checkout_controller_spec.rb +563 -0
- data/spec/controllers/spree/checkout_controller_with_views_spec.rb +37 -0
- data/spec/controllers/spree/current_order_tracking_spec.rb +33 -0
- data/spec/controllers/spree/home_controller_spec.rb +29 -0
- data/spec/controllers/spree/orders_controller_ability_spec.rb +90 -0
- data/spec/controllers/spree/orders_controller_spec.rb +241 -0
- data/spec/controllers/spree/orders_controller_transitions_spec.rb +33 -0
- data/spec/controllers/spree/products_controller_spec.rb +38 -0
- data/spec/controllers/spree/taxons_controller_spec.rb +14 -0
- data/spec/fixtures/thinking-cat.jpg +0 -0
- data/spec/generators/solidus/views/override_generator_spec.rb +50 -0
- data/spec/helpers/base_helper_spec.rb +13 -0
- data/spec/helpers/order_helper_spec.rb +14 -0
- data/spec/helpers/taxon_filters_helper_spec.rb +12 -0
- data/spec/spec_helper.rb +64 -0
- data/spec/support/shared_contexts/checkout_setup.rb +12 -0
- data/spec/support/shared_contexts/custom_products.rb +28 -0
- data/spec/support/shared_contexts/locales.rb +16 -0
- data/spec/system/address_spec.rb +87 -0
- data/spec/system/automatic_promotion_adjustments_spec.rb +49 -0
- data/spec/system/caching/products_spec.rb +48 -0
- data/spec/system/caching/taxons_spec.rb +35 -0
- data/spec/system/cart_spec.rb +81 -0
- data/spec/system/checkout_confirm_insufficient_stock_spec.rb +71 -0
- data/spec/system/checkout_spec.rb +699 -0
- data/spec/system/checkout_unshippable_spec.rb +37 -0
- data/spec/system/coupon_code_spec.rb +267 -0
- data/spec/system/currency_spec.rb +20 -0
- data/spec/system/first_order_promotion_spec.rb +59 -0
- data/spec/system/free_shipping_promotions_spec.rb +60 -0
- data/spec/system/locale_spec.rb +26 -0
- data/spec/system/order_spec.rb +57 -0
- data/spec/system/products_spec.rb +302 -0
- data/spec/system/promotion_code_invalidation_spec.rb +54 -0
- data/spec/system/quantity_promotions_spec.rb +130 -0
- data/spec/system/taxons_spec.rb +158 -0
- data/spec/system/template_rendering_spec.rb +20 -0
- data/spec/views/spree/checkout/_summary_spec.rb +11 -0
- metadata +542 -0
data/bin/sandbox
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
set -e
|
4
|
+
|
5
|
+
case "$DB" in
|
6
|
+
postgres|postgresql)
|
7
|
+
RAILSDB="postgresql"
|
8
|
+
;;
|
9
|
+
mysql)
|
10
|
+
RAILSDB="mysql"
|
11
|
+
;;
|
12
|
+
sqlite|'')
|
13
|
+
RAILSDB="sqlite3"
|
14
|
+
;;
|
15
|
+
*)
|
16
|
+
echo "Invalid DB specified: $DB"
|
17
|
+
exit 1
|
18
|
+
;;
|
19
|
+
esac
|
20
|
+
|
21
|
+
if [ ! -z $SOLIDUS_BRANCH ]
|
22
|
+
then
|
23
|
+
BRANCH=$SOLIDUS_BRANCH
|
24
|
+
else
|
25
|
+
BRANCH="master"
|
26
|
+
fi
|
27
|
+
|
28
|
+
extension_name="solidus_starter_frontend"
|
29
|
+
|
30
|
+
# Stay away from the bundler env of the containing extension.
|
31
|
+
function unbundled {
|
32
|
+
ruby -rbundler -e'b = proc {system *ARGV}; Bundler.respond_to?(:with_unbundled_env) ? Bundler.with_unbundled_env(&b) : Bundler.with_clean_env(&b)' -- $@
|
33
|
+
}
|
34
|
+
|
35
|
+
rm -rf ./sandbox
|
36
|
+
unbundled bundle exec rails new sandbox --database="$RAILSDB" \
|
37
|
+
--skip-bundle \
|
38
|
+
--skip-git \
|
39
|
+
--skip-keeps \
|
40
|
+
--skip-rc \
|
41
|
+
--skip-spring \
|
42
|
+
--skip-test \
|
43
|
+
--skip-javascript
|
44
|
+
|
45
|
+
if [ ! -d "sandbox" ]; then
|
46
|
+
echo 'sandbox rails application failed'
|
47
|
+
exit 1
|
48
|
+
fi
|
49
|
+
|
50
|
+
cd ./sandbox
|
51
|
+
cat <<RUBY >> Gemfile
|
52
|
+
gem 'solidus', github: 'solidusio/solidus', branch: '$BRANCH'
|
53
|
+
gem 'solidus_auth_devise', '>= 2.1.0'
|
54
|
+
gem 'rails-i18n'
|
55
|
+
gem 'solidus_i18n'
|
56
|
+
|
57
|
+
gem '$extension_name', path: '..'
|
58
|
+
|
59
|
+
group :test, :development do
|
60
|
+
platforms :mri do
|
61
|
+
gem 'pry-byebug'
|
62
|
+
end
|
63
|
+
end
|
64
|
+
RUBY
|
65
|
+
|
66
|
+
unbundled bundle install --gemfile Gemfile
|
67
|
+
|
68
|
+
unbundled bundle exec rake db:drop db:create
|
69
|
+
|
70
|
+
unbundled bundle exec rails generate spree:install \
|
71
|
+
--auto-accept \
|
72
|
+
--user_class=Spree::User \
|
73
|
+
--enforce_available_locales=true \
|
74
|
+
--with-authentication=false \
|
75
|
+
$@
|
76
|
+
|
77
|
+
unbundled bundle exec rails generate solidus:auth:install
|
78
|
+
|
79
|
+
echo
|
80
|
+
echo "🚀 Sandbox app successfully created for $extension_name!"
|
81
|
+
echo "🚀 Using $RAILSDB and Solidus $BRANCH"
|
82
|
+
echo "🚀 Use 'export DB=[postgres|mysql|sqlite]' to control the DB adapter"
|
83
|
+
echo "🚀 Use 'export SOLIDUS_BRANCH=<BRANCH-NAME>' to control the Solidus version"
|
84
|
+
echo "🚀 This app is intended for test purposes."
|
data/bin/sandbox_rails
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# frozen_string_literal: true
|
4
|
+
|
5
|
+
app_root = 'sandbox'
|
6
|
+
|
7
|
+
unless File.exist? "#{app_root}/bin/rails"
|
8
|
+
warn 'Creating the sandbox app...'
|
9
|
+
Dir.chdir "#{__dir__}/.." do
|
10
|
+
system "#{__dir__}/sandbox" or begin # rubocop:disable Style/AndOr
|
11
|
+
warn 'Automatic creation of the sandbox app failed'
|
12
|
+
exit 1
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
Dir.chdir app_root
|
18
|
+
exec 'bin/rails', *ARGV
|
data/bin/setup
ADDED
data/bin/solidus_compare
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# frozen_string_literal: true
|
4
|
+
|
5
|
+
require 'json'
|
6
|
+
require 'pathname'
|
7
|
+
require 'time'
|
8
|
+
require 'yaml'
|
9
|
+
require 'zlib'
|
10
|
+
|
11
|
+
CONFIG_PATH = 'config/solidus_compare.yml'
|
12
|
+
|
13
|
+
@config = {}
|
14
|
+
@cmd_options = {}
|
15
|
+
ARGV.each do |arg|
|
16
|
+
case arg
|
17
|
+
when '-h', '--help'
|
18
|
+
puts <<~HELP
|
19
|
+
Solidus Compare: a tool to detect changes between 2 repositories
|
20
|
+
|
21
|
+
Options:
|
22
|
+
-h or --help : show this help
|
23
|
+
-s or --summary : generate an XML summary of the files changed (used in CI)
|
24
|
+
-u or --update-ignore : update the config file setting the current hashes to ignore
|
25
|
+
HELP
|
26
|
+
exit 0
|
27
|
+
when '-s', '--summary'
|
28
|
+
@cmd_options[:summary] = true
|
29
|
+
when '-u', '--update-ignore'
|
30
|
+
@cmd_options[:update] = true
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# ---------------------------------------------------------------------------- #
|
35
|
+
|
36
|
+
def generate_comparison(report)
|
37
|
+
report.each do |data|
|
38
|
+
conf = @config['ignore'].find { |cfg| cfg['path'] == data['path'] }
|
39
|
+
diffs = conf ? (conf['diffs'] || []) : []
|
40
|
+
data['diffs'].each do |result|
|
41
|
+
info = diffs.find { |diff| diff['file'] == result['file'] } || {}
|
42
|
+
if info['skip']
|
43
|
+
result['skip'] = true
|
44
|
+
result.delete 'hash'
|
45
|
+
next
|
46
|
+
elsif info['hash'] == result['hash']
|
47
|
+
next
|
48
|
+
end
|
49
|
+
|
50
|
+
puts result['diff']
|
51
|
+
end
|
52
|
+
end
|
53
|
+
update_ignore(report) if @cmd_options[:update]
|
54
|
+
end
|
55
|
+
|
56
|
+
def generate_summary(report) # rubocop:disable Metrics/MethodLength
|
57
|
+
summary = {}
|
58
|
+
report.each do |data|
|
59
|
+
path = data['path']
|
60
|
+
conf = @config['ignore'].find { |cfg| cfg['path'] == path }
|
61
|
+
diffs = conf ? (conf['diffs'] || []) : []
|
62
|
+
data['diffs'].each do |result|
|
63
|
+
info = diffs.find { |diff| diff['file'] == result['file'] } || {}
|
64
|
+
next if info['skip'] || info['hash'] == result['hash']
|
65
|
+
|
66
|
+
(summary[path] ||= {})[result['hash']] = result['file']
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
count = 0
|
71
|
+
testcases = summary.map do |file_path, value|
|
72
|
+
value.map do |hash, file|
|
73
|
+
count += 1
|
74
|
+
full_path = Pathname.new(file_path).join(file).to_s
|
75
|
+
"<testcase name=\"#{file}\" file=\"#{full_path}\" time=\"0\"><failure>hash: #{hash}\nfile: #{file}</failure></testcase>"
|
76
|
+
end
|
77
|
+
end.join("\n")
|
78
|
+
|
79
|
+
output = <<~SUMMARY
|
80
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
81
|
+
<testsuite name="solidus_compare" tests="#{count}" skipped="0" failures="#{count}" errors="#{count}" time="1" timestamp="#{Time.now.iso8601}">
|
82
|
+
#{testcases}
|
83
|
+
</testsuite>
|
84
|
+
SUMMARY
|
85
|
+
puts output
|
86
|
+
|
87
|
+
exit 1 if count.positive?
|
88
|
+
end
|
89
|
+
|
90
|
+
def load_config
|
91
|
+
@config = YAML.load_file(CONFIG_PATH) if File.exist?(CONFIG_PATH)
|
92
|
+
@config ||= {}
|
93
|
+
@config['ignore'] ||= []
|
94
|
+
@config['project_paths'] ||= []
|
95
|
+
@config['source_repo'] ||= 'https://github.com/solidusio/solidus.git'
|
96
|
+
@config['source_name'] ||= 'solidus'
|
97
|
+
@config['source_branch'] ||= 'master'
|
98
|
+
@config['source_base_path'] ||= 'frontend/'
|
99
|
+
end
|
100
|
+
|
101
|
+
def solidus_compare
|
102
|
+
report = @config['project_paths'].map do |path|
|
103
|
+
remote_source = "remotes/#{@config['source_name']}/#{@config['source_branch']}"
|
104
|
+
remote_path = "#{@config['source_base_path']}#{path}"
|
105
|
+
result = `git diff "#{remote_source}" -- "#{remote_path}" "#{path}"`
|
106
|
+
puts("error with git diff #{path}") & exit if $?.exitstatus != 0
|
107
|
+
|
108
|
+
result.gsub!(/index\s[\w\d]+\.\.[\w\d]+\s[\w\d]+\n/, '')
|
109
|
+
diffs = result.split(/diff --git /)[1..-1]
|
110
|
+
next unless diffs
|
111
|
+
|
112
|
+
{
|
113
|
+
'path' => path,
|
114
|
+
'diffs' => diffs.map do |diff|
|
115
|
+
next if diff.include? 'similarity index 100%'
|
116
|
+
|
117
|
+
{
|
118
|
+
'hash' => Zlib.crc32(diff),
|
119
|
+
'file' => diff.match(%r{a/([^\s]+)})&.send(:[], 1),
|
120
|
+
'diff' => 'diff --git ' + diff
|
121
|
+
}
|
122
|
+
end.compact
|
123
|
+
}
|
124
|
+
|
125
|
+
# end
|
126
|
+
end.compact
|
127
|
+
|
128
|
+
@cmd_options[:summary] ? generate_summary(report) : generate_comparison(report)
|
129
|
+
end
|
130
|
+
|
131
|
+
def update_ignore(report)
|
132
|
+
report.each do |data|
|
133
|
+
data['diffs'].each do |result|
|
134
|
+
result.delete('diff')
|
135
|
+
end
|
136
|
+
end.compact
|
137
|
+
@config['ignore'] = report
|
138
|
+
File.open(CONFIG_PATH, 'w') { |f| f.puts(@config.to_yaml) }
|
139
|
+
end
|
140
|
+
|
141
|
+
def update_source
|
142
|
+
if `git remote`.split("\n").none? @config['source_name']
|
143
|
+
`git remote add -f #{@config['source_name']} #{@config['source_repo']}`
|
144
|
+
puts('error with git remote add') & exit if $?.exitstatus != 0
|
145
|
+
end
|
146
|
+
|
147
|
+
`git remote update > /dev/null 2>&1`
|
148
|
+
puts('error with git remote update') & exit if $?.exitstatus != 0
|
149
|
+
end
|
150
|
+
|
151
|
+
# ---------------------------------------------------------------------------- #
|
152
|
+
|
153
|
+
load_config
|
154
|
+
update_source
|
155
|
+
solidus_compare
|
@@ -0,0 +1 @@
|
|
1
|
+
Rails.application.config.assets.precompile << 'solidus_starter_frontend_manifest.js'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
CanonicalRails.setup do |config|
|
4
|
+
# http://en.wikipedia.org/wiki/URL_normalization
|
5
|
+
# Trailing slash represents semantics of a directory, ie a collection view - implying an :index get route;
|
6
|
+
# otherwise we have to assume semantics of an instance of a resource type, a member view - implying a :show get route
|
7
|
+
#
|
8
|
+
# Acts as a whitelist for routes to have trailing slashes
|
9
|
+
|
10
|
+
config.collection_actions # = [:index]
|
11
|
+
|
12
|
+
# Parameter spamming can cause index dilution by creating seemingly different URLs with identical or near-identical content.
|
13
|
+
# Unless whitelisted, these parameters will be omitted
|
14
|
+
|
15
|
+
config.whitelisted_parameters = [:keywords, :page, :search, :taxon]
|
16
|
+
end
|
data/config/routes.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Spree::Core::Engine.routes.draw do
|
4
|
+
root to: 'home#index'
|
5
|
+
|
6
|
+
resources :products, only: [:index, :show]
|
7
|
+
|
8
|
+
get '/locale/set', to: 'locale#set'
|
9
|
+
post '/locale/set', to: 'locale#set', as: :select_locale
|
10
|
+
|
11
|
+
# non-restful checkout stuff
|
12
|
+
patch '/checkout/update/:state', to: 'checkout#update', as: :update_checkout
|
13
|
+
get '/checkout/:state', to: 'checkout#edit', as: :checkout_state
|
14
|
+
get '/checkout', to: 'checkout#edit', as: :checkout
|
15
|
+
|
16
|
+
get '/orders/populate', to: 'orders#populate_redirect'
|
17
|
+
get '/orders/:id/token/:token' => 'orders#show', as: :token_order
|
18
|
+
|
19
|
+
resources :orders, except: [:index, :new, :create, :destroy] do
|
20
|
+
post :populate, on: :collection
|
21
|
+
resources :coupon_codes, only: :create
|
22
|
+
end
|
23
|
+
|
24
|
+
get '/cart', to: 'orders#edit', as: :cart
|
25
|
+
patch '/cart', to: 'orders#update', as: :update_cart
|
26
|
+
put '/cart/empty', to: 'orders#empty', as: :empty_cart
|
27
|
+
|
28
|
+
# route globbing for pretty nested taxon and product paths
|
29
|
+
get '/t/*id', to: 'taxons#show', as: :nested_taxons
|
30
|
+
|
31
|
+
get '/unauthorized', to: 'home#unauthorized', as: :unauthorized
|
32
|
+
get '/cart_link', to: 'store#cart_link', as: :cart_link
|
33
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
---
|
2
|
+
project_paths:
|
3
|
+
- app/controllers
|
4
|
+
- app/helpers
|
5
|
+
source_repo: https://github.com/solidusio/solidus.git
|
6
|
+
source_name: solidus
|
7
|
+
source_branch: master
|
8
|
+
source_base_path: frontend/
|
9
|
+
ignore:
|
10
|
+
- path: app/controllers
|
11
|
+
diffs:
|
12
|
+
- file: app/controllers/concerns/solidus_starter_frontend/auth_views.rb
|
13
|
+
skip: true
|
14
|
+
- file: app/controllers/concerns/solidus_starter_frontend/taxonomies.rb
|
15
|
+
skip: true
|
16
|
+
- hash: 2722004413
|
17
|
+
file: frontend/app/controllers/spree/checkout_controller.rb
|
18
|
+
- hash: 1422395649
|
19
|
+
file: frontend/app/controllers/spree/coupon_codes_controller.rb
|
20
|
+
- hash: 2175977023
|
21
|
+
file: frontend/app/controllers/spree/home_controller.rb
|
22
|
+
- hash: 2194836599
|
23
|
+
file: frontend/app/controllers/spree/orders_controller.rb
|
24
|
+
- hash: 61096156
|
25
|
+
file: frontend/app/controllers/spree/products_controller.rb
|
26
|
+
- hash: 2154899617
|
27
|
+
file: frontend/app/controllers/spree/store_controller.rb
|
28
|
+
- hash: 910927973
|
29
|
+
file: frontend/app/controllers/spree/taxons_controller.rb
|
30
|
+
- hash: 3582561552
|
31
|
+
file: frontend/app/controllers/spree/content_controller.rb
|
32
|
+
- path: app/helpers
|
33
|
+
diffs: []
|
data/docs/development.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# Solidus Starter Frontend development information
|
2
|
+
This document aims to give some extra information for developers that are going
|
3
|
+
to contribute to our `solidus_starter_frontend` component.
|
4
|
+
|
5
|
+
## Solidus Compare tool
|
6
|
+
`solidus_compare` is a tool that we created to keep track of the changes made to
|
7
|
+
[solidus_frontend](https://github.com/solidusio/solidus/tree/master/frontend),
|
8
|
+
which we used as source project in the beginning.
|
9
|
+
|
10
|
+
It is connected to our CI; when a new PR is opened, if a change is detected on
|
11
|
+
Solidus Frontend, the workflow will fail and it will report the files changed.
|
12
|
+
|
13
|
+
In that case, it is needed to evaluate those changes and eventually apply them
|
14
|
+
to our component. After this step, it is possible to mark those changes as
|
15
|
+
"managed".
|
16
|
+
|
17
|
+
In practical terms:
|
18
|
+
- run locally `bin/solidus_compare` in any branch;
|
19
|
+
- evaluate the diff of the changes shown in the console;
|
20
|
+
- apply the required changes (if they are useful to the project);
|
21
|
+
- run `bin/solidus_compare -u` which will update the hashes in the config file;
|
22
|
+
- commit the changes and check the CI.
|
23
|
+
|
24
|
+
The tool internally works in this way:
|
25
|
+
- configuration file is loaded (`config/solidus_compare.yml`);
|
26
|
+
- remote GIT source is updated using the parameters provided by the config file;
|
27
|
+
- compare process is executed and a hash for each file is calculated;
|
28
|
+
- if they match the hashes saved in the configuration there are no differences.
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SolidusStarterFrontend
|
4
|
+
module Generators
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
def add_javascripts
|
7
|
+
append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/solidus_starter_frontend\n"
|
8
|
+
end
|
9
|
+
|
10
|
+
def add_stylesheets
|
11
|
+
inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/solidus_starter_frontend\n", before: %r{\*/}, verbose: true
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class SolidusStarterFrontendGenerator < Rails::Generators::Base
|
4
|
+
source_root File.expand_path('../../..', __dir__)
|
5
|
+
|
6
|
+
def install
|
7
|
+
# Copy directories
|
8
|
+
directory 'app', 'app'
|
9
|
+
directory 'lib/views', 'lib/views'
|
10
|
+
|
11
|
+
# Copy files
|
12
|
+
copy_file 'lib/solidus_starter_frontend/config.rb', 'lib/solidus_starter_frontend/config.rb'
|
13
|
+
copy_file 'lib/solidus_starter_frontend_configuration.rb', 'lib/solidus_starter_frontend_configuration.rb'
|
14
|
+
|
15
|
+
# Routes
|
16
|
+
copy_file 'config/routes.rb', 'tmp/routes.rb'
|
17
|
+
prepend_file 'config/routes.rb', File.read('tmp/routes.rb')
|
18
|
+
|
19
|
+
# Gems
|
20
|
+
gem 'canonical-rails'
|
21
|
+
gem 'truncate_html'
|
22
|
+
|
23
|
+
# Text updates
|
24
|
+
append_file 'config/initializers/assets.rb', "Rails.application.config.assets.precompile += ['solidus_starter_frontend_manifest.js']"
|
25
|
+
append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/solidus_starter_frontend\n"
|
26
|
+
inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/solidus_starter_frontend\n", before: %r{\*/}, verbose: true
|
27
|
+
inject_into_file 'config/initializers/spree.rb', "require_relative Rails.root.join('lib/solidus_starter_frontend/config')\n", before: /Spree.config do/, verbose: true
|
28
|
+
gsub_file 'app/assets/stylesheets/application.css', '*= require_tree', '* OFF require_tree'
|
29
|
+
end
|
30
|
+
end
|