1Password / shell-plugins

Seamless authentication for every tool in your terminal.
https://developer.1password.com/docs/cli/shell-plugins/
MIT License
506 stars 163 forks source link

Added Shopify Themes CLI Plugin (The Second Attempt™️) #434

Open jerryzhou196 opened 4 months ago

jerryzhou196 commented 4 months ago

Overview

This PR fully implements the Shopify Theme CLI Shell Plugin. It builds off of the great work done by @ammiranda and @hculea on #397.

https://github.com/1Password/shell-plugins/assets/46613983/51674685-198d-4acc-ad6f-4ac11aab88cd

The video shows the 1Password Shopify Shell Plugin integrating with the shopify theme CLI and a theme access API key.

Incidentally, there were a few interesting things I stumbled upon.

  1. I couldn't implement the importer because the Shopify CLI stores the environment file by project directory rather than a fixed path. (instead of something like ~/config.toml, it's {PROJECT_DIRECTORY}/shopify.theme.toml).

  2. I noticed that importer.NoOp() would cause the op plugin init flow to fail with [ERROR]... credential not found for the Import into 1Password... option. The same issue was mentioned in #283. Without being able to see the underlying code causing the error, I provide a band-aid solution in this PR that fixes the importer.NoOp() implementation to no longer give this error.

  3. Shopify CLI also has a lone Webhooks CLI integration called shopify webhook trigger that requires a --client-secret passkey. I'm very happy to implement this too. What are your thoughts?

Type of change

- [x] Created a new plugin - [ ] Improved an existing plugin - [x] Fixed a bug in an existing plugin - [ ] Improved contributor utilities or experience ## Related Issue(s) * Resolves: #201 * Relates: #397 * Relates: #283 ## How To Test 1. [Download the Shopify CLI](https://shopify.dev/docs/themes/tools/cli/install). 2. Create a Shopify Store on [Shopify](https://www.shopify.com/) and [configure the theme access app to your store](https://shopify.dev/docs/themes/tools/theme-access). 3. Provision a key through the theme access portal. (Side note: Not sure how to test the automatic chrome extension detection import here) ![image](https://github.com/1Password/shell-plugins/assets/46613983/056ba6ec-c3c2-4446-a057-46a69c6eaa83) 6. Build the plugin and run `op plugin init shopify`. Store the key through the import option. 7. Try running the protected theme commands without the `--password` option or the Shopify built-in authentication. It should work. ## Changelog Added Shopify Themes Plugin. Added an empty attempt to importer.NoOp() to correctly function without error.