parent
bb8df8dfa0
commit
924ec0c191
@ -1,48 +0,0 @@
|
||||
// Jellyfin.Versioning/AssemblyExtendedVersion.cs
|
||||
// Part of the Jellyfin project (https://jellyfin.media)
|
||||
//
|
||||
// All copyright belongs to the Jellyfin contributors; a full list can
|
||||
// be found in the file CONTRIBUTORS.md
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Jellyfin.Versioning
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Assembly)]
|
||||
public sealed class AssemblyExtendedVersion : Attribute
|
||||
{
|
||||
public ExtendedVersion ExtendedVersion { get; }
|
||||
|
||||
public AssemblyExtendedVersion(ExtendedVersion ExtendedVersion)
|
||||
{
|
||||
this.ExtendedVersion = ExtendedVersion;
|
||||
}
|
||||
|
||||
public AssemblyExtendedVersion(string apiVersion, bool readResource = true)
|
||||
{
|
||||
var assembly = Assembly.GetExecutingAssembly();
|
||||
var resourceName = "Jellyfin.Versioning.jellyfin_version.ini";
|
||||
|
||||
using (var stream = assembly.GetManifestResourceStream(resourceName))
|
||||
{
|
||||
ExtendedVersion = new ExtendedVersion(new Version(apiVersion), stream);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,133 +0,0 @@
|
||||
// Jellyfin.Versioning/ExtendedVersion.cs
|
||||
// Part of the Jellyfin project (https://jellyfin.media)
|
||||
//
|
||||
// All copyright belongs to the Jellyfin contributors; a full list can
|
||||
// be found in the file CONTRIBUTORS.md
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
|
||||
namespace Jellyfin.Versioning
|
||||
{
|
||||
public class ExtendedVersion
|
||||
{
|
||||
[IgnoreDataMember]
|
||||
public Version ApiVersion { get; }
|
||||
|
||||
public string CommitHash { get; } = String.Empty;
|
||||
|
||||
public long Revision { get; } = 0;
|
||||
|
||||
public string Branch { get; } = String.Empty;
|
||||
|
||||
public string TagDescription { get; } = String.Empty;
|
||||
|
||||
[IgnoreDataMember]
|
||||
public Uri Remote { get; } = null;
|
||||
|
||||
public ExtendedVersion(Version apiVersion, Stream extendedVersionFileStream)
|
||||
{
|
||||
ApiVersion = apiVersion;
|
||||
int line = 1;
|
||||
using (var reader = new StreamReader(extendedVersionFileStream))
|
||||
{
|
||||
while (!reader.EndOfStream)
|
||||
{
|
||||
string item = reader.ReadLine();
|
||||
|
||||
if (string.IsNullOrWhiteSpace(item.Trim()))
|
||||
{
|
||||
//empty line, skip
|
||||
continue;
|
||||
}
|
||||
var kvpair = item.Split('=');
|
||||
if (kvpair.Length != 2)
|
||||
{
|
||||
throw new ArgumentException(nameof(extendedVersionFileStream),
|
||||
$"ExtendedVersionFile contains bad key-value pair '{item}' at line {line}.");
|
||||
}
|
||||
var key = kvpair[0].Trim().ToLower();
|
||||
var value = kvpair[1].Trim();
|
||||
switch (key)
|
||||
{
|
||||
case "commit":
|
||||
if (value.Length < 7 || value.Length > 40)
|
||||
{
|
||||
throw new ArgumentException(nameof(extendedVersionFileStream),
|
||||
$"ExtendedVersionFile has a bad commit hash '{value}' on line {line}, it should be a string between 7 and 40 characters.");
|
||||
}
|
||||
CommitHash = value;
|
||||
break;
|
||||
case "branch":
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
{
|
||||
throw new ArgumentException(nameof(extendedVersionFileStream),
|
||||
$"ExtendedVersionFile has a bad branch '{value}' on line {line}, it can not be empty.");
|
||||
}
|
||||
Branch = value;
|
||||
break;
|
||||
case "revision":
|
||||
if (!long.TryParse(value, out long rev))
|
||||
{
|
||||
throw new ArgumentException(nameof(extendedVersionFileStream),
|
||||
$"ExtendedVersionFile has a bad revision '{value}' on line {line}, it should be an integer.");
|
||||
}
|
||||
Revision = rev;
|
||||
break;
|
||||
case "tagdesc":
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
{
|
||||
throw new ArgumentException(nameof(extendedVersionFileStream),
|
||||
$"ExtendedVersionFile has a bad tag description '{value}' on line {line}, it can not be empty.");
|
||||
}
|
||||
TagDescription = value;
|
||||
break;
|
||||
case "remote":
|
||||
var remoteRepo = value.Replace(".git", string.Empty).Replace("git@github.com:", "https://github.com/");
|
||||
if (Uri.IsWellFormedUriString(remoteRepo, UriKind.Absolute))
|
||||
{
|
||||
Remote = new Uri(remoteRepo);
|
||||
}
|
||||
else if (Uri.IsWellFormedUriString(value, UriKind.Absolute))
|
||||
{
|
||||
//fallback if the replace about broke the Uri
|
||||
Remote = new Uri(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new ArgumentException(nameof(extendedVersionFileStream),
|
||||
$"ExtendedVersionFile has a bad remote URI '{value}' on line {line}, it should be a valid remote URI (ssh or https).");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentException(nameof(extendedVersionFileStream),
|
||||
$"ExtendedVersionFile contains an unrecognized key-value pair '{item}' at line {line}.");
|
||||
}
|
||||
line++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{ApiVersion};{CommitHash};{Revision};{Branch};{TagDescription};{Remote}";
|
||||
}
|
||||
}
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="jellyfin_version.ini" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="jellyfin_version.ini" />
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
|
||||
<Exec Command="$(ProjectDir)update-version" />
|
||||
</Target>
|
||||
|
||||
</Project>
|
@ -1,21 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Resources;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Jellyfin.Versioning")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Jellyfin Project")]
|
||||
[assembly: AssemblyProduct("Jellyfin: The Free Software Media System")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2019 Jellyfin Contributors. Code released under the GNU General Public License Version 2")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: NeutralResourcesLanguage("en")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
@ -1,8 +0,0 @@
|
||||
using System.Reflection;
|
||||
using Jellyfin.Versioning;
|
||||
|
||||
//To keep compatibility with Emby do not remove the revision (fourth number)
|
||||
[assembly: AssemblyVersion("10.0.1.0")]
|
||||
[assembly: AssemblyFileVersion("10.0.1.0")]
|
||||
[assembly: AssemblyInformationalVersion("10.0.1.0")]
|
||||
[assembly: AssemblyExtendedVersion("3.5.2.0", true)]
|
@ -1,44 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
# Jellyfin.Versioning/update-version
|
||||
# Part of the Jellyfin project (https://jellyfin.media)
|
||||
#
|
||||
# All copyright belongs to the Jellyfin contributors; a full list can
|
||||
# be found in the file CONTRIBUTORS.md
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
if [ -d "$(dirname "$0")/../.git" ]; then
|
||||
commit=`git rev-parse HEAD`
|
||||
count=`git rev-list HEAD --count`
|
||||
branch=`git rev-parse --abbrev-ref HEAD`
|
||||
desc=`git describe --tags --always --long`
|
||||
remote=`git config --get remote.origin.url`
|
||||
tee jellyfin_version.ini <<EOF
|
||||
commit=$commit
|
||||
revision=$count
|
||||
branch=$branch
|
||||
tagdesc=$desc
|
||||
remote=$remote
|
||||
EOF
|
||||
cat <<EOF
|
||||
Updated build version in jellyfin_version.ini
|
||||
commit=$commit
|
||||
revision=$count
|
||||
branch=$branch
|
||||
tagdesc=$desc
|
||||
remote=$remote
|
||||
EOF
|
||||
else
|
||||
echo Did not update build version because there was no .git directory.
|
||||
fi
|
@ -1,23 +0,0 @@
|
||||
@ECHO OFF
|
||||
goto licenseblock
|
||||
update-version.bat
|
||||
Part of the Jellyfin project (https://jellyfin.media)
|
||||
|
||||
All copyright belongs to the Jellyfin contributors; a full list can
|
||||
be found in the file CONTRIBUTORS.md
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
:licenseblock
|
||||
|
||||
powershell.exe -executionpolicy Bypass -file update-version.ps1
|
@ -1,31 +0,0 @@
|
||||
# Jellyfin.Versioning/update-version.ps1
|
||||
# Part of the Jellyfin project (https://jellyfin.media)
|
||||
#
|
||||
# All copyright belongs to the Jellyfin contributors; a full list can
|
||||
# be found in the file CONTRIBUTORS.md
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
if(Test-Path -Path '..\.git' ){
|
||||
$commit = (git rev-parse HEAD)
|
||||
$count = (git rev-list HEAD --count)
|
||||
$branch = (git rev-parse --abbrev-ref HEAD)
|
||||
$desc = (git describe --tags --always --long)
|
||||
$remote = (git config --get remote.origin.url)
|
||||
Set-Content -Path "jellyfin_version.ini" -Value "commit=$commit`r`nrevision=$count`r`nbranch=$branch`r`ntagdesc=$desc`r`nremote=$remote"
|
||||
Write-Host Updated build version in jellyfin_version.ini
|
||||
Write-Host "commit=$commit`r`nrevision=$count`r`nbranch=$branch`r`ntagdesc=$desc`r`nremote=$remote`r`n"
|
||||
} else {
|
||||
Write-Host Did not update build version because there was no .git directory.
|
||||
}
|
Loading…
Reference in new issue