shopify-cli 1.5.0 → 1.6.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 +4 -4
- data/.github/PULL_REQUEST_TEMPLATE.md +1 -0
- data/.travis.yml +1 -0
- data/CHANGELOG.md +9 -0
- data/README.md +39 -7
- data/Rakefile +2 -0
- data/dev.yml +2 -2
- data/docs/_config.yml +1 -18
- data/docs/app/node/commands/index.md +2 -80
- data/docs/app/node/index.md +2 -33
- data/docs/app/rails/commands/index.md +2 -78
- data/docs/app/rails/index.md +2 -34
- data/docs/core/index.md +2 -84
- data/docs/getting-started/index.md +2 -25
- data/docs/getting-started/install/index.md +1 -118
- data/docs/getting-started/migrate/index.md +2 -94
- data/docs/getting-started/uninstall/index.md +2 -35
- data/docs/getting-started/upgrade/index.md +2 -39
- data/docs/help/start-app/index.md +2 -4
- data/docs/index.md +2 -24
- data/install.sh +1 -1
- data/lib/project_types/extension/cli.rb +19 -10
- data/lib/project_types/extension/commands/extension_command.rb +2 -2
- data/lib/project_types/extension/features/argo.rb +117 -0
- data/lib/project_types/extension/forms/create.rb +2 -2
- data/lib/project_types/extension/models/specification.rb +35 -0
- data/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +19 -0
- data/lib/project_types/extension/models/specification_handlers/default.rb +67 -0
- data/lib/project_types/extension/models/specifications.rb +77 -0
- data/lib/project_types/extension/tasks/configure_features.rb +52 -0
- data/lib/project_types/extension/tasks/fetch_specifications.rb +38 -0
- data/lib/project_types/node/commands/create.rb +3 -1
- data/lib/project_types/node/commands/generate.rb +2 -11
- data/lib/project_types/node/messages/messages.rb +9 -44
- data/lib/project_types/rails/commands/create.rb +8 -9
- data/lib/project_types/rails/forms/create.rb +1 -1
- data/lib/project_types/rails/gem.rb +1 -1
- data/lib/project_types/rails/messages/messages.rb +1 -1
- data/lib/project_types/script/cli.rb +7 -4
- data/lib/project_types/script/commands/create.rb +6 -4
- data/lib/project_types/script/commands/push.rb +5 -13
- data/lib/project_types/script/config/extension_points.yml +9 -5
- data/lib/project_types/script/errors.rb +17 -0
- data/lib/project_types/script/forms/create.rb +26 -2
- data/lib/project_types/script/graphql/app_script_update_or_create.graphql +10 -1
- data/lib/project_types/script/layers/application/build_script.rb +9 -4
- data/lib/project_types/script/layers/application/create_script.rb +12 -10
- data/lib/project_types/script/layers/application/extension_points.rb +24 -0
- data/lib/project_types/script/layers/application/push_script.rb +18 -16
- data/lib/project_types/script/layers/domain/errors.rb +4 -0
- data/lib/project_types/script/layers/domain/extension_point.rb +62 -6
- data/lib/project_types/script/layers/domain/metadata.rb +55 -0
- data/lib/project_types/script/layers/domain/push_package.rb +25 -6
- data/lib/project_types/script/layers/infrastructure/assemblyscript_project_creator.rb +6 -6
- data/lib/project_types/script/layers/infrastructure/assemblyscript_task_runner.rb +16 -6
- data/lib/project_types/script/layers/infrastructure/extension_point_repository.rb +10 -4
- data/lib/project_types/script/layers/infrastructure/project_creator.rb +2 -1
- data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +25 -13
- data/lib/project_types/script/layers/infrastructure/rust_project_creator.rb +72 -0
- data/lib/project_types/script/layers/infrastructure/rust_task_runner.rb +59 -0
- data/lib/project_types/script/layers/infrastructure/script_service.rb +7 -1
- data/lib/project_types/script/layers/infrastructure/task_runner.rb +4 -3
- data/lib/project_types/script/messages/messages.rb +39 -8
- data/lib/project_types/script/script_project.rb +25 -16
- data/lib/project_types/script/ui/error_handler.rb +34 -1
- data/lib/project_types/theme/cli.rb +40 -0
- data/lib/project_types/theme/commands/connect.rb +54 -0
- data/lib/project_types/theme/commands/create.rb +48 -0
- data/lib/project_types/theme/commands/deploy.rb +38 -0
- data/lib/project_types/theme/commands/generate.rb +20 -0
- data/lib/project_types/theme/commands/generate/env.rb +79 -0
- data/lib/project_types/theme/commands/push.rb +55 -0
- data/lib/project_types/theme/commands/serve.rb +31 -0
- data/lib/project_types/theme/forms/connect.rb +34 -0
- data/lib/project_types/theme/forms/create.rb +22 -0
- data/lib/project_types/theme/messages/messages.rb +147 -0
- data/lib/project_types/theme/tasks/ensure_themekit_installed.rb +78 -0
- data/lib/project_types/theme/themekit.rb +113 -0
- data/lib/shopify-cli/admin_api.rb +42 -2
- data/lib/shopify-cli/api.rb +27 -24
- data/lib/shopify-cli/commands/system.rb +1 -1
- data/lib/shopify-cli/context.rb +23 -2
- data/lib/shopify-cli/feature.rb +0 -2
- data/lib/shopify-cli/http_request.rb +20 -8
- data/lib/shopify-cli/messages/messages.rb +6 -3
- data/lib/shopify-cli/method_object.rb +104 -0
- data/lib/shopify-cli/partners_api.rb +8 -2
- data/lib/shopify-cli/project_type.rb +1 -1
- data/lib/shopify-cli/resolve_constant.rb +25 -0
- data/lib/shopify-cli/result.rb +432 -0
- data/lib/shopify-cli/shopifolk.rb +3 -2
- data/lib/shopify-cli/tasks/select_org_and_shop.rb +6 -5
- data/lib/shopify-cli/tunnel.rb +7 -1
- data/lib/shopify-cli/version.rb +1 -1
- data/lib/shopify_cli.rb +4 -1
- data/shopify.fish +1 -1
- data/shopify.sh +1 -1
- data/vendor/deps/cli-kit/REVISION +1 -1
- data/vendor/deps/cli-kit/lib/cli/kit/logger.rb +2 -2
- data/vendor/deps/cli-kit/lib/cli/kit/system.rb +3 -3
- data/vendor/deps/cli-ui/REVISION +1 -1
- data/vendor/deps/cli-ui/lib/cli/ui.rb +26 -22
- data/vendor/deps/cli-ui/lib/cli/ui/ansi.rb +4 -6
- data/vendor/deps/cli-ui/lib/cli/ui/frame.rb +3 -3
- data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_stack.rb +8 -9
- data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style.rb +1 -1
- data/vendor/deps/cli-ui/lib/cli/ui/glyph.rb +1 -0
- data/vendor/deps/cli-ui/lib/cli/ui/printer.rb +15 -3
- data/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +4 -11
- data/vendor/deps/cli-ui/lib/cli/ui/spinner.rb +3 -5
- data/vendor/deps/cli-ui/lib/cli/ui/terminal.rb +10 -10
- data/vendor/deps/cli-ui/lib/cli/ui/version.rb +1 -1
- data/vendor/deps/cli-ui/lib/cli/ui/wrap.rb +56 -0
- data/vendor/deps/webrick/.gitignore +9 -0
- data/vendor/deps/webrick/Gemfile +3 -0
- data/vendor/deps/webrick/LICENSE.txt +22 -0
- data/vendor/deps/webrick/README.md +61 -0
- data/vendor/deps/webrick/Rakefile +10 -0
- data/vendor/deps/webrick/lib/webrick.rb +232 -0
- data/vendor/deps/webrick/lib/webrick/accesslog.rb +157 -0
- data/vendor/deps/webrick/lib/webrick/cgi.rb +313 -0
- data/vendor/deps/webrick/lib/webrick/compat.rb +36 -0
- data/vendor/deps/webrick/lib/webrick/config.rb +158 -0
- data/vendor/deps/webrick/lib/webrick/cookie.rb +172 -0
- data/vendor/deps/webrick/lib/webrick/htmlutils.rb +30 -0
- data/vendor/deps/webrick/lib/webrick/httpauth.rb +96 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/authenticator.rb +117 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/basicauth.rb +116 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/digestauth.rb +395 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/htdigest.rb +132 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/htgroup.rb +97 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/htpasswd.rb +158 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/userdb.rb +53 -0
- data/vendor/deps/webrick/lib/webrick/httpproxy.rb +354 -0
- data/vendor/deps/webrick/lib/webrick/httprequest.rb +636 -0
- data/vendor/deps/webrick/lib/webrick/httpresponse.rb +564 -0
- data/vendor/deps/webrick/lib/webrick/https.rb +152 -0
- data/vendor/deps/webrick/lib/webrick/httpserver.rb +294 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet.rb +23 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/abstract.rb +152 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/cgi_runner.rb +47 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/cgihandler.rb +126 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/erbhandler.rb +88 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/filehandler.rb +552 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/prochandler.rb +47 -0
- data/vendor/deps/webrick/lib/webrick/httpstatus.rb +194 -0
- data/vendor/deps/webrick/lib/webrick/httputils.rb +512 -0
- data/vendor/deps/webrick/lib/webrick/httpversion.rb +76 -0
- data/vendor/deps/webrick/lib/webrick/log.rb +156 -0
- data/vendor/deps/webrick/lib/webrick/server.rb +381 -0
- data/vendor/deps/webrick/lib/webrick/ssl.rb +215 -0
- data/vendor/deps/webrick/lib/webrick/utils.rb +265 -0
- data/vendor/deps/webrick/lib/webrick/version.rb +18 -0
- data/vendor/deps/webrick/webrick.gemspec +74 -0
- metadata +70 -26
- data/docs/Gemfile +0 -5
- data/docs/Gemfile.lock +0 -258
- data/docs/_data/nav.yml +0 -35
- data/docs/_includes/footer.html +0 -15
- data/docs/_includes/head.html +0 -19
- data/docs/_includes/sidebar_nav.html +0 -22
- data/docs/_includes/toc.html +0 -112
- data/docs/_layouts/default.html +0 -79
- data/docs/css/docs.css +0 -157
- data/docs/images/header.png +0 -0
- data/docs/installing-ruby.md +0 -28
- data/lib/project_types/extension/features/argo/admin.rb +0 -20
- data/lib/project_types/extension/features/argo/base.rb +0 -129
- data/lib/project_types/extension/features/argo/checkout.rb +0 -20
- data/lib/project_types/extension/models/type.rb +0 -81
- data/lib/project_types/extension/models/types/checkout_post_purchase.rb +0 -23
- data/lib/project_types/extension/models/types/product_subscription.rb +0 -24
- data/lib/project_types/node/commands/generate/billing.rb +0 -39
- data/lib/project_types/node/commands/generate/page.rb +0 -59
- data/lib/project_types/node/commands/generate/webhook.rb +0 -37
- data/lib/project_types/script/layers/domain/script.rb +0 -18
- data/lib/project_types/script/layers/infrastructure/script_repository.rb +0 -47
- data/lib/project_types/script/templates/ts/as-pect.config.js +0 -27
- data/lib/project_types/script/templates/ts/as-pect.d.ts +0 -1
|
@@ -25,7 +25,8 @@ module ShopifyCli
|
|
|
25
25
|
# ShopifyCli::Shopifolk.check
|
|
26
26
|
#
|
|
27
27
|
def check
|
|
28
|
-
return false unless
|
|
28
|
+
return false unless ShopifyCli::Config.get_bool('shopifolk-beta', 'enabled')
|
|
29
|
+
|
|
29
30
|
ShopifyCli::Shopifolk.new.shopifolk?
|
|
30
31
|
end
|
|
31
32
|
|
|
@@ -51,7 +52,7 @@ module ShopifyCli
|
|
|
51
52
|
# a valid google cloud config file with email ending in "@shopify.com"
|
|
52
53
|
#
|
|
53
54
|
def shopifolk?
|
|
54
|
-
return false unless
|
|
55
|
+
return false unless ShopifyCli::Config.get_bool('shopifolk-beta', 'enabled')
|
|
55
56
|
return true if Feature.enabled?(FEATURE_NAME)
|
|
56
57
|
|
|
57
58
|
if shopifolk_by_gcloud? && shopifolk_by_dev?
|
|
@@ -12,7 +12,9 @@ module ShopifyCli
|
|
|
12
12
|
Shopifolk.act_as_shopify_organization
|
|
13
13
|
end
|
|
14
14
|
org = get_organization(organization_id)
|
|
15
|
-
|
|
15
|
+
unless Shopifolk.acting_as_shopify_organization?
|
|
16
|
+
shop_domain ||= get_shop_domain(org)
|
|
17
|
+
end
|
|
16
18
|
ShopifyCli::Core::Monorail.metadata[:organization_id] = org["id"].to_i
|
|
17
19
|
response(org["id"].to_i, shop_domain)
|
|
18
20
|
end
|
|
@@ -20,10 +22,9 @@ module ShopifyCli
|
|
|
20
22
|
private
|
|
21
23
|
|
|
22
24
|
def response(organization_id, shop_domain)
|
|
23
|
-
{
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
25
|
+
result = { organization_id: organization_id }
|
|
26
|
+
result[:shop_domain] = shop_domain if shop_domain
|
|
27
|
+
result
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
def organizations
|
data/lib/shopify-cli/tunnel.rb
CHANGED
|
@@ -123,7 +123,8 @@ module ShopifyCli
|
|
|
123
123
|
private
|
|
124
124
|
|
|
125
125
|
def install(ctx)
|
|
126
|
-
|
|
126
|
+
ngrok = "ngrok#{ctx.executable_file_extension}"
|
|
127
|
+
return if File.exist?(File.join(ShopifyCli.cache_dir, ngrok))
|
|
127
128
|
check_prereq_command(ctx, 'curl')
|
|
128
129
|
check_prereq_command(ctx, ctx.linux? ? 'unzip' : 'tar')
|
|
129
130
|
spinner = CLI::UI::SpinGroup.new
|
|
@@ -141,6 +142,11 @@ module ShopifyCli
|
|
|
141
142
|
ctx.rm(zip_dest)
|
|
142
143
|
end
|
|
143
144
|
spinner.wait
|
|
145
|
+
|
|
146
|
+
# final check to see if ngrok is accessible
|
|
147
|
+
unless File.exist?(File.join(ShopifyCli.cache_dir, ngrok))
|
|
148
|
+
ctx.abort(ctx.message('core.tunnel.error.ngrok', ngrok, ShopifyCli.cache_dir))
|
|
149
|
+
end
|
|
144
150
|
end
|
|
145
151
|
|
|
146
152
|
def fetch_url(ctx, log_path)
|
data/lib/shopify-cli/version.rb
CHANGED
data/lib/shopify_cli.rb
CHANGED
|
@@ -15,7 +15,7 @@ ENV['PATH'] = ENV['PATH'].split(':').select { |p| p.start_with?('/', '~') }.join
|
|
|
15
15
|
vendor_path = File.expand_path("../../vendor/lib", __FILE__)
|
|
16
16
|
$LOAD_PATH.unshift(vendor_path) unless $LOAD_PATH.include?(vendor_path)
|
|
17
17
|
|
|
18
|
-
deps = %w(cli-ui cli-kit smart_properties)
|
|
18
|
+
deps = %w(cli-ui cli-kit smart_properties webrick)
|
|
19
19
|
deps.each do |dep|
|
|
20
20
|
vendor_path = File.expand_path("../../vendor/deps/#{dep}/lib", __FILE__)
|
|
21
21
|
$LOAD_PATH.unshift(vendor_path) unless $LOAD_PATH.include?(vendor_path)
|
|
@@ -108,6 +108,7 @@ module ShopifyCli
|
|
|
108
108
|
autoload :Heroku, 'shopify-cli/heroku'
|
|
109
109
|
autoload :JsDeps, 'shopify-cli/js_deps'
|
|
110
110
|
autoload :JsSystem, 'shopify-cli/js_system'
|
|
111
|
+
autoload :MethodObject, 'shopify-cli/method_object'
|
|
111
112
|
autoload :Log, 'shopify-cli/log'
|
|
112
113
|
autoload :OAuth, 'shopify-cli/oauth'
|
|
113
114
|
autoload :Options, 'shopify-cli/options'
|
|
@@ -115,7 +116,9 @@ module ShopifyCli
|
|
|
115
116
|
autoload :ProcessSupervision, 'shopify-cli/process_supervision'
|
|
116
117
|
autoload :Project, 'shopify-cli/project'
|
|
117
118
|
autoload :ProjectType, 'shopify-cli/project_type'
|
|
119
|
+
autoload :ResolveConstant, 'shopify-cli/resolve_constant'
|
|
118
120
|
autoload :Resources, 'shopify-cli/resources'
|
|
121
|
+
autoload :Result, 'shopify-cli/result'
|
|
119
122
|
autoload :Shopifolk, 'shopify-cli/shopifolk'
|
|
120
123
|
autoload :SubCommand, 'shopify-cli/sub_command'
|
|
121
124
|
autoload :Task, 'shopify-cli/task'
|
data/shopify.fish
CHANGED
|
@@ -7,6 +7,6 @@ if [ $status != "0" ]
|
|
|
7
7
|
echo "This version of Shopify App CLI is no longer supported. You’ll need to migrate to the new CLI version to continue.
|
|
8
8
|
|
|
9
9
|
Please visit this page for complete instructions:
|
|
10
|
-
https://shopify.
|
|
10
|
+
https://shopify.dev/tools/cli/troubleshooting#migrate-from-a-legacy-version
|
|
11
11
|
"
|
|
12
12
|
end
|
data/shopify.sh
CHANGED
|
@@ -6,6 +6,6 @@ if [ "$?" != "0" ]; then
|
|
|
6
6
|
echo "This version of Shopify App CLI is no longer supported. You’ll need to migrate to the new CLI version to continue.
|
|
7
7
|
|
|
8
8
|
Please visit this page for complete instructions:
|
|
9
|
-
https://shopify.
|
|
9
|
+
https://shopify.dev/tools/cli/troubleshooting#migrate-from-a-legacy-version
|
|
10
10
|
"
|
|
11
11
|
fi
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
6eadd6c7f7fc9217008c2cfb0bc3101cb6cf3b41
|
|
@@ -61,7 +61,7 @@ module CLI
|
|
|
61
61
|
#
|
|
62
62
|
# @param msg [String] the message to log
|
|
63
63
|
def debug(msg)
|
|
64
|
-
$stdout.puts CLI::UI.fmt(msg) if
|
|
64
|
+
$stdout.puts CLI::UI.fmt(msg) if debug?
|
|
65
65
|
@debug_logger.debug(format_debug(msg))
|
|
66
66
|
end
|
|
67
67
|
|
|
@@ -73,7 +73,7 @@ module CLI
|
|
|
73
73
|
"[#{CLI::UI::StdoutRouter.current_id[:id]}] #{msg}"
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
def
|
|
76
|
+
def debug?
|
|
77
77
|
val = ENV[@env_debug_name]
|
|
78
78
|
val && val != '0' && val != ''
|
|
79
79
|
end
|
|
@@ -94,11 +94,11 @@ module CLI
|
|
|
94
94
|
delegate_open3(*a, sudo: sudo, env: env, method: :popen2, **kwargs, &block)
|
|
95
95
|
end
|
|
96
96
|
|
|
97
|
-
def popen2e(*a, sudo: false, env: ENV, **kwargs)
|
|
97
|
+
def popen2e(*a, sudo: false, env: ENV, **kwargs, &block)
|
|
98
98
|
delegate_open3(*a, sudo: sudo, env: env, method: :popen2e, **kwargs, &block)
|
|
99
99
|
end
|
|
100
100
|
|
|
101
|
-
def popen3(*a, sudo: false, env: ENV, **kwargs)
|
|
101
|
+
def popen3(*a, sudo: false, env: ENV, **kwargs, &block)
|
|
102
102
|
delegate_open3(*a, sudo: sudo, env: env, method: :popen3, **kwargs, &block)
|
|
103
103
|
end
|
|
104
104
|
|
|
@@ -112,7 +112,7 @@ module CLI
|
|
|
112
112
|
# - `**kwargs`: additional keyword arguments to pass to Process.spawn
|
|
113
113
|
#
|
|
114
114
|
# #### Returns
|
|
115
|
-
# - `status`:
|
|
115
|
+
# - `status`: The `Process:Status` result for the command execution
|
|
116
116
|
#
|
|
117
117
|
# #### Usage
|
|
118
118
|
# `stat = CLI::Kit::System.system('ls', 'a_folder')`
|
data/vendor/deps/cli-ui/REVISION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
168ce68b31d8436b2b222d6f063e5c7225785bd4
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
module CLI
|
|
2
2
|
module UI
|
|
3
|
-
autoload :ANSI,
|
|
4
|
-
autoload :Glyph,
|
|
5
|
-
autoload :Color,
|
|
6
|
-
autoload :Frame,
|
|
7
|
-
autoload :OS,
|
|
8
|
-
autoload :Printer,
|
|
9
|
-
autoload :Progress,
|
|
10
|
-
autoload :Prompt,
|
|
11
|
-
autoload :Terminal,
|
|
12
|
-
autoload :Truncater,
|
|
13
|
-
autoload :Formatter,
|
|
14
|
-
autoload :Spinner,
|
|
15
|
-
autoload :Widgets,
|
|
3
|
+
autoload :ANSI, 'cli/ui/ansi'
|
|
4
|
+
autoload :Glyph, 'cli/ui/glyph'
|
|
5
|
+
autoload :Color, 'cli/ui/color'
|
|
6
|
+
autoload :Frame, 'cli/ui/frame'
|
|
7
|
+
autoload :OS, 'cli/ui/os'
|
|
8
|
+
autoload :Printer, 'cli/ui/printer'
|
|
9
|
+
autoload :Progress, 'cli/ui/progress'
|
|
10
|
+
autoload :Prompt, 'cli/ui/prompt'
|
|
11
|
+
autoload :Terminal, 'cli/ui/terminal'
|
|
12
|
+
autoload :Truncater, 'cli/ui/truncater'
|
|
13
|
+
autoload :Formatter, 'cli/ui/formatter'
|
|
14
|
+
autoload :Spinner, 'cli/ui/spinner'
|
|
15
|
+
autoload :Widgets, 'cli/ui/widgets'
|
|
16
|
+
autoload :Wrap, 'cli/ui/wrap'
|
|
16
17
|
|
|
17
18
|
# Convenience accessor to +CLI::UI::Spinner::SpinGroup+
|
|
18
19
|
SpinGroup = Spinner::SpinGroup
|
|
@@ -29,7 +30,7 @@ module CLI
|
|
|
29
30
|
end
|
|
30
31
|
|
|
31
32
|
# Color resolution using +CLI::UI::Color.lookup+
|
|
32
|
-
# Will lookup using +Color.lookup+
|
|
33
|
+
# Will lookup using +Color.lookup+ unless it's already a CLI::UI::Color (or nil)
|
|
33
34
|
#
|
|
34
35
|
# ==== Attributes
|
|
35
36
|
#
|
|
@@ -37,26 +38,25 @@ module CLI
|
|
|
37
38
|
#
|
|
38
39
|
def self.resolve_color(input)
|
|
39
40
|
case input
|
|
40
|
-
when
|
|
41
|
-
CLI::UI::Color.lookup(input)
|
|
42
|
-
else
|
|
41
|
+
when CLI::UI::Color, nil
|
|
43
42
|
input
|
|
43
|
+
else
|
|
44
|
+
CLI::UI::Color.lookup(input)
|
|
44
45
|
end
|
|
45
46
|
end
|
|
46
47
|
|
|
47
48
|
# Frame style resolution using +CLI::UI::Frame::FrameStyle.lookup+.
|
|
48
|
-
# Will lookup using +FrameStyle.lookup+
|
|
49
|
-
# we assume it's a valid FrameStyle
|
|
49
|
+
# Will lookup using +FrameStyle.lookup+ unless it's already a CLI::UI::Frame::FrameStyle(or nil)
|
|
50
50
|
#
|
|
51
51
|
# ==== Attributes
|
|
52
52
|
#
|
|
53
53
|
# * +input+ - frame style to resolve
|
|
54
54
|
def self.resolve_style(input)
|
|
55
55
|
case input
|
|
56
|
-
when
|
|
57
|
-
CLI::UI::Frame::FrameStyle.lookup(input)
|
|
58
|
-
else
|
|
56
|
+
when CLI::UI::Frame::FrameStyle, nil
|
|
59
57
|
input
|
|
58
|
+
else
|
|
59
|
+
CLI::UI::Frame::FrameStyle.lookup(input)
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
|
|
@@ -114,6 +114,10 @@ module CLI
|
|
|
114
114
|
CLI::UI::Formatter.new(input).format(enable_color: enable_color)
|
|
115
115
|
end
|
|
116
116
|
|
|
117
|
+
def self.wrap(input)
|
|
118
|
+
CLI::UI::Wrap.new(input).wrap
|
|
119
|
+
end
|
|
120
|
+
|
|
117
121
|
# Convenience Method for +CLI::UI::Printer.puts+
|
|
118
122
|
#
|
|
119
123
|
# ==== Attributes
|
|
@@ -21,6 +21,8 @@ module CLI
|
|
|
21
21
|
when 0x200d # zero-width joiner
|
|
22
22
|
zwj = true
|
|
23
23
|
acc
|
|
24
|
+
when "\n"
|
|
25
|
+
acc
|
|
24
26
|
else
|
|
25
27
|
acc + 1
|
|
26
28
|
end
|
|
@@ -138,17 +140,13 @@ module CLI
|
|
|
138
140
|
# Move to the next line
|
|
139
141
|
#
|
|
140
142
|
def self.next_line
|
|
141
|
-
|
|
142
|
-
cmd += control('1', 'D') if CLI::UI::OS.current.shift_cursor_on_line_reset?
|
|
143
|
-
cmd
|
|
143
|
+
cursor_down + cursor_horizontal_absolute
|
|
144
144
|
end
|
|
145
145
|
|
|
146
146
|
# Move to the previous line
|
|
147
147
|
#
|
|
148
148
|
def self.previous_line
|
|
149
|
-
|
|
150
|
-
cmd += control('1', 'D') if CLI::UI::OS.current.shift_cursor_on_line_reset?
|
|
151
|
-
cmd
|
|
149
|
+
cursor_up + cursor_horizontal_absolute
|
|
152
150
|
end
|
|
153
151
|
|
|
154
152
|
def self.clear_to_end_of_line
|
|
@@ -90,7 +90,7 @@ module CLI
|
|
|
90
90
|
|
|
91
91
|
t_start = Time.now
|
|
92
92
|
CLI::UI.raw do
|
|
93
|
-
print
|
|
93
|
+
print(prefix.chop)
|
|
94
94
|
puts frame_style.open(text, color: color)
|
|
95
95
|
end
|
|
96
96
|
FrameStack.push(color: color, style: frame_style)
|
|
@@ -153,7 +153,7 @@ module CLI
|
|
|
153
153
|
frame_style = CLI::UI.resolve_style(frame_style) || fs_item.frame_style
|
|
154
154
|
|
|
155
155
|
CLI::UI.raw do
|
|
156
|
-
print
|
|
156
|
+
print(prefix.chop)
|
|
157
157
|
puts frame_style.divider(text, color: color)
|
|
158
158
|
end
|
|
159
159
|
|
|
@@ -197,7 +197,7 @@ module CLI
|
|
|
197
197
|
end
|
|
198
198
|
|
|
199
199
|
CLI::UI.raw do
|
|
200
|
-
print
|
|
200
|
+
print(prefix.chop)
|
|
201
201
|
puts frame_style.close(text, color: color, **kwargs)
|
|
202
202
|
end
|
|
203
203
|
end
|
|
@@ -5,13 +5,12 @@ module CLI
|
|
|
5
5
|
COLOR_ENVVAR = 'CLI_FRAME_STACK'
|
|
6
6
|
STYLE_ENVVAR = 'CLI_STYLE_STACK'
|
|
7
7
|
|
|
8
|
-
StackItem
|
|
9
|
-
|
|
10
|
-
@color ||= CLI::UI.resolve_color(color_name)
|
|
11
|
-
end
|
|
8
|
+
class StackItem
|
|
9
|
+
attr_reader :color, :frame_style
|
|
12
10
|
|
|
13
|
-
def
|
|
14
|
-
@
|
|
11
|
+
def initialize(color_name, style_name)
|
|
12
|
+
@color = CLI::UI.resolve_color(color_name)
|
|
13
|
+
@frame_style = CLI::UI.resolve_style(style_name)
|
|
15
14
|
end
|
|
16
15
|
end
|
|
17
16
|
|
|
@@ -55,7 +54,7 @@ module CLI
|
|
|
55
54
|
end
|
|
56
55
|
end
|
|
57
56
|
|
|
58
|
-
item ||= StackItem.new(color
|
|
57
|
+
item ||= StackItem.new(color, style)
|
|
59
58
|
|
|
60
59
|
curr = items
|
|
61
60
|
curr << item
|
|
@@ -85,8 +84,8 @@ module CLI
|
|
|
85
84
|
styles = []
|
|
86
85
|
|
|
87
86
|
items.each do |item|
|
|
88
|
-
colors << item.
|
|
89
|
-
styles << item.
|
|
87
|
+
colors << item.color.name
|
|
88
|
+
styles << item.frame_style.name
|
|
90
89
|
end
|
|
91
90
|
|
|
92
91
|
ENV[COLOR_ENVVAR] = colors.join(':')
|
|
@@ -39,7 +39,7 @@ module CLI
|
|
|
39
39
|
def message
|
|
40
40
|
keys = FrameStyle.loaded_styles.map(&:inspect).join(',')
|
|
41
41
|
"invalid frame style: #{@name.inspect}" \
|
|
42
|
-
"-- must be one of CLI::UI::Frame::FrameStyle.loaded_styles " \
|
|
42
|
+
" -- must be one of CLI::UI::Frame::FrameStyle.loaded_styles " \
|
|
43
43
|
"(#{keys})"
|
|
44
44
|
end
|
|
45
45
|
end
|
|
@@ -57,6 +57,7 @@ module CLI
|
|
|
57
57
|
BUG = new('b', 0x1f41b, '!', Color::WHITE) # Bug emoji (🐛)
|
|
58
58
|
CHEVRON = new('>', 0xbb, '»', Color::YELLOW) # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (»)
|
|
59
59
|
HOURGLASS = new('H', [0x231b, 0xfe0e], 'H', Color::BLUE) # HOURGLASS + VARIATION SELECTOR 15 (⌛︎)
|
|
60
|
+
WARNING = new('!', [0x26a0, 0xfe0f], '!', Color::YELLOW) # WARNING SIGN + VARIATION SELECTOR 16 (⚠️ )
|
|
60
61
|
|
|
61
62
|
# Looks up a glyph by name
|
|
62
63
|
#
|
|
@@ -18,6 +18,7 @@ module CLI
|
|
|
18
18
|
# * +:encoding+ - Force the output to be in a certain encoding. Defaults to UTF-8.
|
|
19
19
|
# * +:format+ - Whether to format the string using CLI::UI.fmt. Defaults to true.
|
|
20
20
|
# * +:graceful+ - Whether to gracefully ignore common I/O errors. Defaults to true.
|
|
21
|
+
# * +:wrap+ - Whether to wrap text at word boundaries to terminal width. Defaults to true.
|
|
21
22
|
#
|
|
22
23
|
# ==== Returns
|
|
23
24
|
# Returns whether the message was successfully printed,
|
|
@@ -25,11 +26,22 @@ module CLI
|
|
|
25
26
|
#
|
|
26
27
|
# ==== Example
|
|
27
28
|
#
|
|
28
|
-
# CLI::UI::Printer.puts('{x} Ouch',
|
|
29
|
-
#
|
|
30
|
-
def self.puts(
|
|
29
|
+
# CLI::UI::Printer.puts('{{x}} Ouch', to: $stderr)
|
|
30
|
+
#
|
|
31
|
+
def self.puts(
|
|
32
|
+
msg,
|
|
33
|
+
frame_color:
|
|
34
|
+
nil,
|
|
35
|
+
to:
|
|
36
|
+
$stdout,
|
|
37
|
+
encoding: Encoding::UTF_8,
|
|
38
|
+
format: true,
|
|
39
|
+
graceful: true,
|
|
40
|
+
wrap: true
|
|
41
|
+
)
|
|
31
42
|
msg = (+msg).force_encoding(encoding) if encoding
|
|
32
43
|
msg = CLI::UI.fmt(msg) if format
|
|
44
|
+
msg = CLI::UI.wrap(msg) if wrap
|
|
33
45
|
|
|
34
46
|
if frame_color
|
|
35
47
|
CLI::UI::Frame.with_frame_color_override(frame_color) { to.puts(msg) }
|
|
@@ -334,22 +334,15 @@ module CLI
|
|
|
334
334
|
end
|
|
335
335
|
|
|
336
336
|
def read_char
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
337
|
+
if $stdin.tty? && !ENV['TEST']
|
|
338
|
+
$stdin.getch # raw mode for tty
|
|
339
|
+
else
|
|
340
|
+
$stdin.getc
|
|
340
341
|
end
|
|
341
342
|
rescue IOError
|
|
342
343
|
"\e"
|
|
343
344
|
end
|
|
344
345
|
|
|
345
|
-
def raw_tty!
|
|
346
|
-
if ENV['TEST'] || !$stdin.tty?
|
|
347
|
-
yield
|
|
348
|
-
else
|
|
349
|
-
$stdin.raw { yield }
|
|
350
|
-
end
|
|
351
|
-
end
|
|
352
|
-
|
|
353
346
|
def presented_options(recalculate: false)
|
|
354
347
|
return @presented_options unless recalculate
|
|
355
348
|
|
|
@@ -12,11 +12,9 @@ module CLI
|
|
|
12
12
|
|
|
13
13
|
RUNES = CLI::UI::OS.current.supports_emoji? ? %w(⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏).freeze : %w(\\ | / - \\ | / -).freeze
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
GLYPHS = colors.zip(RUNES).map(&:join)
|
|
19
|
-
end
|
|
15
|
+
colors = [CLI::UI::Color::CYAN.code] * (RUNES.size / 2).ceil +
|
|
16
|
+
[CLI::UI::Color::MAGENTA.code] * (RUNES.size / 2).to_i
|
|
17
|
+
GLYPHS = colors.zip(RUNES).map(&:join)
|
|
20
18
|
|
|
21
19
|
class << self
|
|
22
20
|
attr_accessor(:index)
|