mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-12-23 00:26:30 +00:00
Improved version string
This commit is contained in:
parent
fbc3f2893a
commit
bc5cf2c192
6 changed files with 58 additions and 13 deletions
|
@ -72,18 +72,10 @@ config :pleroma, :websub, Pleroma.Web.Websub
|
||||||
config :pleroma, :ostatus, Pleroma.Web.OStatus
|
config :pleroma, :ostatus, Pleroma.Web.OStatus
|
||||||
config :pleroma, :httpoison, Pleroma.HTTP
|
config :pleroma, :httpoison, Pleroma.HTTP
|
||||||
|
|
||||||
version =
|
|
||||||
with {version, 0} <- System.cmd("git", ["rev-parse", "HEAD"]) do
|
|
||||||
"Pleroma #{Mix.Project.config()[:version]} #{String.trim(version)}"
|
|
||||||
else
|
|
||||||
_ -> "Pleroma #{Mix.Project.config()[:version]} dev"
|
|
||||||
end
|
|
||||||
|
|
||||||
# Configures http settings, upstream proxy etc.
|
# Configures http settings, upstream proxy etc.
|
||||||
config :pleroma, :http, proxy_url: nil
|
config :pleroma, :http, proxy_url: nil
|
||||||
|
|
||||||
config :pleroma, :instance,
|
config :pleroma, :instance,
|
||||||
version: version,
|
|
||||||
name: "Pleroma",
|
name: "Pleroma",
|
||||||
email: "example@example.com",
|
email: "example@example.com",
|
||||||
description: "A Pleroma instance, an alternative fediverse server",
|
description: "A Pleroma instance, an alternative fediverse server",
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
defmodule Pleroma.Application do
|
defmodule Pleroma.Application do
|
||||||
use Application
|
use Application
|
||||||
|
|
||||||
|
@name "Pleroma"
|
||||||
|
@version Mix.Project.config()[:version]
|
||||||
|
def name, do: @name
|
||||||
|
def version, do: @version
|
||||||
|
def named_version(), do: @name <> " " <> @version
|
||||||
|
|
||||||
# See http://elixir-lang.org/docs/stable/elixir/Application.html
|
# See http://elixir-lang.org/docs/stable/elixir/Application.html
|
||||||
# for more information on OTP Applications
|
# for more information on OTP Applications
|
||||||
def start(_type, _args) do
|
def start(_type, _args) do
|
||||||
|
|
|
@ -141,7 +141,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|
||||||
uri: Web.base_url(),
|
uri: Web.base_url(),
|
||||||
title: Keyword.get(instance, :name),
|
title: Keyword.get(instance, :name),
|
||||||
description: Keyword.get(instance, :description),
|
description: Keyword.get(instance, :description),
|
||||||
version: "#{@mastodon_api_level} (compatible; #{Keyword.get(instance, :version)})",
|
version: "#{@mastodon_api_level} (compatible; #{Pleroma.Application.named_version()})",
|
||||||
email: Keyword.get(instance, :email),
|
email: Keyword.get(instance, :email),
|
||||||
urls: %{
|
urls: %{
|
||||||
streaming_api: String.replace(Pleroma.Web.Endpoint.static_url(), "http", "ws")
|
streaming_api: String.replace(Pleroma.Web.Endpoint.static_url(), "http", "ws")
|
||||||
|
|
|
@ -86,8 +86,8 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do
|
||||||
response = %{
|
response = %{
|
||||||
version: "2.0",
|
version: "2.0",
|
||||||
software: %{
|
software: %{
|
||||||
name: "pleroma",
|
name: Pleroma.Application.name(),
|
||||||
version: Keyword.get(instance, :version)
|
version: Pleroma.Application.version()
|
||||||
},
|
},
|
||||||
protocols: ["ostatus", "activitypub"],
|
protocols: ["ostatus", "activitypub"],
|
||||||
services: %{
|
services: %{
|
||||||
|
|
|
@ -197,7 +197,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
|
||||||
end
|
end
|
||||||
|
|
||||||
def version(conn, _params) do
|
def version(conn, _params) do
|
||||||
version = Pleroma.Config.get([:instance, :version])
|
version = Pleroma.Application.named_version()
|
||||||
|
|
||||||
case get_format(conn) do
|
case get_format(conn) do
|
||||||
"xml" ->
|
"xml" ->
|
||||||
|
|
49
mix.exs
49
mix.exs
|
@ -4,7 +4,7 @@ defmodule Pleroma.Mixfile do
|
||||||
def project do
|
def project do
|
||||||
[
|
[
|
||||||
app: :pleroma,
|
app: :pleroma,
|
||||||
version: "0.9.0",
|
version: version("0.9.0"),
|
||||||
elixir: "~> 1.4",
|
elixir: "~> 1.4",
|
||||||
elixirc_paths: elixirc_paths(Mix.env()),
|
elixirc_paths: elixirc_paths(Mix.env()),
|
||||||
compilers: [:phoenix, :gettext] ++ Mix.compilers(),
|
compilers: [:phoenix, :gettext] ++ Mix.compilers(),
|
||||||
|
@ -84,4 +84,51 @@ defmodule Pleroma.Mixfile do
|
||||||
test: ["ecto.create --quiet", "ecto.migrate", "test"]
|
test: ["ecto.create --quiet", "ecto.migrate", "test"]
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Builds a version string made of:
|
||||||
|
# * the application version
|
||||||
|
# * a pre-release if ahead of the tag: the describe string (-count-commithash)
|
||||||
|
# * build info:
|
||||||
|
# * a build name if `PLEROMA_BUILD_NAME` or `:pleroma, :build_name` is defined
|
||||||
|
# * the mix environment if different than prod
|
||||||
|
defp version(version) do
|
||||||
|
{git_tag, git_pre_release} =
|
||||||
|
with {tag, 0} <- System.cmd("git", ["describe", "--tags", "--abbrev=0"]),
|
||||||
|
tag = String.trim(tag),
|
||||||
|
{describe, 0} <- System.cmd("git", ["describe", "--tags"]),
|
||||||
|
describe = String.trim(describe),
|
||||||
|
ahead <- String.replace(describe, tag, "") do
|
||||||
|
{String.replace_prefix(tag, "v", ""), if(ahead != "", do: String.trim(ahead))}
|
||||||
|
else
|
||||||
|
_ -> {nil, nil}
|
||||||
|
end
|
||||||
|
|
||||||
|
if git_tag && version != git_tag do
|
||||||
|
Mix.shell().error(
|
||||||
|
"Application version #{inspect(version)} does not match git tag #{inspect(git_tag)}"
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
build_name =
|
||||||
|
cond do
|
||||||
|
name = Application.get_env(:pleroma, :build_name) -> name
|
||||||
|
name = System.get_env("PLEROMA_BUILD_NAME") -> name
|
||||||
|
true -> nil
|
||||||
|
end
|
||||||
|
|
||||||
|
env_name = if Mix.env() != :prod, do: to_string(Mix.env())
|
||||||
|
|
||||||
|
build =
|
||||||
|
[build_name, env_name]
|
||||||
|
|> Enum.filter(fn string -> string && string != "" end)
|
||||||
|
|> Enum.join("-")
|
||||||
|
|> (fn
|
||||||
|
"" -> nil
|
||||||
|
string -> "+" <> string
|
||||||
|
end).()
|
||||||
|
|
||||||
|
[version, git_pre_release, build]
|
||||||
|
|> Enum.filter(fn string -> string && string != "" end)
|
||||||
|
|> Enum.join()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue