shell-plugins
shell-plugins copied to clipboard
Added Shopify Themes CLI Plugin (The Second Attempt™️)
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.
-
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
). -
I noticed that
importer.NoOp()
would cause theop plugin init
flow to fail with[ERROR]... credential not found
for theImport 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 theimporter.NoOp()
implementation to no longer give this error. -
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
- Download the Shopify CLI.
- Create a Shopify Store on Shopify and configure the theme access app to your store.
- Provision a key through the theme access portal.
(Side note: Not sure how to test the automatic chrome extension detection import here)
- Build the plugin and run
op plugin init shopify
. Store the key through the import option. - 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.