Packages

Codepagex is an elixir library to convert between string encodings to and from utf-8. Like iconv, but written in pure Elixir.

Current section

Files

Jump to
codepagex mix.exs
Raw

mix.exs

defmodule Codepagex.Mixfile do
use Mix.Project
def project do
[app: :codepagex,
version: "0.1.0",
elixir: "~> 1.0",
name: "Codepagex",
description: description,
package: package,
source_url: "https://github.com/tallakt/codepagex",
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod,
deps: deps,
aliases: aliases]
end
# Configuration for the OTP application
#
# Type `mix help compile.app` for more information
def application do
[applications: [:logger]]
end
defp description do
"""
Codepagex is an elixir library to convert between string encodings to and
from utf-8. Like iconv, but written in pure Elixir.
"""
end
defp package do
[
files: ["lib", "priv", "mix.exs", "README*", "readme*", "LICENSE*", "license*"],
contributors: ["Tallak Tveide"],
licenses: ["Apache 2.0"],
links: %{
"GitHub" => "https://github.com/tveidet/codepagex",
"Docs" => "http://tallakt.github.io/codepagex/"
}
]
end
# Dependencies can be Hex packages:
#
# {:mydep, "~> 0.3.0"}
#
# Or git/path repositories:
#
# {:mydep, git: "https://github.com/elixir-lang/mydep.git", tag: "0.1.0"}
#
# Type `mix help deps` for more examples and options
defp deps do
[
{:benchwarmer, "~> 0.0.2", only: :dev },
{:earmark, only: :dev},
{:ex_doc, only: :dev},
{:inch_ex, only: :docs}
]
end
defp aliases do
[
{:"codepagex.download", &download_from_unicode_org/1},
{:"codepagex.publish.docs", &github_publish_docs/1}
]
end
# This mix task wil download the source mapping files from http://unicode.org
#
# The files should already be present in the git repository, but if necessary,
# this mix task may be run to refresh them.
#
# `wget` is assumed to be installed.
#
# Some files are left out of the download process altogether, while others are
# filtered by `.gitignore`, depending on what seemed most practical.
#
# ## Synopsis
#
# $ mix codepagex.download
#
@ftp "ftp://ftp.unicode.org/Public/MAPPINGS/"
@ignore ~w(
/Public/MAPPINGS/OBSOLETE
/Public/MAPPINGS/ISO8859/DatedVersions/
/Public/MAPPINGS/VENDORS/ADOBE/
/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/
) |> Enum.join(",")
# note: other files are downloaded, but are in unicode/.gitignore
def download_from_unicode_org(_) do
Mix.shell.cmd "wget -nH --cut-dirs=2 -r -P unicode -nv -X #{@ignore} #{@ftp}"
end
defp sh(cmd), do: cmd |> String.to_char_list |> :os.cmd |> List.to_string
def github_publish_docs(_) do
if String.match?(sh("git status --porcelain"), ~r(\S)) do
IO.puts :stderr, "Repository is not clean, git commit to continue"
else
File.rmdir "gh-pages"
File.mkdir_p "gh-pages"
Mix.Task.run "docs"
File.cp_r "doc", "gh-pages"
Mix.shell.cmd "git add -f gh-pages"
sh "tree=$(git write-tree --prefix=gh-pages/) && commit=$(echo \"Generated docs\" | git commit-tree $tree -p gh-pages) && git update-ref refs/heads/gh-pages $commit && git reset HEAD"
File.rm_rf "gh-pages"
Mix.shell.cmd "git reset --hard"
IO.puts "Now run: git push origin gh-pages"
end
end
end