diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..8468084 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,9 @@ +language: elixir +elixir: + - 1.2.6 + - 1.3.2 + - 1.4.5 +otp_release: + - 18.3 + - 19.0 + - 20.0 diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b31a110 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,12 @@ +# Changelog + +## 1.0.0 (2017-07-12) + +* Breaking + * New breaking response format `{:ok, body}` / `{:error, response}` + +* Enhancements + * New Analytics API endpoints + +* Bugfixes + * Fix 1.4 warnings diff --git a/README.md b/README.md index 0781b6c..b0838ff 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ Elixir library for accessing Google APIs. Only the following APIs are supported: +* Analytics (partial) * Knowledge Graph Search API * Maps Time Zone API * Places Autocomplete @@ -16,7 +17,7 @@ PRs are welcome for more APIs. ```elixir def deps do - [{:google_api_client, git: "https://github.com/seanabrahams/google-api-elixir-client.git"}] + [{:google_api_client, "~> 1.0"}] end ``` @@ -73,3 +74,7 @@ Views.update("a_valid_oauth_token", account_id, web_property_id, profile_id, res Google.Apis.??? # Submit a PR ``` + +# Special Thanks / Contributors + +* Daniel Upton @elkelk diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 0000000..8815fd7 --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,35 @@ +# Release process + +This document simply outlines the release process: + +1. Ensure you are running on the oldest supported Elixir version (check `.travis.yml`) + +2. Ensure `CHANGELOG.md` is updated and add current date + +3. Change the version number in `mix.exs` and `README.md` + +4. Run `mix test` to ensure all tests pass + +5. Commit changes above with title "Release vVERSION" and push to GitHub + + git add . + git commit -m "Release vX.Y.Z" + git push origin master + +6. Check CI is green + +7. Create a release on GitHub and add the CHANGELOG from step #2 (https://github.com/seanabrahams/google-api-elixir-client) using VERSION as the tag and title + +8. Publish new hex release with `mix hex.publish` + +9. Publish hex docs with `mix hex.docs` + +## Deprecation policy + +Deprecations happen in 3 steps: + + 1. The feature is soft-deprecated. It means both CHANGELOG and documentation must list the feature as deprecated but no warning is effectively emitted by running the code. There is no requirement to soft-deprecate a feature. + + 2. The feature is effectively deprecated by emitting warnings on usage. In order to deprecate a feature, the proposed alternative MUST exist for AT LEAST two versions. + + 3. The feature is removed. This can only happen on major releases. diff --git a/mix.exs b/mix.exs index cd72732..ca49809 100644 --- a/mix.exs +++ b/mix.exs @@ -3,7 +3,9 @@ defmodule Google.Mixfile do def project do [app: :google_api_client, - version: "0.1.0", + version: "1.0.0", + description: "Google API Client for Elixir", + package: package(), elixir: "~> 1.3", build_embedded: Mix.env == :prod, start_permanent: Mix.env == :prod, @@ -33,11 +35,19 @@ defmodule Google.Mixfile do defp deps do [ {:httpoison, "~> 0.8"}, - {:poison, "~> 1.5 or ~> 2.0"}, + {:poison, "~> 1.5 or ~> 2.0 or ~> 3.0"}, {:exvcr, "~> 0.8", only: :test} ] end defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_), do: ["lib"] + + defp package do + [ + maintainers: ["Sean Abrahams"], + licenses: ["BSD"], + links: %{"GitHub" => "https://github.com/seanabrahams/google-api-elixir-client"}, + ] + end end diff --git a/mix.lock b/mix.lock index c4381a7..c46626c 100644 --- a/mix.lock +++ b/mix.lock @@ -1,14 +1,14 @@ -%{"certifi": {:hex, :certifi, "1.2.1", "c3904f192bd5284e5b13f20db3ceac9626e14eeacfbb492e19583cf0e37b22be", [:rebar3], []}, - "exactor": {:hex, :exactor, "2.2.3", "a6972f43bb6160afeb73e1d8ab45ba604cd0ac8b5244c557093f6e92ce582786", [:mix], []}, - "exjsx": {:hex, :exjsx, "3.2.1", "1bc5bf1e4fd249104178f0885030bcd75a4526f4d2a1e976f4b428d347614f0f", [:mix], [{:jsx, "~> 2.8.0", [hex: :jsx, optional: false]}]}, - "exvcr": {:hex, :exvcr, "0.8.10", "17090dea4758eb2349146746084a7c422c77f36b922611df6a46fef40a4bf94c", [:mix], [{:exactor, "~> 2.2", [hex: :exactor, optional: false]}, {:exjsx, "~> 3.2", [hex: :exjsx, optional: false]}, {:httpoison, "~> 0.11", [hex: :httpoison, optional: true]}, {:httpotion, "~> 3.0", [hex: :httpotion, optional: true]}, {:ibrowse, "~> 4.2.2", [hex: :ibrowse, optional: true]}, {:meck, "~> 0.8.3", [hex: :meck, optional: false]}]}, - "hackney": {:hex, :hackney, "1.8.6", "21a725db3569b3fb11a6af17d5c5f654052ce9624219f1317e8639183de4a423", [:rebar3], [{:certifi, "1.2.1", [hex: :certifi, optional: false]}, {:idna, "5.0.2", [hex: :idna, optional: false]}, {:metrics, "1.0.1", [hex: :metrics, optional: false]}, {:mimerl, "1.0.2", [hex: :mimerl, optional: false]}, {:ssl_verify_fun, "1.1.1", [hex: :ssl_verify_fun, optional: false]}]}, - "httpoison": {:hex, :httpoison, "0.11.2", "9e59f17a473ef6948f63c51db07320477bad8ba88cf1df60a3eee01150306665", [:mix], [{:hackney, "~> 1.8.0", [hex: :hackney, optional: false]}]}, - "idna": {:hex, :idna, "5.0.2", "ac203208ada855d95dc591a764b6e87259cb0e2a364218f215ad662daa8cd6b4", [:rebar3], [{:unicode_util_compat, "0.2.0", [hex: :unicode_util_compat, optional: false]}]}, - "jsx": {:hex, :jsx, "2.8.2", "7acc7d785b5abe8a6e9adbde926a24e481f29956dd8b4df49e3e4e7bcc92a018", [:mix, :rebar3], []}, - "meck": {:hex, :meck, "0.8.6", "af92a4d3e1525173a7162ed25e9ba6c6c7874e054900b8ae4a23fe71290890e0", [:make, :rebar3], []}, - "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], []}, - "mimerl": {:hex, :mimerl, "1.0.2", "993f9b0e084083405ed8252b99460c4f0563e41729ab42d9074fd5e52439be88", [:rebar3], []}, - "poison": {:hex, :poison, "2.2.0", "4763b69a8a77bd77d26f477d196428b741261a761257ff1cf92753a0d4d24a63", [:mix], []}, - "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.1", "28a4d65b7f59893bc2c7de786dec1e1555bd742d336043fe644ae956c3497fbe", [:make, :rebar], []}, - "unicode_util_compat": {:hex, :unicode_util_compat, "0.2.0", "dbbccf6781821b1c0701845eaf966c9b6d83d7c3bfc65ca2b78b88b8678bfa35", [:rebar3], []}} +%{"certifi": {:hex, :certifi, "1.2.1", "c3904f192bd5284e5b13f20db3ceac9626e14eeacfbb492e19583cf0e37b22be", [:rebar3], [], "hexpm"}, + "exactor": {:hex, :exactor, "2.2.3", "a6972f43bb6160afeb73e1d8ab45ba604cd0ac8b5244c557093f6e92ce582786", [:mix], [], "hexpm"}, + "exjsx": {:hex, :exjsx, "3.2.1", "1bc5bf1e4fd249104178f0885030bcd75a4526f4d2a1e976f4b428d347614f0f", [:mix], [{:jsx, "~> 2.8.0", [hex: :jsx, repo: "hexpm", optional: false]}], "hexpm"}, + "exvcr": {:hex, :exvcr, "0.8.11", "76d6f3f93cb764ccb34abca3f54ecdd980a178f908d175e6a326535e0f18e863", [:mix], [{:exactor, "~> 2.2", [hex: :exactor, repo: "hexpm", optional: false]}, {:exjsx, "~> 3.2", [hex: :exjsx, repo: "hexpm", optional: false]}, {:httpoison, "~> 0.11", [hex: :httpoison, repo: "hexpm", optional: true]}, {:httpotion, "~> 3.0", [hex: :httpotion, repo: "hexpm", optional: true]}, {:ibrowse, "~> 4.2.2", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:meck, "~> 0.8.3", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm"}, + "hackney": {:hex, :hackney, "1.8.6", "21a725db3569b3fb11a6af17d5c5f654052ce9624219f1317e8639183de4a423", [:rebar3], [{:certifi, "1.2.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "5.0.2", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "1.0.2", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.1", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm"}, + "httpoison": {:hex, :httpoison, "0.12.0", "8fc3d791c5afe6beb0093680c667dd4ce712a49d89c38c3fe1a43100dd76cf90", [:mix], [{:hackney, "~> 1.8.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"}, + "idna": {:hex, :idna, "5.0.2", "ac203208ada855d95dc591a764b6e87259cb0e2a364218f215ad662daa8cd6b4", [:rebar3], [{:unicode_util_compat, "0.2.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm"}, + "jsx": {:hex, :jsx, "2.8.2", "7acc7d785b5abe8a6e9adbde926a24e481f29956dd8b4df49e3e4e7bcc92a018", [:mix, :rebar3], [], "hexpm"}, + "meck": {:hex, :meck, "0.8.7", "ebad16ca23f685b07aed3bc011efff65fbaf28881a8adf925428ef5472d390ee", [:rebar3], [], "hexpm"}, + "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm"}, + "mimerl": {:hex, :mimerl, "1.0.2", "993f9b0e084083405ed8252b99460c4f0563e41729ab42d9074fd5e52439be88", [:rebar3], [], "hexpm"}, + "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm"}, + "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.1", "28a4d65b7f59893bc2c7de786dec1e1555bd742d336043fe644ae956c3497fbe", [:make, :rebar], [], "hexpm"}, + "unicode_util_compat": {:hex, :unicode_util_compat, "0.2.0", "dbbccf6781821b1c0701845eaf966c9b6d83d7c3bfc65ca2b78b88b8678bfa35", [:rebar3], [], "hexpm"}}