@shopify/cli-kit 3.45.0 → 3.46.0-pre.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.
Files changed (136) hide show
  1. package/assets/cli-ruby/Gemfile +0 -1
  2. package/assets/cli-ruby/Rakefile +0 -76
  3. package/assets/cli-ruby/lib/project_types/extension/cli.rb +5 -86
  4. package/assets/cli-ruby/lib/shopify_cli/admin_api.rb +0 -3
  5. package/assets/cli-ruby/lib/shopify_cli/command/sub_command.rb +1 -2
  6. package/assets/cli-ruby/lib/shopify_cli/command.rb +0 -7
  7. package/assets/cli-ruby/lib/shopify_cli/commands.rb +0 -15
  8. package/assets/cli-ruby/lib/shopify_cli/core.rb +0 -1
  9. package/assets/cli-ruby/lib/shopify_cli/identity_auth.rb +0 -1
  10. package/assets/cli-ruby/lib/shopify_cli/theme/dev_server/proxy.rb +9 -1
  11. package/assets/cli-ruby/lib/shopify_cli.rb +1 -10
  12. package/assets/cli-ruby/test/test_helpers.rb +0 -2
  13. package/dist/public/common/version.d.ts +1 -1
  14. package/dist/public/common/version.js +1 -1
  15. package/dist/public/common/version.js.map +1 -1
  16. package/dist/tsconfig.tsbuildinfo +1 -1
  17. package/package.json +1 -1
  18. package/assets/cli-ruby/lib/project_types/extension/commands/build.rb +0 -51
  19. package/assets/cli-ruby/lib/project_types/extension/commands/check.rb +0 -51
  20. package/assets/cli-ruby/lib/project_types/extension/commands/connect.rb +0 -35
  21. package/assets/cli-ruby/lib/project_types/extension/commands/create.rb +0 -100
  22. package/assets/cli-ruby/lib/project_types/extension/commands/info.rb +0 -86
  23. package/assets/cli-ruby/lib/project_types/extension/commands/push.rb +0 -112
  24. package/assets/cli-ruby/lib/project_types/extension/commands/register.rb +0 -67
  25. package/assets/cli-ruby/lib/project_types/extension/commands/tunnel.rb +0 -73
  26. package/assets/cli-ruby/lib/project_types/extension/forms/connect.rb +0 -42
  27. package/assets/cli-ruby/lib/project_types/extension/forms/create.rb +0 -49
  28. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_app.rb +0 -53
  29. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_name.rb +0 -48
  30. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_registration.rb +0 -55
  31. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_template.rb +0 -37
  32. package/assets/cli-ruby/lib/project_types/extension/forms/questions/ask_type.rb +0 -47
  33. package/assets/cli-ruby/lib/project_types/extension/models/development_server.rb +0 -77
  34. package/assets/cli-ruby/lib/project_types/extension/models/development_server_requirements.rb +0 -56
  35. package/assets/cli-ruby/lib/project_types/extension/models/npm_package.rb +0 -44
  36. package/assets/cli-ruby/lib/project_types/extension/models/product.rb +0 -12
  37. package/assets/cli-ruby/lib/project_types/extension/models/registration.rb +0 -20
  38. package/assets/cli-ruby/lib/project_types/extension/models/server_config/app.rb +0 -13
  39. package/assets/cli-ruby/lib/project_types/extension/models/server_config/base.rb +0 -31
  40. package/assets/cli-ruby/lib/project_types/extension/models/server_config/capabilities.rb +0 -11
  41. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development.rb +0 -33
  42. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_entries.rb +0 -38
  43. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_renderer.rb +0 -38
  44. package/assets/cli-ruby/lib/project_types/extension/models/server_config/development_resource.rb +0 -13
  45. package/assets/cli-ruby/lib/project_types/extension/models/server_config/extension.rb +0 -46
  46. package/assets/cli-ruby/lib/project_types/extension/models/server_config/root.rb +0 -21
  47. package/assets/cli-ruby/lib/project_types/extension/models/server_config/user.rb +0 -10
  48. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +0 -29
  49. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb +0 -170
  50. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension.rb +0 -58
  51. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension_utils/script_config.rb +0 -33
  52. package/assets/cli-ruby/lib/project_types/extension/models/specification_handlers/web_pixel_extension_utils/script_config_repository.rb +0 -75
  53. package/assets/cli-ruby/lib/project_types/extension/tasks/choose_next_available_port.rb +0 -36
  54. package/assets/cli-ruby/lib/project_types/extension/tasks/convert_server_config.rb +0 -85
  55. package/assets/cli-ruby/lib/project_types/extension/tasks/converters/app_converter.rb +0 -27
  56. package/assets/cli-ruby/lib/project_types/extension/tasks/converters/product_converter.rb +0 -21
  57. package/assets/cli-ruby/lib/project_types/extension/tasks/converters/registration_converter.rb +0 -28
  58. package/assets/cli-ruby/lib/project_types/extension/tasks/create_extension.rb +0 -31
  59. package/assets/cli-ruby/lib/project_types/extension/tasks/ensure_resource_url.rb +0 -39
  60. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/base.rb +0 -15
  61. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/build.rb +0 -30
  62. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/create.rb +0 -30
  63. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/outdated_extension_detection.rb +0 -57
  64. package/assets/cli-ruby/lib/project_types/extension/tasks/execute_commands/serve.rb +0 -36
  65. package/assets/cli-ruby/lib/project_types/extension/tasks/find_npm_packages.rb +0 -106
  66. package/assets/cli-ruby/lib/project_types/extension/tasks/find_package_from_json.rb +0 -37
  67. package/assets/cli-ruby/lib/project_types/extension/tasks/get_app.rb +0 -22
  68. package/assets/cli-ruby/lib/project_types/extension/tasks/get_apps.rb +0 -26
  69. package/assets/cli-ruby/lib/project_types/extension/tasks/get_extensions.rb +0 -33
  70. package/assets/cli-ruby/lib/project_types/extension/tasks/get_product.rb +0 -22
  71. package/assets/cli-ruby/lib/project_types/extension/tasks/merge_server_config.rb +0 -47
  72. package/assets/cli-ruby/lib/project_types/extension/tasks/update_draft.rb +0 -29
  73. package/assets/cli-ruby/lib/project_types/extension/tasks/user_errors.rb +0 -45
  74. package/assets/cli-ruby/lib/shopify_cli/admin_api/populate_resource_command.rb +0 -166
  75. package/assets/cli-ruby/lib/shopify_cli/admin_api/schema.rb +0 -35
  76. package/assets/cli-ruby/lib/shopify_cli/app_type_detector.rb +0 -36
  77. package/assets/cli-ruby/lib/shopify_cli/assets/post_auth_page/index.html.erb +0 -34
  78. package/assets/cli-ruby/lib/shopify_cli/assets/post_auth_page/style.css +0 -58
  79. package/assets/cli-ruby/lib/shopify_cli/changelog.rb +0 -148
  80. package/assets/cli-ruby/lib/shopify_cli/command/app_sub_command.rb +0 -26
  81. package/assets/cli-ruby/lib/shopify_cli/command_options/command_serve_options.rb +0 -53
  82. package/assets/cli-ruby/lib/shopify_cli/command_options.rb +0 -7
  83. package/assets/cli-ruby/lib/shopify_cli/commands/app/connect.rb +0 -22
  84. package/assets/cli-ruby/lib/shopify_cli/commands/app/create/node.rb +0 -40
  85. package/assets/cli-ruby/lib/shopify_cli/commands/app/create/php.rb +0 -37
  86. package/assets/cli-ruby/lib/shopify_cli/commands/app/create/rails.rb +0 -42
  87. package/assets/cli-ruby/lib/shopify_cli/commands/app/create.rb +0 -28
  88. package/assets/cli-ruby/lib/shopify_cli/commands/app/deploy.rb +0 -51
  89. package/assets/cli-ruby/lib/shopify_cli/commands/app/open.rb +0 -19
  90. package/assets/cli-ruby/lib/shopify_cli/commands/app/serve.rb +0 -51
  91. package/assets/cli-ruby/lib/shopify_cli/commands/app/tunnel.rb +0 -43
  92. package/assets/cli-ruby/lib/shopify_cli/commands/app.rb +0 -29
  93. package/assets/cli-ruby/lib/shopify_cli/commands/config.rb +0 -76
  94. package/assets/cli-ruby/lib/shopify_cli/commands/help.rb +0 -52
  95. package/assets/cli-ruby/lib/shopify_cli/commands/login.rb +0 -98
  96. package/assets/cli-ruby/lib/shopify_cli/commands/logout.rb +0 -50
  97. package/assets/cli-ruby/lib/shopify_cli/commands/populate/customer.rb +0 -25
  98. package/assets/cli-ruby/lib/shopify_cli/commands/populate/draft_order.rb +0 -28
  99. package/assets/cli-ruby/lib/shopify_cli/commands/populate/product.rb +0 -24
  100. package/assets/cli-ruby/lib/shopify_cli/commands/populate.rb +0 -23
  101. package/assets/cli-ruby/lib/shopify_cli/commands/reporting.rb +0 -38
  102. package/assets/cli-ruby/lib/shopify_cli/commands/store.rb +0 -15
  103. package/assets/cli-ruby/lib/shopify_cli/commands/switch.rb +0 -39
  104. package/assets/cli-ruby/lib/shopify_cli/commands/system.rb +0 -165
  105. package/assets/cli-ruby/lib/shopify_cli/commands/version.rb +0 -15
  106. package/assets/cli-ruby/lib/shopify_cli/commands/whoami.rb +0 -28
  107. package/assets/cli-ruby/lib/shopify_cli/connect.rb +0 -32
  108. package/assets/cli-ruby/lib/shopify_cli/core/help_resolver.rb +0 -20
  109. package/assets/cli-ruby/lib/shopify_cli/heroku.rb +0 -140
  110. package/assets/cli-ruby/lib/shopify_cli/identity_auth/servlet.rb +0 -44
  111. package/assets/cli-ruby/lib/shopify_cli/js_deps.rb +0 -110
  112. package/assets/cli-ruby/lib/shopify_cli/packager.rb +0 -108
  113. package/assets/cli-ruby/lib/shopify_cli/php_deps.rb +0 -102
  114. package/assets/cli-ruby/lib/shopify_cli/process_supervision.rb +0 -228
  115. package/assets/cli-ruby/lib/shopify_cli/project_commands.rb +0 -16
  116. package/assets/cli-ruby/lib/shopify_cli/release.rb +0 -197
  117. package/assets/cli-ruby/lib/shopify_cli/sed.rb +0 -19
  118. package/assets/cli-ruby/lib/shopify_cli/services/app/connect_service.rb +0 -25
  119. package/assets/cli-ruby/lib/shopify_cli/services/app/create/node_service.rb +0 -143
  120. package/assets/cli-ruby/lib/shopify_cli/services/app/create/php_service.rb +0 -147
  121. package/assets/cli-ruby/lib/shopify_cli/services/app/create/rails_service.rb +0 -239
  122. package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/node_service.rb +0 -101
  123. package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/php_service.rb +0 -135
  124. package/assets/cli-ruby/lib/shopify_cli/services/app/deploy/heroku/rails_service.rb +0 -120
  125. package/assets/cli-ruby/lib/shopify_cli/services/app/open_service.rb +0 -19
  126. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/node_service.rb +0 -19
  127. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/php_service.rb +0 -23
  128. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/rails_service.rb +0 -28
  129. package/assets/cli-ruby/lib/shopify_cli/services/app/serve/serve_service.rb +0 -57
  130. package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/auth_service.rb +0 -21
  131. package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/start_service.rb +0 -20
  132. package/assets/cli-ruby/lib/shopify_cli/services/app/tunnel/stop_service.rb +0 -20
  133. package/assets/cli-ruby/lib/shopify_cli/services/base_service.rb +0 -13
  134. package/assets/cli-ruby/lib/shopify_cli/services/reporting_service.rb +0 -16
  135. package/assets/cli-ruby/lib/shopify_cli/services.rb +0 -38
  136. package/assets/cli-ruby/lib/shopify_cli/tunnel.rb +0 -255
