Skip to content

Releases: Shopify/themekit

Project Renaming, Refactoring, Gracefully Handle Configuration File Errors

09 Apr 20:02
Compare
Choose a tag to compare
  • 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

17 Mar 15:27
Compare
Choose a tag to compare

API

  • The commands package now uses Options 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 inserts ThemeEvent 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

11 Mar 17:36
Compare
Choose a tag to compare
Pre-release

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

26 Feb 17:16
Compare
Choose a tag to compare

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

18 Feb 13:20
Compare
Choose a tag to compare

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

12 Jan 21:49
Compare
Choose a tag to compare
  • 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 around log.Fatal to provide version information.

Reduces event log noise, adds support for ignorefiles, fixes asset uploads

01 Jan 19:05
Compare
Choose a tag to compare

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

01 Dec 18:44
Compare
Choose a tag to compare
Pre-release

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)

23 Nov 16:15
Compare
Choose a tag to compare

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

21 Oct 02:34
Compare
Choose a tag to compare
Pre-release

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 Shopify
  • theme-manipulate: perform various operations with various files
    • download [file ...]: download files from Shopify. An empty list will download the entire theme into your current directory
    • upload file [...]: upload one or more files to Shopify
    • remove 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.