shopify-cli 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/CODEOWNERS +1 -0
- data/.github/CODE_OF_CONDUCT.md +73 -0
- data/.github/CONTRIBUTING.md +51 -0
- data/.github/DESIGN.md +153 -0
- data/.github/ISSUE_TEMPLATE.md +38 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +22 -0
- data/.github/probots.yml +3 -0
- data/.gitignore +19 -0
- data/.rubocop.yml +47 -0
- data/.ruby-version +1 -0
- data/.travis.yml +12 -0
- data/Gemfile +22 -0
- data/Gemfile.lock +77 -0
- data/LICENSE.md +7 -0
- data/README.md +13 -0
- data/Rakefile +101 -0
- data/SECURITY.md +59 -0
- data/Vagrantfile +17 -0
- data/bin/load_shopify.rb +20 -0
- data/bin/shopify +32 -0
- data/dev.yml +17 -0
- data/docs/Gemfile +5 -0
- data/docs/Gemfile.lock +248 -0
- data/docs/_config.yml +16 -0
- data/docs/_data/nav.yml +26 -0
- data/docs/_includes/footer.html +15 -0
- data/docs/_includes/head.html +19 -0
- data/docs/_includes/sidebar_nav.html +22 -0
- data/docs/_includes/toc.html +112 -0
- data/docs/_layouts/default.html +79 -0
- data/docs/app/node/commands/index.md +82 -0
- data/docs/app/node/index.md +35 -0
- data/docs/app/rails/commands/index.md +80 -0
- data/docs/app/rails/index.md +36 -0
- data/docs/core/index.md +70 -0
- data/docs/css/docs.css +157 -0
- data/docs/getting-started/index.md +61 -0
- data/docs/help/start-app/index.md +6 -0
- data/docs/images/header.png +0 -0
- data/docs/index.md +27 -0
- data/docs/installing-ruby.md +28 -0
- data/ext/shopify-cli/extconf.rb +27 -0
- data/install.sh +7 -0
- data/lib/docgen/class_template.md.erb +81 -0
- data/lib/docgen/index_template.md.erb +5 -0
- data/lib/docgen/markdown.rb +101 -0
- data/lib/graphql/admin_introspection.graphql +87 -0
- data/lib/graphql/all_organizations.graphql +19 -0
- data/lib/graphql/all_orgs_with_apps.graphql +30 -0
- data/lib/graphql/api_versions.graphql +6 -0
- data/lib/graphql/convert_dev_to_test_store.graphql +10 -0
- data/lib/graphql/create_app.graphql +20 -0
- data/lib/graphql/create_customer.graphql +9 -0
- data/lib/graphql/create_draft_order.graphql +8 -0
- data/lib/graphql/create_product.graphql +9 -0
- data/lib/graphql/extension_create.graphql +21 -0
- data/lib/graphql/extension_update_draft.graphql +18 -0
- data/lib/graphql/find_organization.graphql +17 -0
- data/lib/graphql/get_app_urls.graphql +6 -0
- data/lib/graphql/update_dashboard_urls.graphql +8 -0
- data/lib/project_types/extension/cli.rb +71 -0
- data/lib/project_types/extension/commands/build.rb +29 -0
- data/lib/project_types/extension/commands/create.rb +49 -0
- data/lib/project_types/extension/commands/extension_command.rb +22 -0
- data/lib/project_types/extension/commands/push.rb +69 -0
- data/lib/project_types/extension/commands/register.rb +78 -0
- data/lib/project_types/extension/commands/serve.rb +24 -0
- data/lib/project_types/extension/commands/tunnel.rb +69 -0
- data/lib/project_types/extension/extension_project.rb +85 -0
- data/lib/project_types/extension/extension_project_keys.rb +10 -0
- data/lib/project_types/extension/features/argo.rb +48 -0
- data/lib/project_types/extension/features/argo_dependencies.rb +28 -0
- data/lib/project_types/extension/features/argo_setup.rb +54 -0
- data/lib/project_types/extension/features/argo_setup_step.rb +31 -0
- data/lib/project_types/extension/features/argo_setup_steps.rb +53 -0
- data/lib/project_types/extension/features/tunnel_url.rb +20 -0
- data/lib/project_types/extension/forms/create.rb +52 -0
- data/lib/project_types/extension/forms/register.rb +48 -0
- data/lib/project_types/extension/messages/message_loading.rb +37 -0
- data/lib/project_types/extension/messages/messages.rb +126 -0
- data/lib/project_types/extension/models/app.rb +14 -0
- data/lib/project_types/extension/models/registration.rb +19 -0
- data/lib/project_types/extension/models/type.rb +76 -0
- data/lib/project_types/extension/models/types/checkout_post_purchase.rb +20 -0
- data/lib/project_types/extension/models/types/subscription_management.rb +20 -0
- data/lib/project_types/extension/models/validation_error.rb +17 -0
- data/lib/project_types/extension/models/version.rb +15 -0
- data/lib/project_types/extension/tasks/converters/registration_converter.rb +26 -0
- data/lib/project_types/extension/tasks/converters/validation_error_converter.rb +25 -0
- data/lib/project_types/extension/tasks/converters/version_converter.rb +28 -0
- data/lib/project_types/extension/tasks/create_extension.rb +31 -0
- data/lib/project_types/extension/tasks/get_apps.rb +34 -0
- data/lib/project_types/extension/tasks/update_draft.rb +29 -0
- data/lib/project_types/extension/tasks/user_errors.rb +45 -0
- data/lib/project_types/node/cli.rb +37 -0
- data/lib/project_types/node/commands/create.rb +117 -0
- data/lib/project_types/node/commands/deploy.rb +22 -0
- data/lib/project_types/node/commands/deploy/heroku.rb +91 -0
- data/lib/project_types/node/commands/generate.rb +51 -0
- data/lib/project_types/node/commands/generate/billing.rb +37 -0
- data/lib/project_types/node/commands/generate/page.rb +55 -0
- data/lib/project_types/node/commands/generate/webhook.rb +33 -0
- data/lib/project_types/node/commands/open.rb +16 -0
- data/lib/project_types/node/commands/populate.rb +23 -0
- data/lib/project_types/node/commands/populate/customer.rb +31 -0
- data/lib/project_types/node/commands/populate/draft_order.rb +28 -0
- data/lib/project_types/node/commands/populate/product.rb +30 -0
- data/lib/project_types/node/commands/serve.rb +45 -0
- data/lib/project_types/node/commands/tunnel.rb +39 -0
- data/lib/project_types/node/forms/create.rb +87 -0
- data/lib/project_types/node/messages/messages.rb +260 -0
- data/lib/project_types/rails/cli.rb +41 -0
- data/lib/project_types/rails/commands/create.rb +126 -0
- data/lib/project_types/rails/commands/deploy.rb +22 -0
- data/lib/project_types/rails/commands/deploy/heroku.rb +113 -0
- data/lib/project_types/rails/commands/generate.rb +49 -0
- data/lib/project_types/rails/commands/generate/webhook.rb +39 -0
- data/lib/project_types/rails/commands/open.rb +16 -0
- data/lib/project_types/rails/commands/populate.rb +23 -0
- data/lib/project_types/rails/commands/populate/customer.rb +31 -0
- data/lib/project_types/rails/commands/populate/draft_order.rb +28 -0
- data/lib/project_types/rails/commands/populate/product.rb +30 -0
- data/lib/project_types/rails/commands/serve.rb +47 -0
- data/lib/project_types/rails/commands/tunnel.rb +39 -0
- data/lib/project_types/rails/forms/create.rb +116 -0
- data/lib/project_types/rails/gem.rb +56 -0
- data/lib/project_types/rails/messages/messages.rb +283 -0
- data/lib/project_types/rails/ruby.rb +17 -0
- data/lib/project_types/script/cli.rb +76 -0
- data/lib/project_types/script/commands/create.rb +45 -0
- data/lib/project_types/script/commands/disable.rb +36 -0
- data/lib/project_types/script/commands/enable.rb +46 -0
- data/lib/project_types/script/commands/push.rb +39 -0
- data/lib/project_types/script/config/extension_points.yml +18 -0
- data/lib/project_types/script/errors.rb +16 -0
- data/lib/project_types/script/forms/create.rb +29 -0
- data/lib/project_types/script/forms/enable.rb +24 -0
- data/lib/project_types/script/forms/push.rb +19 -0
- data/lib/project_types/script/forms/script_form.rb +66 -0
- data/lib/project_types/script/graphql/app_script_update_or_create.graphql +27 -0
- data/lib/project_types/script/graphql/script_service_proxy.graphql +8 -0
- data/lib/project_types/script/graphql/shop_script_delete.graphql +14 -0
- data/lib/project_types/script/graphql/shop_script_update_or_create.graphql +28 -0
- data/lib/project_types/script/layers/application/build_script.rb +43 -0
- data/lib/project_types/script/layers/application/create_script.rb +47 -0
- data/lib/project_types/script/layers/application/disable_script.rb +19 -0
- data/lib/project_types/script/layers/application/enable_script.rb +21 -0
- data/lib/project_types/script/layers/application/extension_points.rb +17 -0
- data/lib/project_types/script/layers/application/project_dependencies.rb +34 -0
- data/lib/project_types/script/layers/application/push_script.rb +30 -0
- data/lib/project_types/script/layers/domain/errors.rb +25 -0
- data/lib/project_types/script/layers/domain/extension_point.rb +29 -0
- data/lib/project_types/script/layers/domain/push_package.rb +29 -0
- data/lib/project_types/script/layers/domain/script.rb +18 -0
- data/lib/project_types/script/layers/infrastructure/assemblyscript_dependency_manager.rb +73 -0
- data/lib/project_types/script/layers/infrastructure/assemblyscript_tsconfig.rb +38 -0
- data/lib/project_types/script/layers/infrastructure/assemblyscript_wasm_builder.rb +39 -0
- data/lib/project_types/script/layers/infrastructure/dependency_manager.rb +36 -0
- data/lib/project_types/script/layers/infrastructure/errors.rb +38 -0
- data/lib/project_types/script/layers/infrastructure/extension_point_repository.rb +31 -0
- data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +47 -0
- data/lib/project_types/script/layers/infrastructure/script_builder.rb +34 -0
- data/lib/project_types/script/layers/infrastructure/script_repository.rb +89 -0
- data/lib/project_types/script/layers/infrastructure/script_service.rb +165 -0
- data/lib/project_types/script/layers/infrastructure/test_suite_repository.rb +59 -0
- data/lib/project_types/script/messages/messages.rb +204 -0
- data/lib/project_types/script/script_project.rb +37 -0
- data/lib/project_types/script/templates/ts/as-pect.config.js +21 -0
- data/lib/project_types/script/ui/error_handler.rb +136 -0
- data/lib/project_types/script/ui/strict_spinner.rb +22 -0
- data/lib/rubygems_plugin.rb +18 -0
- data/lib/shopify-cli/admin_api.rb +99 -0
- data/lib/shopify-cli/admin_api/populate_resource_command.rb +165 -0
- data/lib/shopify-cli/admin_api/schema.rb +32 -0
- data/lib/shopify-cli/api.rb +104 -0
- data/lib/shopify-cli/command.rb +67 -0
- data/lib/shopify-cli/commands.rb +28 -0
- data/lib/shopify-cli/commands/connect.rb +108 -0
- data/lib/shopify-cli/commands/create.rb +50 -0
- data/lib/shopify-cli/commands/help.rb +79 -0
- data/lib/shopify-cli/commands/logout.rb +23 -0
- data/lib/shopify-cli/commands/system.rb +135 -0
- data/lib/shopify-cli/commands/version.rb +15 -0
- data/lib/shopify-cli/context.rb +372 -0
- data/lib/shopify-cli/core.rb +9 -0
- data/lib/shopify-cli/core/entry_point.rb +40 -0
- data/lib/shopify-cli/core/executor.rb +21 -0
- data/lib/shopify-cli/core/help_resolver.rb +20 -0
- data/lib/shopify-cli/core/monorail.rb +118 -0
- data/lib/shopify-cli/db.rb +114 -0
- data/lib/shopify-cli/form.rb +40 -0
- data/lib/shopify-cli/git.rb +141 -0
- data/lib/shopify-cli/helpers.rb +5 -0
- data/lib/shopify-cli/helpers/haikunator.rb +92 -0
- data/lib/shopify-cli/heroku.rb +97 -0
- data/lib/shopify-cli/js_deps.rb +110 -0
- data/lib/shopify-cli/js_system.rb +98 -0
- data/lib/shopify-cli/messages/messages.rb +287 -0
- data/lib/shopify-cli/oauth.rb +192 -0
- data/lib/shopify-cli/oauth/servlet.rb +61 -0
- data/lib/shopify-cli/options.rb +40 -0
- data/lib/shopify-cli/packager.rb +116 -0
- data/lib/shopify-cli/partners_api.rb +114 -0
- data/lib/shopify-cli/partners_api/organizations.rb +32 -0
- data/lib/shopify-cli/process_supervision.rb +187 -0
- data/lib/shopify-cli/project.rb +191 -0
- data/lib/shopify-cli/project_type.rb +83 -0
- data/lib/shopify-cli/resources.rb +5 -0
- data/lib/shopify-cli/resources/env_file.rb +96 -0
- data/lib/shopify-cli/sub_command.rb +15 -0
- data/lib/shopify-cli/task.rb +10 -0
- data/lib/shopify-cli/tasks.rb +32 -0
- data/lib/shopify-cli/tasks/create_api_client.rb +29 -0
- data/lib/shopify-cli/tasks/ensure_dev_store.rb +41 -0
- data/lib/shopify-cli/tasks/ensure_env.rb +31 -0
- data/lib/shopify-cli/tasks/ensure_loopback_url.rb +20 -0
- data/lib/shopify-cli/tasks/update_dashboard_urls.rb +44 -0
- data/lib/shopify-cli/tunnel.rb +154 -0
- data/lib/shopify-cli/version.rb +3 -0
- data/lib/shopify_cli.rb +132 -0
- data/shopify-cli.gemspec +40 -0
- data/shopify.fish +12 -0
- data/shopify.sh +11 -0
- data/vendor/deps/cli-kit/REVISION +1 -0
- data/vendor/deps/cli-kit/lib/cli/kit.rb +60 -0
- data/vendor/deps/cli-kit/lib/cli/kit/autocall.rb +21 -0
- data/vendor/deps/cli-kit/lib/cli/kit/base_command.rb +49 -0
- data/vendor/deps/cli-kit/lib/cli/kit/command_registry.rb +94 -0
- data/vendor/deps/cli-kit/lib/cli/kit/config.rb +133 -0
- data/vendor/deps/cli-kit/lib/cli/kit/error_handler.rb +115 -0
- data/vendor/deps/cli-kit/lib/cli/kit/executor.rb +81 -0
- data/vendor/deps/cli-kit/lib/cli/kit/ini.rb +102 -0
- data/vendor/deps/cli-kit/lib/cli/kit/levenshtein.rb +82 -0
- data/vendor/deps/cli-kit/lib/cli/kit/logger.rb +76 -0
- data/vendor/deps/cli-kit/lib/cli/kit/resolver.rb +60 -0
- data/vendor/deps/cli-kit/lib/cli/kit/ruby_backports/enumerable.rb +6 -0
- data/vendor/deps/cli-kit/lib/cli/kit/support.rb +9 -0
- data/vendor/deps/cli-kit/lib/cli/kit/support/test_helper.rb +244 -0
- data/vendor/deps/cli-kit/lib/cli/kit/system.rb +207 -0
- data/vendor/deps/cli-kit/lib/cli/kit/util.rb +189 -0
- data/vendor/deps/cli-kit/lib/cli/kit/version.rb +5 -0
- data/vendor/deps/cli-ui/REVISION +1 -0
- data/vendor/deps/cli-ui/lib/cli/ui.rb +187 -0
- data/vendor/deps/cli-ui/lib/cli/ui/ansi.rb +153 -0
- data/vendor/deps/cli-ui/lib/cli/ui/box.rb +15 -0
- data/vendor/deps/cli-ui/lib/cli/ui/color.rb +79 -0
- data/vendor/deps/cli-ui/lib/cli/ui/formatter.rb +179 -0
- data/vendor/deps/cli-ui/lib/cli/ui/frame.rb +310 -0
- data/vendor/deps/cli-ui/lib/cli/ui/glyph.rb +78 -0
- data/vendor/deps/cli-ui/lib/cli/ui/progress.rb +88 -0
- data/vendor/deps/cli-ui/lib/cli/ui/prompt.rb +248 -0
- data/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +472 -0
- data/vendor/deps/cli-ui/lib/cli/ui/prompt/options_handler.rb +24 -0
- data/vendor/deps/cli-ui/lib/cli/ui/spinner.rb +48 -0
- data/vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb +40 -0
- data/vendor/deps/cli-ui/lib/cli/ui/spinner/spin_group.rb +241 -0
- data/vendor/deps/cli-ui/lib/cli/ui/stdout_router.rb +227 -0
- data/vendor/deps/cli-ui/lib/cli/ui/terminal.rb +36 -0
- data/vendor/deps/cli-ui/lib/cli/ui/truncater.rb +102 -0
- data/vendor/deps/cli-ui/lib/cli/ui/version.rb +5 -0
- data/vendor/deps/smart_properties/REVISION +1 -0
- data/vendor/deps/smart_properties/lib/smart_properties.rb +174 -0
- data/vendor/deps/smart_properties/lib/smart_properties/errors.rb +114 -0
- data/vendor/deps/smart_properties/lib/smart_properties/property.rb +162 -0
- data/vendor/deps/smart_properties/lib/smart_properties/property_collection.rb +83 -0
- data/vendor/deps/smart_properties/lib/smart_properties/validations.rb +8 -0
- data/vendor/deps/smart_properties/lib/smart_properties/validations/ancestor.rb +27 -0
- data/vendor/deps/smart_properties/lib/smart_properties/version.rb +3 -0
- data/vendor/lib/semantic/LICENSE +20 -0
- data/vendor/lib/semantic/semantic.rb +4 -0
- data/vendor/lib/semantic/version.rb +180 -0
- metadata +374 -0
data/docs/_config.yml
ADDED
data/docs/_data/nav.yml
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
sidebar:
|
|
2
|
+
- title: Introduction
|
|
3
|
+
section: intro
|
|
4
|
+
url: /
|
|
5
|
+
- title: Getting started
|
|
6
|
+
section: getting-started
|
|
7
|
+
url: /getting-started/
|
|
8
|
+
- title: Core commands
|
|
9
|
+
section: core
|
|
10
|
+
url: /core/
|
|
11
|
+
- title: Node app projects
|
|
12
|
+
section: node
|
|
13
|
+
url: /app/node/
|
|
14
|
+
subnav:
|
|
15
|
+
- title: Getting started
|
|
16
|
+
url: /app/node/
|
|
17
|
+
- title: Command reference
|
|
18
|
+
url: /app/node/commands/
|
|
19
|
+
- title: Rails app projects
|
|
20
|
+
section: rails
|
|
21
|
+
url: /app/rails/
|
|
22
|
+
subnav:
|
|
23
|
+
- title: Getting started
|
|
24
|
+
url: /app/rails/
|
|
25
|
+
- title: Command reference
|
|
26
|
+
url: /app/rails/commands/
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<div class="page-container page-container--footer">
|
|
2
|
+
<footer class="footer--main" role="contentinfo">
|
|
3
|
+
<div class="footer-bottom">
|
|
4
|
+
<div class="grid">
|
|
5
|
+
<div class="grid__item color-white">
|
|
6
|
+
<p>
|
|
7
|
+
Built and maintained by <a href="https://www.shopify.com">Shopify Inc.</a> © {{ site.time | date: '%Y' }}.
|
|
8
|
+
Want to contribute? <a href="https://www.shopify.com/careers">Join the team</a>
|
|
9
|
+
</p>
|
|
10
|
+
</div>
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
</footer>
|
|
15
|
+
</div>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<meta charset="utf-8">
|
|
2
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
3
|
+
|
|
4
|
+
<title>{% if page.title %}{{ page.title }} · {% endif %}{{ site.title }}</title>
|
|
5
|
+
|
|
6
|
+
{% if page.description %}
|
|
7
|
+
<meta name="description" content="{{ site.github.project_tagline }}">
|
|
8
|
+
{% endif %}
|
|
9
|
+
|
|
10
|
+
<link rel="canonical" href="https://shopify.github.io/shopify-app-cli/">
|
|
11
|
+
|
|
12
|
+
<meta name="robots" content="index, follow">
|
|
13
|
+
<meta name="st:robots" content="index, follow">
|
|
14
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
15
|
+
<meta property='st:title' content="{{ site.title }}">
|
|
16
|
+
|
|
17
|
+
<link rel="shortcut icon" type="image/png" href="https://cdn.shopify.com/shopify-marketing_assets/static/shopify-favicon.png" />
|
|
18
|
+
<link href="https://cdn.shopify.com/shopify-marketing_assets/builds/88.3.2/marketing_assets.css" rel="stylesheet" type="text/css">
|
|
19
|
+
<link href="{{ '/css/docs.css' | relative_url }}" rel="stylesheet" type="text/css">
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<ul class="in-page-menu in-page-menu--vertical">
|
|
2
|
+
{% for item in site.data.nav.sidebar %}
|
|
3
|
+
<li>
|
|
4
|
+
<a class="{% if item.url == page.url %}is-active{% endif %}" href="{{ item.url | relative_url }}">{{ item.title }}</a>
|
|
5
|
+
{% if item.section == page.section %}
|
|
6
|
+
<ul>
|
|
7
|
+
{% for subitem in item.subnav %}
|
|
8
|
+
<li><a class="{% if subitem.url == page.url %}is-active{% endif %}" href="{{ subitem.url | relative_url }}">{{ subitem.title }}</a></li>
|
|
9
|
+
{% endfor %}
|
|
10
|
+
</ul>
|
|
11
|
+
{% endif %}
|
|
12
|
+
</li>
|
|
13
|
+
{% endfor %}
|
|
14
|
+
</ul>
|
|
15
|
+
|
|
16
|
+
<p>
|
|
17
|
+
<a href="{{ site.github.repository_url }}" class="link--external">GitHub repository</a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<p>
|
|
21
|
+
<a href="https://shopify.dev/" class="link--external">Shopify Developer Docs</a><br />
|
|
22
|
+
</p>
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
{% capture tocWorkspace %}
|
|
2
|
+
{% comment %}
|
|
3
|
+
Version 1.0.11
|
|
4
|
+
https://github.com/allejo/jekyll-toc
|
|
5
|
+
|
|
6
|
+
"...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
|
|
7
|
+
|
|
8
|
+
Usage:
|
|
9
|
+
{% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %}
|
|
10
|
+
|
|
11
|
+
Parameters:
|
|
12
|
+
* html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
|
|
13
|
+
|
|
14
|
+
Optional Parameters:
|
|
15
|
+
* sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC
|
|
16
|
+
* class (string) : '' - a CSS class assigned to the TOC
|
|
17
|
+
* id (string) : '' - an ID to assigned to the TOC
|
|
18
|
+
* h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored
|
|
19
|
+
* h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored
|
|
20
|
+
* ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list
|
|
21
|
+
* item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level
|
|
22
|
+
* baseurl (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content
|
|
23
|
+
* anchor_class (string) : '' - add custom class(es) for each anchor element
|
|
24
|
+
* skipNoIDs (bool) : false - skip headers that do not have an `id` attribute
|
|
25
|
+
|
|
26
|
+
Output:
|
|
27
|
+
An ordered or unordered list representing the table of contents of a markdown block. This snippet will only
|
|
28
|
+
generate the table of contents and will NOT output the markdown given to it
|
|
29
|
+
{% endcomment %}
|
|
30
|
+
|
|
31
|
+
{% capture my_toc %}{% endcapture %}
|
|
32
|
+
{% assign orderedList = include.ordered | default: false %}
|
|
33
|
+
{% assign skipNoIDs = include.skipNoIDs | default: false %}
|
|
34
|
+
{% assign minHeader = include.h_min | default: 1 %}
|
|
35
|
+
{% assign maxHeader = include.h_max | default: 6 %}
|
|
36
|
+
{% assign nodes = include.html | split: '<h' %}
|
|
37
|
+
{% assign firstHeader = true %}
|
|
38
|
+
|
|
39
|
+
{% capture listModifier %}{% if orderedList %}1.{% else %}-{% endif %}{% endcapture %}
|
|
40
|
+
|
|
41
|
+
{% for node in nodes %}
|
|
42
|
+
{% if node == "" %}
|
|
43
|
+
{% continue %}
|
|
44
|
+
{% endif %}
|
|
45
|
+
|
|
46
|
+
{% if skipNoIDs == true %}
|
|
47
|
+
{% unless node contains "id=" %}
|
|
48
|
+
{% continue %}
|
|
49
|
+
{% endunless %}
|
|
50
|
+
{% endif %}
|
|
51
|
+
|
|
52
|
+
{% assign headerLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %}
|
|
53
|
+
|
|
54
|
+
{% if headerLevel < minHeader or headerLevel > maxHeader %}
|
|
55
|
+
{% continue %}
|
|
56
|
+
{% endif %}
|
|
57
|
+
|
|
58
|
+
{% if firstHeader %}
|
|
59
|
+
{% assign firstHeader = false %}
|
|
60
|
+
{% assign minHeader = headerLevel %}
|
|
61
|
+
{% endif %}
|
|
62
|
+
|
|
63
|
+
{% assign indentAmount = headerLevel | minus: minHeader %}
|
|
64
|
+
{% assign _workspace = node | split: '</h' %}
|
|
65
|
+
|
|
66
|
+
{% assign _idWorkspace = _workspace[0] | split: 'id="' %}
|
|
67
|
+
{% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
|
|
68
|
+
{% assign html_id = _idWorkspace[0] %}
|
|
69
|
+
|
|
70
|
+
{% assign _classWorkspace = _workspace[0] | split: 'class="' %}
|
|
71
|
+
{% assign _classWorkspace = _classWorkspace[1] | split: '"' %}
|
|
72
|
+
{% assign html_class = _classWorkspace[0] %}
|
|
73
|
+
|
|
74
|
+
{% if html_class contains "no_toc" %}
|
|
75
|
+
{% continue %}
|
|
76
|
+
{% endif %}
|
|
77
|
+
|
|
78
|
+
{% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %}
|
|
79
|
+
{% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
|
|
80
|
+
|
|
81
|
+
{% assign space = '' %}
|
|
82
|
+
{% for i in (1..indentAmount) %}
|
|
83
|
+
{% assign space = space | prepend: ' ' %}
|
|
84
|
+
{% endfor %}
|
|
85
|
+
|
|
86
|
+
{% if include.item_class and include.item_class != blank %}
|
|
87
|
+
{% capture listItemClass %}{:.{{ include.item_class | replace: '%level%', headerLevel }}}{% endcapture %}
|
|
88
|
+
{% endif %}
|
|
89
|
+
|
|
90
|
+
{% capture anchor_body %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %}
|
|
91
|
+
{% capture anchor_body %}{{ anchor_body | replace: "|", "\|" }}{% endcapture %}
|
|
92
|
+
|
|
93
|
+
{% if html_id %}
|
|
94
|
+
{% capture list_item %}[{{ anchor_body }}]({% if include.baseurl %}{{ include.baseurl }}{% endif %}#{{ html_id }}){% endcapture %}
|
|
95
|
+
{% else %}
|
|
96
|
+
{% capture list_item %}{{ anchor_body }}{% endcapture %}
|
|
97
|
+
{% endif %}
|
|
98
|
+
|
|
99
|
+
{% capture my_toc %}{{ my_toc }}
|
|
100
|
+
{{ space }}{{ listModifier }} {{ listItemClass }} {{ list_item }}{% if include.anchor_class %}{:.{{ include.anchor_class }}}{% endif %}{% endcapture %}
|
|
101
|
+
{% endfor %}
|
|
102
|
+
|
|
103
|
+
{% if include.class and include.class != blank %}
|
|
104
|
+
{% capture my_toc %}{:.{{ include.class }}}
|
|
105
|
+
{{ my_toc | lstrip }}{% endcapture %}
|
|
106
|
+
{% endif %}
|
|
107
|
+
|
|
108
|
+
{% if include.id %}
|
|
109
|
+
{% capture my_toc %}{: #{{ include.id }}}
|
|
110
|
+
{{ my_toc | lstrip }}{% endcapture %}
|
|
111
|
+
{% endif %}
|
|
112
|
+
{% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
{% include head.html %}
|
|
5
|
+
</head>
|
|
6
|
+
<body>
|
|
7
|
+
<div id="GlobalIconSymbols" style="display: none;"><svg xmlns="http://www.w3.org/2000/svg"><symbol id="search"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M14.312 12.897l5.395 5.396a1 1 0 11-1.414 1.414l-5.396-5.395A7.954 7.954 0 018 16c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8a7.946 7.946 0 01-1.688 4.897zM8 2C4.691 2 2 4.691 2 8s2.691 6 6 6 6-2.691 6-6-2.691-6-6-6z" clip-rule="evenodd"></path></svg></symbol><symbol id="modules-arrow-right"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M17.707 9.293l-5-5c-.39-.39-1.023-.39-1.414 0s-.39 1.023 0 1.414L14.586 9H3c-.553 0-1 .448-1 1s.447 1 1 1h11.586l-3.293 3.293c-.39.39-.39 1.023 0 1.414.195.195.45.293.707.293s.512-.098.707-.293l5-5c.39-.39.39-1.023 0-1.414z"></path></svg>
|
|
8
|
+
</symbol><symbol id="shopify-developers-logo"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 948.88 142.83"><path fill="#95bf46" d="M107.41 27.15a1.35 1.35 0 0 0-1.22-1.15L95 25.18 86.7 17c-.82-.82-2.41-.57-3-.39l-4.2 1.27C77 10.72 72.63 4.14 64.91 4.14h-.65C62.06 1.26 59.34 0 57 0 39 0 30.41 22.48 27.72 33.91l-12.59 3.9c-3.9 1.22-4 1.35-4.54 5C10.21 45.62 0 124.55 0 124.55l79.54 14.9 43.09-9.32S107.5 27.85 107.41 27.15zm-32.3-7.92l-6.73 2.08v-1.45A33 33 0 0 0 66.77 9c3.98.5 6.63 5 8.34 10.24zM61.84 9.88c1.11 2.77 1.82 6.75 1.82 12.12v.78l-13.9 4.3c2.68-10.33 7.69-15.32 12.08-17.2zm-5.35-5.06a4.06 4.06 0 0 1 2.31.78C53 8.32 46.86 15.15 44.25 28.79l-11 3.4c3.07-10.4 10.33-27.37 23.24-27.37z"></path><path fill="#5f8e3e" d="M106.19 26L95 25.18 86.7 17a2 2 0 0 0-1.15-.53l-6 123 43.09-9.32s-15.13-102.28-15.22-103a1.35 1.35 0 0 0-1.23-1.15z"></path><path fill="#fff" d="M64.91 49.83l-5.32 15.81a24.44 24.44 0 0 0-10.36-2.49c-8.37 0-8.79 5.25-8.79 6.57 0 7.22 18.82 10 18.82 26.89 0 13.3-8.44 21.87-19.82 21.87-13.65 0-20.64-8.5-20.64-8.5l3.66-12.08s7.18 6.16 13.23 6.16a5.34 5.34 0 0 0 5.57-5.39c0-9.42-15.44-9.84-15.44-25.31 0-13 9.35-25.63 28.22-25.63 7.27.02 10.87 2.1 10.87 2.1z"></path><path fill="#fff" d="M172.87 79.46c-4.3-2.33-6.51-4.3-6.51-7 0-3.44 3.07-5.65 7.86-5.65a28.08 28.08 0 0 1 10.56 2.33l3.93-12s-3.61-2.82-14.24-2.82c-14.8 0-25.05 8.47-25.05 20.38 0 6.75 4.79 11.91 11.17 15.59 5.16 2.95 7 5 7 8.1s-2.58 5.77-7.37 5.77c-7.13 0-13.88-3.68-13.88-3.68l-4.17 12s6.23 4.17 16.7 4.17c15.23 0 26.16-7.49 26.16-21-.03-7.22-5.53-12.38-12.16-16.19zm60.66-25.29c-7.49 0-13.38 3.56-17.93 9l-.25-.12 6.51-34h-16.94l-16.46 86.57h16.95L211.06 86c2.21-11.17 8-18.05 13.38-18.05 3.81 0 5.28 2.58 5.28 6.26a38.72 38.72 0 0 1-.74 7.49l-6.39 33.89h16.95l6.63-35a63.31 63.31 0 0 0 1.23-11.05c.01-9.6-5.03-15.37-13.87-15.37zm52.19 0c-20.38 0-33.89 18.42-33.89 38.93 0 13.14 8.1 23.7 23.33 23.7 20 0 33.52-17.93 33.52-38.93 0-12.16-7.12-23.7-22.96-23.7zm-8.35 49.61c-5.77 0-8.23-4.91-8.23-11.05 0-9.7 5-25.54 14.24-25.54 6 0 8 5.16 8 10.19-.01 10.44-5.05 26.4-14.01 26.4zM352 54.17c-11.44 0-17.93 10.07-17.93 10.07h-.25l1-9.09h-15c-.74 6.14-2.09 15.47-3.44 22.47l-11.79 62h16.95l4.67-25.05h.37s3.48 2.21 9.95 2.21c19.89 0 32.91-20.38 32.91-41 .03-11.42-5.01-21.61-17.44-21.61zM335.82 104a10.76 10.76 0 0 1-7-2.46l2.82-15.84c2-10.56 7.49-17.56 13.38-17.56 5.16 0 6.75 4.79 6.75 9.33.01 10.96-6.49 26.53-15.95 26.53zm57.84-74.15a9.67 9.67 0 0 0-9.7 9.82c0 5 3.19 8.47 8 8.47h.25a9.57 9.57 0 0 0 9.95-9.82 8.06 8.06 0 0 0-8.5-8.47zm-23.7 85.72h16.95l11.54-60.05h-17.07l-11.42 60.05zm71.59-60.17h-11.79l.61-2.82c1-5.77 4.42-10.93 10.07-10.93a17.66 17.66 0 0 1 5.4.86l3.32-13.26s-2.95-1.47-9.21-1.47c-6 0-12 1.72-16.58 5.65-5.77 4.91-8.47 12-9.82 19.16l-.49 2.82h-7.86l-2.46 12.77h7.86l-9 47.4h16.95l9-47.4h11.67zM467 96.78h-.25c-.33-4.69-4.18-41.26-4.18-41.26h-17.83l10.19 55.14a3.61 3.61 0 0 1-.37 2.82 29 29 0 0 1-9.21 10.19 36.65 36.65 0 0 1-9.58 4.79l4.67 14.37a38.7 38.7 0 0 0 16.56-9.21c7.74-7.25 14.86-18.42 22.23-33.65L500 55.52h-17.68S471.72 82.21 467 96.78zm90.73-39.51c-2.36-1.49-6.57-2.48-10.54-2.48-19.22 0-33.61 21-33.61 41.92 0 10.79 4.84 20.09 15.5 20.09 8.56 0 15.5-5.33 20.22-13.39h.25l-1.74 12.15h5.08a160.79 160.79 0 0 1 2.36-17.86l13.15-69.57h-5.33zm-5.83 30.26c-2.73 14.88-13.15 24.56-21.33 24.56-9.43 0-11.41-8.56-11.41-16 0-17.12 11.66-36.59 27.29-36.59 4.59 0 7.94 1.24 10 3zm45.89-32.74c-17 0-29 22.45-29 39.56 0 11.41 4.84 22.32 18.73 22.32a29.58 29.58 0 0 0 16.25-4.46l-1.64-4.21a25.94 25.94 0 0 1-13.77 4c-6.33 0-10.91-3.35-13-10-1.24-4.34-1.12-12.15-.5-14.88 19.47.12 36.83-4.09 36.83-19.22-.01-6.78-4.1-13.11-13.9-13.11zm8.31 13.27c0 11.78-14.88 14.39-30.39 14.26 3.72-12.9 11.91-22.82 21.08-22.82 5.58 0 9.3 3 9.3 8.43zM657.07 56l-20.22 39.35A137.07 137.07 0 0 0 631 108h-.37c0-2.85-.74-7.32-1.61-13.52L623.83 56h-5.33l8.31 59.53h5l31-59.53zm32.74-1.21c-17 0-29 22.45-29 39.56 0 11.41 4.84 22.32 18.73 22.32a29.58 29.58 0 0 0 16.25-4.46l-1.64-4.21a25.94 25.94 0 0 1-13.77 4c-6.33 0-10.91-3.35-13-10-1.24-4.34-1.12-12.15-.5-14.88 19.47.12 36.83-4.09 36.83-19.22-.01-6.78-4.1-13.11-13.9-13.11zm8.31 13.27c0 11.78-14.88 14.39-30.39 14.26 3.72-12.9 11.91-22.82 21.08-22.82 5.58 0 9.3 3 9.3 8.43zm8.55 47.5h5.34l16.62-87.43h-5.46l-16.5 87.43zm51.72-60.77c-18.11 0-29.39 21.58-29.39 38.95 0 12.28 6.08 23.07 19 23.07h.12c19.22 0 29.27-23.81 29.27-39.07-.02-10.79-4.74-22.95-19-22.95zm-9.55 57.3h-.12c-9.3 0-14.14-8.43-14.14-18.85 0-15.24 9.42-33.74 23.31-33.74 10.91 0 13.89 10.42 13.89 18.23.01 14.27-9.42 34.36-22.94 34.36zm67.96-57.3c-7.94 0-15.38 5.08-20.71 13.27h-.25l1.86-12h-5.08c-.74 5.46-1.86 12.65-3.35 20.46l-11.91 63.38h5.33l4.71-25.67h.25c2.23 1.24 6.08 2.6 11.91 2.6 19 0 32.74-22.57 32.74-42.66.01-9.83-4.21-19.38-15.5-19.38zm-16.74 57.3c-4.84 0-8.81-1.24-11.53-3.35l3.84-20.46c3.35-18 14.39-28.77 22.82-28.77 8.81 0 11.53 7.94 11.53 15 0 15.26-10.91 37.58-26.66 37.58zm67.09-57.3c-17 0-29 22.45-29 39.56 0 11.41 4.84 22.32 18.73 22.32a29.58 29.58 0 0 0 16.25-4.46l-1.64-4.21a25.94 25.94 0 0 1-13.77 4c-6.33 0-10.91-3.35-13-10-1.24-4.34-1.12-12.15-.5-14.88 19.47.12 36.83-4.09 36.83-19.22-.05-6.78-4.05-13.11-13.9-13.11zm8.31 13.27c0 11.78-14.88 14.39-30.39 14.26C848.8 69.43 857 59.5 866.16 59.5c5.58 0 9.3 3 9.3 8.43zM916 60.62l1.12-5.71c-.62 0-1.49-.12-2.23-.12-7.44 0-13.39 6.33-17 14.26h-.25c.74-5.21 1.24-9.18 1.61-13h-4.84c-.5 5.21-1.36 11.91-2.85 19.47L884 115.56h5.33l5.71-30.26c2.48-13 11.16-24.8 19-24.8a8.82 8.82 0 0 1 1.96.12zm22.46-1.12a17 17 0 0 1 8.44 2.5l2-4.59c-1.74-1.36-5.71-2.6-9.8-2.6-10.54 0-18.11 7.57-18.11 16.87 0 5.58 3.22 10.91 9.18 14.76 5.58 3.6 8.06 7.19 8.06 13.15 0 6.82-5.33 12.4-13.15 12.4a18.2 18.2 0 0 1-10.42-3.35l-2.11 4.46c2 1.61 6.7 3.6 12 3.6 10.29 0 19.1-6.57 19.1-18.6 0-6.08-3.47-11.53-9.18-15.38-4.84-3.35-8.06-6.45-8.06-12 .02-6.13 4.86-11.22 12.05-11.22z"></path></svg></symbol><symbol id="modules-caret-right"><svg xmlns="http://www.w3.org/2000/svg" viewBox="-242.1 245.6 6.6 10.3"><path d="M-235.6 250.7l-5.1 5.2-1.4-1.4 3.7-3.8-3.7-3.7 1.4-1.4"></path></svg></symbol><symbol id="modules-nav-external-indicator"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7"><path d="M7,7V0H0L7,7z"></path></svg>
|
|
9
|
+
</symbol><symbol id="modules-caret-down"><svg xmlns="http://www.w3.org/2000/svg" baseProfile="tiny" viewBox="0 0 10.289 6.563"><path d="M5.212 6.563L0 1.423 1.404 0l3.788 3.735L8.865.01l1.424 1.404"></path></svg></symbol><symbol id="modules-mobile-hamburger"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M19 11H1c-.552 0-1-.447-1-1s.448-1 1-1h18c.552 0 1 .447 1 1s-.448 1-1 1zm0-7H1c-.552 0-1-.447-1-1s.448-1 1-1h18c.552 0 1 .447 1 1s-.448 1-1 1zm0 14H1c-.552 0-1-.447-1-1s.448-1 1-1h18c.552 0 1 .447 1 1s-.448 1-1 1z"></path></svg>
|
|
10
|
+
</symbol><symbol id="modules-cancel"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M11.414 10l6.293-6.293c.39-.39.39-1.023 0-1.414s-1.023-.39-1.414 0L10 8.586 3.707 2.293c-.39-.39-1.023-.39-1.414 0s-.39 1.023 0 1.414L8.586 10l-6.293 6.293c-.39.39-.39 1.023 0 1.414.195.195.45.293.707.293s.512-.098.707-.293L10 11.414l6.293 6.293c.195.195.45.293.707.293s.512-.098.707-.293c.39-.39.39-1.023 0-1.414L11.414 10z"></path></svg>
|
|
11
|
+
</symbol><symbol id="modules-social-facebook"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M15.6 30V19.4h5V15h-5v-3.1c0-1 .6-1.9 1.3-1.9h3.8V5.6h-3.8c-3.1 0-5.6 2.8-5.6 6.3V15H7.5v4.4h3.8v10.1C4.8 27.9 0 22 0 15 0 6.7 6.7 0 15 0s15 6.7 15 15c0 8.1-6.4 14.7-14.4 15z"></path></svg>
|
|
12
|
+
</symbol><symbol id="modules-social-twitter"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M30 15c0 8.3-6.7 15-15 15S0 23.3 0 15 6.7 0 15 0s15 6.7 15 15zm-3.7-5.5c-.8.3-1.6.6-2.5.7.9-.5 1.5-1.4 1.8-2.4-.8.5-1.7.8-2.7 1-.8-.8-1.9-1.4-3.1-1.4-2.4 0-4.2 1.9-4.2 4.3 0 .3 0 .7.1 1-3.5-.2-6.7-1.9-8.8-4.5-.3.7-.6 1.4-.6 2.2 0 1.5.7 2.8 1.9 3.5-.7 0-1.4-.2-1.9-.5 0 2.1 1.5 3.8 3.4 4.2-.3.1-.7.1-1.1.1-.3 0-.6 0-.8-.1.5 1.7 2.1 2.8 4 2.9-1.5 1.1-3.3 1.9-5.3 1.9-.3 0-.7 0-1-.1 1.9 1.2 4.1 1.9 6.5 1.9 7.8 0 12.1-6.5 12.1-12.1v-.6c.9-.4 1.6-1.2 2.2-2z"></path></svg>
|
|
13
|
+
</symbol><symbol id="modules-social-youtube"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M30 15c0 8.3-6.7 15-15 15S0 23.3 0 15 6.7 0 15 0s15 6.7 15 15zm-5.6 0c0-6.9 0-6.9-9.4-6.9s-9.4 0-9.4 6.9 0 6.9 9.4 6.9 9.4 0 9.4-6.9zm-11.9-3.7l6.3 3.8-6.3 3.8v-7.6z"></path></svg>
|
|
14
|
+
</symbol><symbol id="modules-social-instagram"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M15 30C6.7 30 0 23.3 0 15c0-1.1.1-2.1.3-3.1h7.2c-.4 1-.6 2-.6 3.1 0 4.5 3.6 8.1 8.1 8.1s8.1-3.6 8.1-8.1c0-1.1-.2-2.2-.6-3.1h7.2c.2 1 .3 2 .3 3.1 0 8.3-6.7 15-15 15zm5.9-20.6c-1.5-1.5-3.6-2.5-5.9-2.5s-4.4 1-5.9 2.5h-8C3.3 3.9 8.7 0 15 0s11.7 3.9 13.9 9.4h-8zm-.3 5.6c0 3.1-2.5 5.6-5.6 5.6-3.1 0-5.6-2.5-5.6-5.6 0-3.1 2.5-5.6 5.6-5.6 3.1 0 5.6 2.5 5.6 5.6z"></path></svg>
|
|
15
|
+
</symbol><symbol id="modules-social-linkedin"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M30 15c0 8.3-6.7 15-15 15S0 23.3 0 15 6.7 0 15 0s15 6.7 15 15zM11.3 7.8c0-1.2-1-2.2-2.5-2.2s-2.5.9-2.5 2.2c0 1.2 1 2.2 2.5 2.2s2.5-1 2.5-2.2zm-.7 4.1H6.9v10.6h3.8V11.9zm13.8 5c0-3.4-1.7-5.6-4.4-5.6-1.5 0-2.6.9-3.1 2.3l-.1-1.6H13c0 .4.1 2.5.1 2.5v8.1h3.8V17c0-1.5.7-2.5 1.8-2.5s1.9.6 1.9 2.5v5.6h3.8v-5.7z"></path></svg>
|
|
16
|
+
</symbol><symbol id="modules-social-pinterest"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M15 30c-1.5 0-2.9-.2-4.3-.6.6-.9 1.2-2 1.5-3.2.2-.7 1-4.1 1-4.1.5 1 2 1.9 3.7 1.9 4.8 0 8.1-4.4 8.1-10.3 0-4.4-3.8-8.6-9.5-8.6-7.1-.1-10.6 5-10.6 9.3 0 2.6 1 4.9 3.1 5.7.3.1.7 0 .8-.4.1-.2.2-.9.3-1.2.1-.4 0-.5-.2-.8-.6-.7-1-1.6-1-3 0-3.8 2.8-7.2 7.4-7.2 4 0 6.2 2.5 6.2 5.8 0 4.3-1.9 8-4.8 8-1.6 0-2.7-1.3-2.4-2.9.5-1.9 1.3-4 1.3-5.3 0-1.2-.7-2.3-2-2.3-1.6 0-2.9 1.7-2.9 3.9 0 1.4.5 2.4.5 2.4S9.5 24 9.3 25.3c-.3 1.1-.4 2.4-.3 3.5-5.3-2.4-9-7.7-9-13.8C0 6.7 6.7 0 15 0s15 6.7 15 15-6.7 15-15 15z"></path></svg>
|
|
17
|
+
</symbol><symbol id="modules-close"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 44 44"><path d="M39.196 43.3L1.154 5.256l3.89-3.89 38.04 38.043z"></path><path d="M.54 39.413L38.58 1.37l3.89 3.89L4.428 43.302z"></path></svg></symbol></svg></div>
|
|
18
|
+
<header class="site-nav-container">
|
|
19
|
+
|
|
20
|
+
<div class="marketing-nav-wrapper">
|
|
21
|
+
<nav class="marketing-nav--skin-dark marketing-nav marketing-nav--primary" id="ShopifyMainNav" itemscope="itemscope" itemtype="https://schema.org/SiteNavigationElement" aria-label="Main Navigation">
|
|
22
|
+
|
|
23
|
+
<div class="marketing-nav__logo color-white">
|
|
24
|
+
<a href="{{ '/' | relative_url }}" class="marketing-nav__logo__shopify">
|
|
25
|
+
<svg class="icon" aria-labelledby="icon-shopify-developers-logo-5-title" role="img"><title id="icon-shopify-developers-logo-5-title">Home</title> <use xlink:href="#shopify-developers-logo"></use> </svg>
|
|
26
|
+
</a>
|
|
27
|
+
</div>
|
|
28
|
+
<span class="marketing-nav__items display--expanded-nav"></span>
|
|
29
|
+
</nav>
|
|
30
|
+
</div>
|
|
31
|
+
</header>
|
|
32
|
+
|
|
33
|
+
<div id="PageContainer">
|
|
34
|
+
|
|
35
|
+
<section class="section section--tight section-padding section--padding-top-only ui-hero">
|
|
36
|
+
<div class="grid">
|
|
37
|
+
<div class="grid__item">
|
|
38
|
+
<p class="section-heading__kicker heading--5 hide--mobile">Shopify Open Source</p>
|
|
39
|
+
<h1 class="section-heading__heading heading--2 ui-hero__header gutter-bottom--reset--mobile">Shopify App CLI</h1>
|
|
40
|
+
<p class="text-major hide--mobile ui-hero__header">
|
|
41
|
+
Build Shopify apps faster
|
|
42
|
+
</p>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</section>
|
|
46
|
+
<section id="Content">
|
|
47
|
+
<div class="grid">
|
|
48
|
+
<div class="grid__item grid__item--tablet-up-quarter" id="SidebarNav">
|
|
49
|
+
{% include sidebar_nav.html %}
|
|
50
|
+
</div>
|
|
51
|
+
<div class="grid__item grid__item--tablet-up-three-quarters sticky-menu-content">
|
|
52
|
+
<main role="main" id="Main">
|
|
53
|
+
|
|
54
|
+
<article>
|
|
55
|
+
|
|
56
|
+
<h1>{{ page.title }}</h1>
|
|
57
|
+
|
|
58
|
+
{% if page.toc %}
|
|
59
|
+
<h2 class="heading--4">On this page</h2>
|
|
60
|
+
|
|
61
|
+
<div class="on-this-page">
|
|
62
|
+
{% include toc.html html=content h_max=2 %}
|
|
63
|
+
</div>
|
|
64
|
+
{% endif %}
|
|
65
|
+
|
|
66
|
+
{{ content }}
|
|
67
|
+
</article>
|
|
68
|
+
|
|
69
|
+
</main>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
</section>
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
|
|
76
|
+
{% include footer.html %}
|
|
77
|
+
|
|
78
|
+
</body>
|
|
79
|
+
</html>
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Node.js app project command reference
|
|
3
|
+
section: node
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## `deploy`
|
|
7
|
+
|
|
8
|
+
Deploy the current Node.js app to a hosting service. Currently, the only option is [Heroku](https://www.heroku.com).
|
|
9
|
+
|
|
10
|
+
```console
|
|
11
|
+
$ shopify deploy heroku
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## `generate`
|
|
15
|
+
|
|
16
|
+
Generate boilerplate code inside your app project. Node.js apps support generating new **pages**, **Billing API calls**, and **webhooks**.
|
|
17
|
+
|
|
18
|
+
```console
|
|
19
|
+
$ shopify generate page
|
|
20
|
+
$ shopify generate billing
|
|
21
|
+
$ shopify generate webhook
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## `open`
|
|
25
|
+
|
|
26
|
+
Open your local development app in your default browser.
|
|
27
|
+
|
|
28
|
+
```console
|
|
29
|
+
$ shopify open
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## `populate`
|
|
33
|
+
|
|
34
|
+
Add example data to your development store. This is useful for testing your app’s behavior. You can create the following types of example store records:
|
|
35
|
+
|
|
36
|
+
- Products
|
|
37
|
+
- Customers
|
|
38
|
+
- Orders
|
|
39
|
+
|
|
40
|
+
```console
|
|
41
|
+
$ shopify populate products
|
|
42
|
+
$ shopify populate customers
|
|
43
|
+
$ shopify populate draftorders
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
By default, the `populate` command adds 5 records. Use the `--count` option to specify a different number:
|
|
47
|
+
|
|
48
|
+
```console
|
|
49
|
+
$ shopify populate products --count 10
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## `serve`
|
|
53
|
+
|
|
54
|
+
Start a local development server for your project, as well as a public [ngrok](https://ngrok.com/) tunnel to your localhost.
|
|
55
|
+
|
|
56
|
+
```console
|
|
57
|
+
$ shopify serve
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## `tunnel`
|
|
61
|
+
|
|
62
|
+
Control an HTTP tunnel to your local development app using [ngrok](https://ngrok.com). With the `tunnel` command you can authenticate with ngrok and start or stop the tunnel. (Note that the `serve` command will automatically run `tunnel start` for you.)
|
|
63
|
+
|
|
64
|
+
To authenticate with ngrok, you need an authentication token. You can find it in [your ngrok dashboard](https://dashboard.ngrok.com/auth/your-authtoken). Copy your token and use it with the `tunnel auth` command:
|
|
65
|
+
|
|
66
|
+
```console
|
|
67
|
+
$ shopify tunnel auth <token>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
This will write your ngrok auth token to `~/.ngrok2/ngrok.yml`. To learn more about ngrok configuration, [consult ngrok’s documentation](https://ngrok.com/docs#config).
|
|
71
|
+
|
|
72
|
+
To start an ngrok tunnel to your app in your localhost development environment:
|
|
73
|
+
|
|
74
|
+
```console
|
|
75
|
+
$ shopify tunnel start
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
To stop the running ngrok tunnel:
|
|
79
|
+
|
|
80
|
+
```console
|
|
81
|
+
$ shopify tunnel stop
|
|
82
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Getting started with Node.js app projects
|
|
3
|
+
section: node
|
|
4
|
+
toc: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Create a new Node.js app project
|
|
8
|
+
|
|
9
|
+
To create a new Node.js project, type `shopify create node`. This will scaffold a new Node.js app in a subdirectory.
|
|
10
|
+
|
|
11
|
+
```console
|
|
12
|
+
$ shopify create node
|
|
13
|
+
? App Name
|
|
14
|
+
>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Start a local development server
|
|
18
|
+
|
|
19
|
+
Once your app is created, you can work with it immediately by running `shopify serve` to start a local development server. Shopify App CLI uses [ngrok](https://ngrok.com) to create a tunnel. ngrok will choose a unique URL for you. The server will stay open until you type **Ctrl-C**.
|
|
20
|
+
|
|
21
|
+
```console
|
|
22
|
+
$ shopify serve
|
|
23
|
+
✓ ngrok tunnel running at https://example.ngrok.io
|
|
24
|
+
✓ writing .env file...
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Install your app on your development store
|
|
28
|
+
|
|
29
|
+
With the server running, open a new terminal window and run `shopify open` to open your app in your browser and install it on a development store.
|
|
30
|
+
|
|
31
|
+
```console
|
|
32
|
+
$ shopify open
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
For more information, consult the [Node.js project command reference]({{ site.baseurl }}{% link app/node/commands/index.md %}).
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Rails app project command reference
|
|
3
|
+
section: rails
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## `deploy`
|
|
7
|
+
|
|
8
|
+
Deploy the current Rails project to a hosting service. Currently, the only option is [Heroku](https://www.heroku.com).
|
|
9
|
+
|
|
10
|
+
```console
|
|
11
|
+
$ shopify deploy heroku
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## `generate`
|
|
15
|
+
|
|
16
|
+
Generate boilerplate code inside your app project. Rails projects support generating new webhooks.
|
|
17
|
+
|
|
18
|
+
```console
|
|
19
|
+
$ shopify generate webhook
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## `open`
|
|
23
|
+
|
|
24
|
+
Open your local development app in your default browser.
|
|
25
|
+
|
|
26
|
+
```console
|
|
27
|
+
$ shopify open
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## `populate`
|
|
31
|
+
|
|
32
|
+
Add example data to your development store. This is useful for testing your app’s behavior. You can create the following types of example store records:
|
|
33
|
+
|
|
34
|
+
- Products
|
|
35
|
+
- Customers
|
|
36
|
+
- Orders
|
|
37
|
+
|
|
38
|
+
```console
|
|
39
|
+
$ shopify populate products
|
|
40
|
+
$ shopify populate customers
|
|
41
|
+
$ shopify populate draftorders
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
By default, the `populate` command adds 5 records. Use the `--count` option to specify a different number:
|
|
45
|
+
|
|
46
|
+
```console
|
|
47
|
+
$ shopify populate products --count 10
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## `serve`
|
|
51
|
+
|
|
52
|
+
Start a local development server for your project, as well as a public [ngrok](https://ngrok.com/) tunnel to your localhost.
|
|
53
|
+
|
|
54
|
+
```console
|
|
55
|
+
$ shopify serve
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## `tunnel`
|
|
59
|
+
|
|
60
|
+
Control an HTTP tunnel to your local development app using [ngrok](https://ngrok.com). With the `tunnel` command you can authenticate with ngrok and start or stop the tunnel. (Note that the `serve` command will automatically run `tunnel start` for you.)
|
|
61
|
+
|
|
62
|
+
To authenticate with ngrok, you need an authentication token. You can find it in [your ngrok dashboard](https://dashboard.ngrok.com/auth/your-authtoken). Copy your token and use it with the `tunnel auth` command:
|
|
63
|
+
|
|
64
|
+
```console
|
|
65
|
+
$ shopify tunnel auth <token>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
This will write your ngrok auth token to `~/.ngrok2/ngrok.yml`. To learn more about ngrok configuration, [consult ngrok’s documentation](https://ngrok.com/docs#config).
|
|
69
|
+
|
|
70
|
+
To start an ngrok tunnel to your app in your localhost development environment:
|
|
71
|
+
|
|
72
|
+
```console
|
|
73
|
+
$ shopify tunnel start
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
To stop the running ngrok tunnel:
|
|
77
|
+
|
|
78
|
+
```console
|
|
79
|
+
$ shopify tunnel stop
|
|
80
|
+
```
|