@@ -1,165 +0,0 @@
1
- require "shopify_cli"
2
- require "rbconfig"
3
-
4
- module ShopifyCLI
5
- module Commands
6
- class System < ShopifyCLI::Command
7
- hidden_feature(feature_set: :debug)
8
-
9
- def call(args, _name)
10
- show_all_details = false
11
- flag = args.shift
12
- if flag && flag != "all"
13
- @ctx.puts(@ctx.message("core.system.error.unknown_option", flag))
14
- @ctx.puts("\n" + self.class.help)
15
- return
16
- end
17
-
18
- show_all_details = true if flag == "all"
19
-
20
- display_environment if show_all_details
21
-
22
- display_cli_constants(show_all_details)
23
- display_shopify_store(show_all_details)
24
- display_cli_ruby(show_all_details)
25
- display_utility_commands(show_all_details)
26
- display_project_commands(show_all_details)
27
- display_shopify_staff_identity if show_all_details
28
- end
29
-
30
- def self.help
31
- ShopifyCLI::Context.message("core.system.help", ShopifyCLI::TOOL_NAME)
32
- end
33
-
34
- private
35
-
36
- def display_cli_constants(show_all_details)
37
- cli_constants = %w(ROOT)
38
- cli_constants_extra = %w(
39
- PROJECT_TYPES_DIR
40
- TEMP_DIR
41
- )
42
- cli_path_methods = [
43
- :cache_dir,
44
- :tool_config_path,
45
- :log_file,
46
- :debug_log_file,
47
- ]
48
-
49
- cli_constants += cli_constants_extra if show_all_details
50
-
51
- @ctx.puts(@ctx.message("core.system.header"))
52
- cli_constants.each do |s|
53
- @ctx.puts(" " + @ctx.message("core.system.const", s, ShopifyCLI.const_get(s.to_sym)) + "\n")
54
- end
55
-
56
- if show_all_details
57
- cli_path_methods.each do |m|
58
- @ctx.puts(" " + @ctx.message("core.system.const", m.upcase, ShopifyCLI.send(m)) + "\n")
59
- end
60
- end
61
- end
62
-
63
- def display_shopify_store(_show_all_details)
64
- shop = if ShopifyCLI::DB.exists?(:shop)
65
- ShopifyCLI::AdminAPI.get_shop_or_abort(@ctx)
66
- else
67
- @ctx.message("core.populate.error.no_shop", ShopifyCLI::TOOL_NAME)
68
- end
69
-
70
- @ctx.puts("\n" + @ctx.message("core.system.shop_header"))
71
- @ctx.puts(" " + shop)
72
- end
73
-
74
- def display_cli_ruby(_show_all_details)
75
- rbconfig_constants = %w(host RUBY_VERSION_NAME)
76
-
77
- @ctx.puts("\n" + @ctx.message("core.system.ruby_header", RbConfig.ruby))
78
- rbconfig_constants.each do |s|
79
- @ctx.puts(" " + @ctx.message("core.system.rb_config", RbConfig::CONFIG[s], s))
80
- end
81
- end
82
-
83
- def display_utility_commands(_show_all_details)
84
- commands = %w(git curl tar)
85
-
86
- @ctx.puts("\n" + @ctx.message("core.system.command_header"))
87
- commands.each do |s|
88
- cmd_path = @ctx.which(s)
89
-
90
- if !cmd_path.nil?
91
- @ctx.puts(" " + @ctx.message("core.system.command_with_path", s, cmd_path))
92
- else
93
- @ctx.puts(" " + @ctx.message("core.system.command_not_found", s))
94
- end
95
- end
96
- end
97
-
98
- def display_ngrok
99
- ngrok_location = File.join(ShopifyCLI.cache_dir, "ngrok#{@ctx.executable_file_extension}")
100
- if File.exist?(ngrok_location)
101
- @ctx.puts(" " + @ctx.message("core.system.ngrok_available", ngrok_location))
102
- else
103
- @ctx.puts(" " + @ctx.message("core.system.ngrok_not_available"))
104
- end
105
- end
106
-
107
- def display_project_commands(_show_all_details)
108
- case Project.current_project_type
109
- when :node
110
- display_project("Node.js", %w(npm node yarn))
111
- when :rails
112
- display_project("Rails", %w(gem rails rake ruby))
113
- end
114
- end
115
-
116
- def display_project(project_type, commands)
117
- @ctx.puts("\n" + @ctx.message("core.system.project.header", project_type))
118
- commands.each do |s|
119
- cmd_path = @ctx.which(s)
120
- if !cmd_path.nil?
121
- version_output, _ = @ctx.capture2e(s, "--version")
122
- version = version_output.match(/(\d+\.[^\s]+)/)[0]
123
- @ctx.puts(" " + @ctx.message("core.system.project.command_with_path", s, cmd_path.strip, version.strip))
124
- else
125
- @ctx.puts(" " + @ctx.message("core.system.project.command_not_found", s))
126
- end
127
- end
128
- display_ngrok
129
- display_project_environment
130
- end
131
-
132
- def display_project_environment
133
- @ctx.puts("\n " + @ctx.message("core.system.project.env_header"))
134
- if File.exist?("./.env")
135
- Project.current.env.to_h.each do |k, v|
136
- display_value = if v.nil? || v.strip == ""
137
- @ctx.message("core.system.project.env_not_set")
138
- else
139
- k.match(/^SHOPIFY_API/) ? "********" : v
140
- end
141
- @ctx.puts(" " + @ctx.message("core.system.project.env", k, display_value))
142
- end
143
- else
144
- @ctx.puts(" " + @ctx.message("core.system.project.no_env"))
145
- end
146
- end
147
-
148
- def display_environment
149
- @ctx.puts(@ctx.message("core.system.environment_header"))
150
- %w(TERM SHELL PATH USING_SHOPIFY_CLI LANG).each do |k|
151
- @ctx.puts(" " + @ctx.message("core.system.env", k, ENV[k])) unless ENV[k].nil?
152
- end
153
- @ctx.puts("")
154
- end
155
-
156
- def display_shopify_staff_identity
157
- is_shopifolk = ShopifyCLI::Shopifolk.check
158
- if is_shopifolk
159
- @ctx.puts("\n" + @ctx.message("core.system.identity_header"))
160
- @ctx.puts(" " + @ctx.message("core.system.identity_is_shopifolk"))
161
- end
162
- end
163
- end
164
- end
165
- end
@@ -1,15 +0,0 @@
1
- require "shopify_cli"
2
-
3
- module ShopifyCLI
4
- module Commands
5
- class Version < ShopifyCLI::Command
6
- def self.help
7
- ShopifyCLI::Context.message("core.version.help", ShopifyCLI::TOOL_NAME)
8
- end
9
-
10
- def call(_args, _name)
11
- @ctx.puts(ShopifyCLI::VERSION.to_s)
12
- end
13
- end
14
- end
15
- end
@@ -1,28 +0,0 @@
1
- require "shopify_cli"
2
-
3
- module ShopifyCLI
4
- module Commands
5
- class Whoami < ShopifyCLI::Command
6
- def call(_args, _name)
7
- shop = ShopifyCLI::DB.get(:shop)
8
- org_id = ShopifyCLI::DB.get(:organization_id)
9
- org = ShopifyCLI::PartnersAPI::Organizations.fetch(@ctx, id: org_id) unless org_id.nil?
10
-
11
- output = if shop.nil? && org.nil?
12
- @ctx.message("core.whoami.not_logged_in", ShopifyCLI::TOOL_NAME)
13
- elsif !shop.nil? && org.nil?
14
- @ctx.message("core.whoami.logged_in_shop_only", shop)
15
- elsif shop.nil? && !org.nil?
16
- @ctx.message("core.whoami.logged_in_partner_only", org["businessName"])
17
- else
18
- @ctx.message("core.whoami.logged_in_partner_and_shop", shop, org["businessName"])
19
- end
20
- @ctx.puts(output)
21
- end
22
-
23
- def self.help
24
- ShopifyCLI::Context.message("core.whoami.help", ShopifyCLI::TOOL_NAME)
25
- end
26
- end
27
- end
28
- end
@@ -1,32 +0,0 @@
1
- require "shopify_cli"
2
-
3
- module ShopifyCLI
4
- class Connect
5
- def initialize(ctx)
6
- @ctx = ctx
7
- end
8
-
9
- def default_connect(project_type)
10
- if Project.current&.env
11
- @ctx.puts(@ctx.message("core.connect.already_connected_warning"))
12
- end
13
- org = ShopifyCLI::Tasks::EnsureEnv.call(@ctx, regenerate: true)
14
- write_cli_yml(project_type, org["id"]) unless Project.has_current?
15
- api_key = Project.current(force_reload: true).env["api_key"]
16
- get_app(org["apps"], api_key).first["title"]
17
- end
18
-
19
- def write_cli_yml(project_type, org_id)
20
- ShopifyCLI::Project.write(
21
- @ctx,
22
- project_type: project_type,
23
- organization_id: org_id,
24
- )
25
- @ctx.done(@ctx.message("core.connect.cli_yml_saved"))
26
- end
27
-
28
- def get_app(apps, api_key)
29
- apps.select { |app| app["apiKey"] == api_key }
30
- end
31
- end
32
- end
@@ -1,20 +0,0 @@
1
- require "cli/kit"
2
-
3
- module ShopifyCLI
4
- module Core
5
- class HelpResolver < CLI::Kit::Resolver
6
- def call(args)
7
- args = args.dup
8
- return super(args) unless args.first
9
- if args.first.include?("-h") || args.first.include?("--help")
10
- help = Commands::Help
11
- help.ctx = Context.new
12
- help.call([], nil)
13
- raise ShopifyCLI::AbortSilent
14
- else
15
- super(args)
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,140 +0,0 @@
1
- module ShopifyCLI
2
- class Heroku
3
- DOWNLOAD_URLS = {
4
- linux: "https://cli-assets.heroku.com/heroku-linux-x64.tar.gz",
5
- mac: "https://cli-assets.heroku.com/heroku-darwin-x64.tar.gz",
6
- windows: "https://cli-assets.heroku.com/heroku-x64.exe",
7
- mac_m1: "https://cli-assets.heroku.com/heroku-darwin-x64.tar.gz",
8
- }
9
-
10
- def initialize(ctx)
11
- @ctx = ctx
12
- end
13
-
14
- def app
15
- return nil unless (app = git_remote)
16
- app = app.split("/").last
17
- app = app.split(".").first
18
- app
19
- end
20
-
21
- def authenticate
22
- result = @ctx.system(heroku_command, "login")
23
- @ctx.abort(@ctx.message("core.heroku.error.authentication")) unless result.success?
24
- end
25
-
26
- def create_new_app
27
- output, status = @ctx.capture2e(heroku_command, "create")
28
- @ctx.abort(@ctx.message("core.heroku.error.creation")) unless status.success?
29
- @ctx.puts(output)
30
- end
31
-
32
- def deploy(branch_to_deploy)
33
- result = @ctx.system("git", "push", "-u", "heroku", "#{branch_to_deploy}:master")
34
- @ctx.abort(@ctx.message("core.heroku.error.deploy")) unless result.success?
35
- end
36
-
37
- def download
38
- return if installed?
39
-
40
- result = @ctx.system("curl", "-o", download_path, DOWNLOAD_URLS[@ctx.os], chdir: ShopifyCLI.cache_dir)
41
- @ctx.abort(@ctx.message("core.heroku.error.download")) unless result.success?
42
- @ctx.abort(@ctx.message("core.heroku.error.download")) unless File.exist?(download_path)
43
- end
44
-
45
- def install
46
- return if installed?
47
-
48
- result = if @ctx.windows?
49
- @ctx.system("\"#{download_path}\"")
50
- else
51
- @ctx.system("tar", "-xf", download_path, chdir: ShopifyCLI.cache_dir)
52
- end
53
- @ctx.abort(@ctx.message("core.heroku.error.install")) unless result.success?
54
-
55
- @ctx.rm(download_path)
56
- end
57
-
58
- def select_existing_app(app_name)
59
- result = @ctx.system(heroku_command, "git:remote", "-a", app_name)
60
-
61
- msg = @ctx.message("core.heroku.error.could_not_select_app", app_name)
62
- @ctx.abort(msg) unless result.success?
63
- end
64
-
65
- def whoami
66
- output, status = @ctx.capture2e(heroku_command, "whoami")
67
- return output.strip if status.success?
68
- nil
69
- end
70
-
71
- def get_config(config)
72
- output, status = @ctx.capture2e(heroku_command, "config:get", config.to_s)
73
- return output.strip if status.success?
74
- nil
75
- end
76
-
77
- def set_config(config, value)
78
- result = @ctx.system(heroku_command, "config:set", "#{config}=#{value}")
79
-
80
- msg = @ctx.message("core.heroku.error.set_config", config, value)
81
- @ctx.abort(msg) unless result.success?
82
- end
83
-
84
- def add_buildpacks(buildpacks)
85
- result = @ctx.system(heroku_command, "buildpacks:clear")
86
- msg = @ctx.message("core.heroku.error.add_buildpacks")
87
- @ctx.abort(msg) unless result.success?
88
-
89
- buildpacks.each do |buildpack|
90
- result = @ctx.system(heroku_command, "buildpacks:add", buildpack)
91
- msg = @ctx.message("core.heroku.error.add_buildpacks")
92
- @ctx.abort(msg) unless result.success?
93
- end
94
- end
95
-
96
- def heroku_command
97
- local_path = File.join(ShopifyCLI.cache_dir, "heroku", "bin", "heroku").to_s
98
- if File.exist?(local_path)
99
- local_path
100
- elsif @ctx.windows?
101
- begin
102
- # Check if Heroku exists in the Windows registry and run it from there
103
- require "win32/registry"
104
-
105
- windows_path = Win32::Registry::HKEY_CURRENT_USER.open('SOFTWARE\heroku') do |reg|
106
- reg[""] # This reads the 'Default' registry key
107
- end
108
-
109
- File.join(windows_path, "bin", "heroku").to_s
110
- rescue StandardError, LoadError
111
- "heroku"
112
- end
113
- else
114
- "heroku"
115
- end
116
- end
117
-
118
- private
119
-
120
- def download_filename
121
- URI.parse(DOWNLOAD_URLS[@ctx.os]).path.split("/").last
122
- end
123
-
124
- def download_path
125
- File.join(ShopifyCLI.cache_dir, download_filename)
126
- end
127
-
128
- def git_remote
129
- output, status = @ctx.capture2e("git", "remote", "get-url", "heroku")
130
- status.success? ? output : nil
131
- end
132
-
133
- def installed?
134
- _output, status = @ctx.capture2e(heroku_command, "--version")
135
- status.success?
136
- rescue
137
- false
138
- end
139
- end
140
- end
@@ -1,44 +0,0 @@
1
- module ShopifyCLI
2
- class IdentityAuth
3
- class Servlet < WEBrick::HTTPServlet::AbstractServlet
4
- ERB_FILENAME = File.join(ROOT, "lib/shopify_cli/assets/post_auth_page/index.html.erb")
5
- CSS_FILENAME = File.join(ROOT, "lib/shopify_cli/assets/post_auth_page/style.css")
6
-
7
- def initialize(server, identity_auth, token)
8
- super
9
- @server = server
10
- @identity_auth = identity_auth
11
- @state_token = token
12
- end
13
-
14
- def do_GET(req, res) # rubocop:disable Naming/MethodName
15
- if !req.query["error"].nil?
16
- respond_with(
17
- res,
18
- 400,
19
- Context.message("core.identity_auth.servlet.invalid_request_response", req.query["error_description"])
20
- )
21
- elsif req.query["state"] != @state_token
22
- response_message = Context.message("core.identity_auth.servlet.invalid_state_response")
23
- req.query.merge!("error" => "invalid_state", "error_description" => response_message)
24
- respond_with(res, 403, response_message)
25
- else
26
- respond_with(res, 200, Context.message("core.identity_auth.servlet.success_response"))
27
- end
28
- @identity_auth.response_query = req.query
29
- @server.shutdown
30
- end
31
-
32
- def respond_with(response, status, message)
33
- successful = status == 200
34
- locals = {
35
- status: status,
36
- message: message,
37
- css: File.read(CSS_FILENAME),
38
- }
39
- response.status = status
40
- response.body = ERB.new(File.read(ERB_FILENAME)).result(binding)
41
- end
42
- end
43
- end
44
- end
@@ -1,110 +0,0 @@
1
- require "shopify_cli"
2
-
3
- module ShopifyCLI
4
- ##
5
- # ShopifyCLI::JsDeps ensures that all JavaScript dependencies are installed for projects.
6
- #
7
- class JsDeps
8
- include SmartProperties
9
-
10
- property! :ctx, accepts: ShopifyCLI::Context
11
- property! :system, accepts: JsSystem, default: -> { JsSystem.new(ctx: ctx) }
12
-
13
- ##
14
- # Proxy to instance method ShopifyCLI::JsDeps.new.install.
15
- #
16
- # #### Parameters
17
- # - `ctx`: running context from your command
18
- # - `verbose`: whether to run the installation tools in silent mode
19
- #
20
- # #### Example
21
- #
22
- # ShopifyCLI::JsDeps.install(ctx)
23
- #
24
- def self.install(ctx, verbose = false)
25
- new(ctx: ctx).install(verbose)
26
- end
27
-
28
- ##
29
- # Installs all of a project's JavaScript dependencies using Yarn or NPM, based on the project's settings.
30
- #
31
- # #### Parameters
32
- # - `verbose`: whether to run the installation tools in silent mode
33
- #
34
- # #### Example
35
- #
36
- # # context is the running context for the command
37
- # ShopifyCLI::JsDeps.new(context).install(true)
38
- #
39
- def install(verbose = false)
40
- title = ctx.message("core.js_deps.installing", @system.package_manager)
41
- success = ctx.message("core.js_deps.installed")
42
- failure = ctx.message("core.js_deps.error.install_error", @system.package_manager)
43
-
44
- CLI::UI::Frame.open(title, success_text: success, failure_text: failure) do
45
- @system.call(
46
- yarn: -> { yarn(verbose) },
47
- npm: -> { npm(verbose) }
48
- )
49
- end
50
- end
51
-
52
- private
53
-
54
- def yarn(verbose = false)
55
- cmd = %w(yarn install)
56
- cmd << "--silent" unless verbose
57
-
58
- run_install_command(cmd)
59
- end
60
-
61
- def npm(verbose = false)
62
- cmd = %w(npm install --no-audit)
63
- cmd << "--quiet" unless verbose
64
-
65
- run_install_command(cmd)
66
- end
67
-
68
- def run_install_command(cmd)
69
- deps = parse_dependencies
70
- errors = nil
71
-
72
- spinner_title = ctx.message("core.js_deps.installing", @system.package_manager)
73
- success = CLI::UI::Spinner.spin(spinner_title, auto_debrief: false) do |spinner|
74
- _, errors, status = CLI::Kit::System.capture3(*cmd, env: @ctx.env, chdir: ctx.root)
75
- update_spinner_title_and_status(spinner, status, deps)
76
- end
77
-
78
- errors.lines.each { |e| ctx.puts e } unless success || errors.nil?
79
- success
80
- end
81
-
82
- def update_spinner_title_and_status(spinner, status, deps)
83
- if status.success?
84
- spinner.update_title(ctx.message("core.js_deps.installed", deps.size))
85
- else
86
- spinner.update_title(ctx.message("core.js_deps.error.install_spinner_error", deps.size))
87
- CLI::UI::Spinner::TASK_FAILED
88
- end
89
- end
90
-
91
- def parse_dependencies
92
- package_json = File.join(ctx.root, "package.json")
93
- pkg = begin
94
- JSON.parse(File.read(package_json))
95
- rescue Errno::ENOENT, Errno::ENOTDIR
96
- ctx.abort(ctx.message("core.js_deps.error.missing_package", package_json))
97
- end
98
-
99
- %w(dependencies devDependencies).map do |key|
100
- pkg.fetch(key, []).keys
101
- end.flatten
102
- rescue JSON::ParserError
103
- ctx.puts(
104
- ctx.message("core.js_deps.error.invalid_package", File.read(File.join(path, "package.json"))),
105
- error: true
106
- )
107
- raise ShopifyCLI::AbortSilent
108
- end
109
- end
110
- end
@@ -1,108 +0,0 @@
1
- module ShopifyCLI
2
- class Packager
3
- PACKAGING_DIR = File.join(ShopifyCLI::ROOT, "packaging")
4
- BUILDS_DIR = File.join(PACKAGING_DIR, "builds", ShopifyCLI::VERSION)
5
-
6
- def initialize
7
- FileUtils.mkdir_p(BUILDS_DIR)
8
- end
9
-
10
- def build_debian
11
- ensure_program_installed("dpkg-deb", "brew install dpkg")
12
-
13
- root_dir = File.join(PACKAGING_DIR, "debian")
14
- debian_dir = File.join(root_dir, "shopify-cli", "DEBIAN")
15
- FileUtils.mkdir_p(debian_dir)
16
-
17
- puts "\nBuilding Debian package"
18
-
19
- puts "Generating metadata files…"
20
- Dir.glob("#{debian_dir}/*").each { |file| File.delete(file) }
21
-
22
- metadata_files = %w(control preinst prerm)
23
- metadata_files.each do |file|
24
- file_path = File.join(debian_dir, file)
25
-
26
- file_contents = File.read(File.join(root_dir, "#{file}.base"))
27
- file_contents = file_contents.gsub("SHOPIFY_CLI_VERSION", ShopifyCLI::VERSION)
28
- File.open(file_path, "w", 0775) { |f| f.write(file_contents) }
29
- end
30
-
31
- puts "Building package…"
32
- Dir.chdir(root_dir)
33
- raise "Failed to build package" unless system("dpkg-deb", "-b", "shopify-cli")
34
-
35
- output_path = File.join(root_dir, "shopify-cli.deb")
36
- final_path = File.join(BUILDS_DIR, "shopify-cli-#{ShopifyCLI::VERSION}.deb")
37
-
38
- puts "Moving generated package: \n From: #{output_path}\n To: #{final_path}\n\n"
39
- FileUtils.mv(output_path, final_path)
40
- end
41
-
42
- def build_rpm
43
- ensure_program_installed("rpmbuild", "brew install rpm")
44
-
45
- root_dir = File.join(PACKAGING_DIR, "rpm")
46
- rpm_build_dir = File.join(root_dir, "build")
47
- FileUtils.mkdir_p(rpm_build_dir)
48
-
49
- spec_path = File.join(root_dir, "shopify-cli.spec")
50
- puts "\nBuilding RPM package"
51
-
52
- puts "Generating spec file…"
53
- File.delete(spec_path) if File.exist?(spec_path)
54
-
55
- spec_contents = File.read(File.join(root_dir, "shopify-cli.spec.base"))
56
- spec_contents = spec_contents.gsub("SHOPIFY_CLI_VERSION", ShopifyCLI::VERSION)
57
- File.write(spec_path, spec_contents)
58
-
59
- puts "Building package…"
60
- Dir.chdir(root_dir)
61
- system("rpmbuild", "-bb", File.basename(spec_path))
62
-
63
- output_dir = File.join(root_dir, "build", "noarch")
64
-
65
- puts "Moving generated packages: \n From: #{output_dir}\n To: #{BUILDS_DIR}\n\n"
66
- FileUtils.mv(Dir.glob("#{output_dir}/*.rpm"), BUILDS_DIR)
67
- end
68
-
69
- def build_homebrew
70
- root_dir = File.join(PACKAGING_DIR, "homebrew")
71
-
72
- build_path = File.join(BUILDS_DIR, "shopify-cli@2.rb")
73
- puts "\nBuilding Homebrew package"
74
-
75
- puts "Generating formula…"
76
- File.delete(build_path) if File.exist?(build_path)
77
-
78
- spec_contents = File.read(File.join(root_dir, "shopify-cli@2.base.rb"))
79
- spec_contents = spec_contents.gsub("SHOPIFY_CLI_VERSION", ShopifyCLI::VERSION)
80
-
81
- puts "Grabbing sha256 checksum from Rubygems.org"
82
- require "digest/sha2"
83
- require "open-uri"
84
- gem_checksum = URI.open("https://rubygems.org/downloads/shopify-cli-#{ShopifyCLI::VERSION}.gem") do |io|
85
- Digest::SHA256.new.hexdigest(io.read)
86
- end
87
-
88
- puts "Got sha256 checksum for gem: #{gem_checksum}"
89
- spec_contents = spec_contents.gsub("SHOPIFY_CLI_GEM_CHECKSUM", gem_checksum)
90
-
91
- puts "Writing generated formula\n To: #{build_path}\n\n"
92
- File.write(build_path, spec_contents)
93
- end
94
-
95
- private
96
-
97
- def ensure_program_installed(program, installation_cmd)
98
- unless system(program, "--version", out: File::NULL, err: File::NULL)
99
- raise <<~MESSAGE
100
-
101
- Could not find program #{program} which is required to build the package.
102
- You can install it by running #{installation_cmd}.
103
-
104
- MESSAGE
105
- end
106
- end
107
- end
108
- end