anchor.diff:          {[
             {<<"run_list">>, chef_json_validator:run_list_spec()}
            ]}).
  +
  +-define(DEFAULT_DEPSOLVER_TIMEOUT, 2000).
   
   %% @doc Convert a binary JSON string representing a Chef runlist into an
   %% EJson-encoded Erlang data structure.
  
positive.code: %%
  %% Regex from chef_json_validator.erl
  %% @author Marc Paradise <marc@opscode.com>
  %% Copyright 2012 Opscode, Inc. All Rights Reserved.
  %%
  %% This file is provided to you under the Apache License,
  %% Version 2.0 (the "License"); you may not use this file
  
negative.code:     {ok, XYZOnly};
  sanitize_semver(Error) ->
      Error.
  
  depsolver_timeout() ->
      case application:get_env(chef_objects, depsolver_timeout) of
          undefined ->
              ?DEFAULT_DEPSOLVER_TIMEOUT;
          {ok, Value} when is_integer(Value) ->
              Value;
          Bad ->
              error({invalid_config, {chef_objects, depsolver_timeout, Bad}})
      end.
  