Releases: Shopify/themekit
Project Renaming, Refactoring, Gracefully Handle Configuration File Errors
- Moves all the packages and naming over to
ThemeKit
- Drops some deprecated methods that weren't being used
- Fixes an issue where ignore_files patterns would cause crashes due to them being invalid YAML.
- When a YAML error is encountered report it to the user and suggest what could be wrong.
API Updates to Commands, Removes a bunch of panics, updates CLI log messages
API
- The
commands
package now usesOptions
structs to make it easier to invoke the commands. - Made the API better by making several return errors instead of panicking and dying.
- No more logging to
stdout
, uses insertsThemeEvent
into a channel for consumers to handle as desired
CLI
- Changes to console logs to provide nicer to read information
- Improved logging
- Reduces "hangs" so user knows that computer is computerizing
Refactoring and Improvements
This release doesn't bring on much in terms of new features. There's some improvements to bootstrapping that makes it behave more appropriately, changes up how errors are reported such that the library doesn't cause API consumers to crash.
Also improves what information is returned from ThemeClient calls such as Process
and Perform
. Instead of simply getting a string you get an object that you can do a bit more stuff with.
Bugfixes
- Provide more useful error message when an expected proxy isn't running
Theme Bootstrapping and fixes upload bug
Features:
You can now bootstrap a new theme onto a Shopify store using Timber. At the moment it requires that you have a pre-existing configuration in the directory.
For example, if you wanted to start a new theme based on the latest master you could do the following:
mkdir my_timber_theme
cd my_timber_theme
theme configure -access_token=abracadabra -domain=someshop.myshopify.com
theme bootstrap -version=master
Theme versions are pulled down from the Timber releases atom feed, so you never need to worry about using an out of date Timber theme (unless you want to).
Bugfixes:
- #31: Larger files not getting buffered correctly, resulting in broken uploads during
theme watch
Consolidation into single `theme` command. Makes commands a part of the library and adds environments
This release is a pretty big one. Internally there's been a number of changes such that the theme commands are no longer tied to the command line application and may be used as a library. The bigger changes are the external ones that you'll notice as a user of the command line utility.
theme
The old tools theme-manipulate
, theme-watch
and theme-configure
have been rolled up into a single command called theme
. You can view all the available sub-commands by typing theme -h
. Sub-commands can also be queried for details on their usage. For example: theme configure -h
would display all the arguments you can pass in for creating new configurations.
Environments
It's been a super popular request and the feature is out. You can now maintain a list of configurations for your various deployment areas. This takes over config.yml
though it should migrate you over from the old configuration to the new one. By default it assumes the environment is development
, so if you want to add another configuration (say production
) you'd execute the following:
theme configure -access_token=abracadabra \
-domain=shopproduction.myshopify.com \
-env=production
Specify Location of config.yml
You no longer need to have your config.yml
file in the same directory as where you are running the theme
command from. You still need to be running the command from the directory in which you want to synchronize from. For example, if you wanted to watch a directory:
theme watch --dir=../config.yml
Shopify 422 Error Logging, filtering improvements, ignore_files configuration support and theme_id support
- Filters can now be initialized with both the contents of files and from an array of patterns (fixes #12)
ignore_files
wasn't being properly detected and these fields weren't being added to the filters. This meant that.git
directories would be included in filters and would causes several wasted API requests that would be rejected by Shopify- Updates
version.go
and adds a wrapper aroundlog.Fatal
to provide version information.
Reduces event log noise, adds support for ignorefiles, fixes asset uploads
Ignorefiles and file black lists
You can now add ignore patterns and ignore files to your configuration. The contents of the files will be read and any files that match those patterns will be ignored.
You can represent these changes by adding the following to your config.yml
file:
ignores:
- name_of_your_ignore_file (such as .gitignore)
ignore_files:
- name_of_specific_file_to_ignore (such as config/settings_data.json)
For the time being an ignore file needs to include itself otherwise changes it will be detected and attempts to upload the file will occur.
Bugfixes:
theme-manipulate upload
now detects content type and uploads files appropriately. Images, PDFs and other binary data will be uploaded to Shopify appropriately now. See #11 for further details of the issue.
Fixes Single Asset Downloads
Performing theme-manipulate download filename
would create the file but wouldn't actually pull the data down. This fixes that issue.
Also includes patches to remove a bit of code duplication.
Concurrency Configuration and Improved Reliability (I think)
This should fix an issue where long running theme-watch
commands would exhaust file descriptors and crash. I tested this using the newly added concurrency configuration item making hundreds of updates for an hour. Seemed to work, though my situation might not reflect reality.
Additions to Configuration
You can add the following to your config.yml
:
concurrency: 4
By default concurrency
is set to 2
which should result in never running into stalls because of API limits. If your usage isn't super intense, you can probably bump this up to a higher number. Unless your Private API Client has been given special privileges, you shouldn't be able to make more than 40 requests at one time, so this is most likely the upper limit.
First Public Alpha of Phoenix
Phoenix 0.0.1 alpha
This includes the first binary release of the theme tools. The current feature set is:
theme-configure
: configure a project (access token, shop, etc.)theme-watch
: watch current directory for changes and push those changes to Shopifytheme-manipulate
: perform various operations with various filesdownload [file ...]
: download files from Shopify. An empty list will download the entire theme into your current directoryupload file [...]
: upload one or more files to Shopifyremove file [...]
: remove file from local filesystem and from Shopify
In order to easily use the binaries, extract them to a safe location (i.e. ~/tools/theme-utils/
) and add the location to your Path.