mirror of
https://github.com/duplicati/duplicati.git
synced 2026-05-06 07:16:38 -04:00
Removed unused files.
Moved installer files into the ReleaseBuilder
This commit is contained in:
@@ -1,19 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Mono.Cecil" Version="0.11.5" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.DotNet.Analyzers.Compatibility" Version="0.2.12-alpha">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,17 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2012
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DependencyFinder", "DependencyFinder.csproj", "{3E891818-579A-4C06-8066-4C702BFA5921}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{3E891818-579A-4C06-8066-4C702BFA5921}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{3E891818-579A-4C06-8066-4C702BFA5921}.Debug|x86.Build.0 = Debug|x86
|
||||
{3E891818-579A-4C06-8066-4C702BFA5921}.Release|x86.ActiveCfg = Release|x86
|
||||
{3E891818-579A-4C06-8066-4C702BFA5921}.Release|x86.Build.0 = Release|x86
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -1,85 +0,0 @@
|
||||
// Copyright (C) 2024, The Duplicati Team
|
||||
// https://duplicati.com, hello@duplicati.com
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the "Software"),
|
||||
// to deal in the Software without restriction, including without limitation
|
||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
// and/or sell copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Mono.Cecil;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
namespace DependencyFinder
|
||||
{
|
||||
class MainClass
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
var lst =
|
||||
Directory.EnumerateFiles(args[0], "*.exe", SearchOption.AllDirectories).Union(
|
||||
Directory.EnumerateFiles(args[0], "*.dll", SearchOption.AllDirectories))
|
||||
.Select(x => {
|
||||
try { return AssemblyDefinition.ReadAssembly(x); }
|
||||
catch { return null; }
|
||||
}).Where(x => x != null)
|
||||
.Distinct();
|
||||
|
||||
PoC(lst, Console.Out, new [] { args[0] });
|
||||
|
||||
}
|
||||
|
||||
//Adapted from: https://stackoverflow.com/questions/9262464/tool-to-show-assembly-dependencies
|
||||
public static void PoC(IEnumerable<AssemblyDefinition> assemblies, TextWriter writer, IEnumerable<string> searchfolders)
|
||||
{
|
||||
var resolver = new DefaultAssemblyResolver();
|
||||
searchfolders.ToList().ForEach(x => resolver.AddSearchDirectory(x));
|
||||
|
||||
//writer.WriteLine("digraph Dependencies {");
|
||||
var loaded = assemblies
|
||||
.SelectMany(a => a.Modules.Cast<ModuleDefinition>())
|
||||
.SelectMany(m => m.AssemblyReferences.Cast<AssemblyNameReference>())
|
||||
.Distinct()
|
||||
.Select(asm => {
|
||||
var dllname = asm.Name + ".dll";
|
||||
//Console.WriteLine("Probing for {0}", dllname);
|
||||
try { return AssemblyDefinition.ReadAssembly(dllname); }
|
||||
catch { }
|
||||
try { return resolver.Resolve(asm); }
|
||||
catch { }
|
||||
|
||||
return null;
|
||||
})
|
||||
.Where(assembly => assembly != null)
|
||||
.ToList();
|
||||
|
||||
//loaded.ForEach(a => a.MainModule.ReadSymbols());
|
||||
|
||||
loaded.Select(x => x.FullName).Distinct().OrderBy(x => x).ToList().ForEach(x => writer.WriteLine("{0}", x));
|
||||
/*loaded.ForEach(a =>
|
||||
{
|
||||
foreach (var r in a.MainModule.AssemblyReferences.Cast<AssemblyNameReference>())
|
||||
writer.WriteLine(@"""{0}"" -> ""{1}"";", r.Name, a.Name.Name);
|
||||
} );*/
|
||||
|
||||
//writer.WriteLine("}");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Duplicati\Library\Interface\Duplicati.Library.Interface.csproj" />
|
||||
<ProjectReference Include="..\..\Duplicati\Library\Encryption\Duplicati.Library.Encryption.csproj" />
|
||||
<ProjectReference Include="..\..\Duplicati\Library\Utility\Duplicati.Library.Utility.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.DotNet.Analyzers.Compatibility" Version="0.2.12-alpha">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,42 +0,0 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29123.88
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GnupgSigningTool", "GnupgSigningTool.csproj", "{72B910F2-8E80-4955-A0D6-ED4C35CEE665}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Utility", "..\..\Duplicati\Library\Utility\Duplicati.Library.Utility.csproj", "{DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Encryption", "..\..\Duplicati\Library\Encryption\Duplicati.Library.Encryption.csproj", "{2CF2D90E-C25B-47AD-91E0-98451BAB8058}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Interface", "..\..\Duplicati\Library\Interface\Duplicati.Library.Interface.csproj", "{C5899F45-B0FF-483C-9D38-24A9FCAAB237}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{72B910F2-8E80-4955-A0D6-ED4C35CEE665}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{72B910F2-8E80-4955-A0D6-ED4C35CEE665}.Debug|x86.Build.0 = Debug|x86
|
||||
{72B910F2-8E80-4955-A0D6-ED4C35CEE665}.Release|x86.ActiveCfg = Release|x86
|
||||
{72B910F2-8E80-4955-A0D6-ED4C35CEE665}.Release|x86.Build.0 = Release|x86
|
||||
{DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Release|x86.Build.0 = Release|Any CPU
|
||||
{2CF2D90E-C25B-47AD-91E0-98451BAB8058}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{2CF2D90E-C25B-47AD-91E0-98451BAB8058}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{2CF2D90E-C25B-47AD-91E0-98451BAB8058}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{2CF2D90E-C25B-47AD-91E0-98451BAB8058}.Release|x86.Build.0 = Release|Any CPU
|
||||
{C5899F45-B0FF-483C-9D38-24A9FCAAB237}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{C5899F45-B0FF-483C-9D38-24A9FCAAB237}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{C5899F45-B0FF-483C-9D38-24A9FCAAB237}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{C5899F45-B0FF-483C-9D38-24A9FCAAB237}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {71CC6B1F-7F52-4059-8761-30B3D0501ECC}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -1,128 +0,0 @@
|
||||
// Copyright (C) 2024, The Duplicati Team
|
||||
// https://duplicati.com, hello@duplicati.com
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the "Software"),
|
||||
// to deal in the Software without restriction, including without limitation
|
||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
// and/or sell copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace GnupgSigningTool
|
||||
{
|
||||
public static class Program
|
||||
{
|
||||
|
||||
private static string keyfilepassword;
|
||||
|
||||
private static string gpgkeypassphrase;
|
||||
private static string gpgkeyfile;
|
||||
private static string gpgpath;
|
||||
private static string gpgkeyid;
|
||||
private static bool useArmor;
|
||||
|
||||
private static string inputFile;
|
||||
private static string signatureFile;
|
||||
|
||||
private static void SpawnGPG()
|
||||
{
|
||||
|
||||
var armorOption = useArmor ? "--armor" : "";
|
||||
|
||||
var gpgArgument = string.Format("--pinentry-mode loopback --passphrase-fd 0 --batch --yes {0} -u \"{1}\" --output \"{2}\" --detach-sig \"{3}\"",
|
||||
armorOption,
|
||||
gpgkeyid,
|
||||
signatureFile,
|
||||
inputFile);
|
||||
|
||||
var proc = System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
|
||||
{
|
||||
FileName = gpgpath,
|
||||
Arguments = gpgArgument,
|
||||
RedirectStandardInput = true,
|
||||
UseShellExecute = false
|
||||
});
|
||||
|
||||
proc.StandardInput.WriteLine(gpgkeypassphrase);
|
||||
|
||||
proc.WaitForExit();
|
||||
}
|
||||
|
||||
private static void LoadGPGKeyIdAndPassphrase()
|
||||
{
|
||||
using (var enc = new Duplicati.Library.Encryption.AESEncryption(keyfilepassword, new Dictionary<string, string>()))
|
||||
using (var ms = new System.IO.MemoryStream())
|
||||
using (var fs = System.IO.File.OpenRead(gpgkeyfile))
|
||||
{
|
||||
try
|
||||
{
|
||||
enc.Decrypt(fs, ms);
|
||||
}
|
||||
catch (System.Security.Cryptography.CryptographicException e)
|
||||
{
|
||||
throw new ArgumentException("Failed to decrypt gpg secret credentials file: {0}\n", e.Message);
|
||||
}
|
||||
|
||||
ms.Position = 0;
|
||||
|
||||
using (var sr = new System.IO.StreamReader(ms))
|
||||
{
|
||||
var lines = sr.ReadToEnd().Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
|
||||
gpgkeyid = lines[0];
|
||||
gpgkeypassphrase = lines[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void Main(string[] _args)
|
||||
{
|
||||
var args = new List<string>(_args);
|
||||
var opts = Duplicati.Library.Utility.CommandLineParser.ExtractOptions(args);
|
||||
|
||||
opts.TryGetValue("inputfile", out inputFile);
|
||||
opts.TryGetValue("signaturefile", out signatureFile);
|
||||
opts.TryGetValue("keyfile-password", out keyfilepassword);
|
||||
opts.TryGetValue("gpgkeyfile", out gpgkeyfile);
|
||||
opts.TryGetValue("gpgpath", out gpgpath);
|
||||
opts.TryGetValue("armor", out string armor);
|
||||
|
||||
useArmor = Boolean.TryParse(armor, out useArmor) && useArmor;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(gpgkeyfile))
|
||||
{
|
||||
throw new ArgumentException("No gpgfile with encrypted credentials specified.");
|
||||
}
|
||||
|
||||
if (!System.IO.File.Exists(gpgkeyfile))
|
||||
{
|
||||
throw new ArgumentException("Specified file with encrypted gpg credentials not found.");
|
||||
}
|
||||
|
||||
LoadGPGKeyIdAndPassphrase();
|
||||
|
||||
if (gpgkeyid is null || gpgkeypassphrase is null)
|
||||
{
|
||||
throw new ArgumentException("Could not fetch gpg key id or gpg passphrase.");
|
||||
}
|
||||
|
||||
gpgpath = gpgpath ?? Duplicati.Library.Encryption.GPGEncryption.GetGpgProgramPath();
|
||||
|
||||
SpawnGPG();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,130 +0,0 @@
|
||||
// Copyright (C) 2024, The Duplicati Team
|
||||
// https://duplicati.com, hello@duplicati.com
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
// copy of this software and associated documentation files (the "Software"),
|
||||
// to deal in the Software without restriction, including without limitation
|
||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
// and/or sell copies of the Software, and to permit persons to whom the
|
||||
// Software is furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace UpdateVersionStamp
|
||||
{
|
||||
public static class Program
|
||||
{
|
||||
private static readonly string DIR_SEP = Path.DirectorySeparatorChar.ToString();
|
||||
private static readonly Dictionary<string, Regex> FILEMAP;
|
||||
|
||||
static Program()
|
||||
{
|
||||
var versionre = @"(?<version>\d+\.\d+\.(\*|(\d+(\.(\*|\d+)))?))";
|
||||
FILEMAP = new Dictionary<string, Regex>(StringComparer.InvariantCultureIgnoreCase);
|
||||
FILEMAP.Add("UpgradeData.wxi", new Regex(@"\<\?define ProductVersion\=\""" + versionre + @"\"" \?\>"));
|
||||
FILEMAP.Add("AssemblyRedirects.xml", new Regex(@"newVersion\=\""" + versionre + @"\"""));
|
||||
FILEMAP.Add("index.html", new Regex(@"\?v\=" + versionre));
|
||||
FILEMAP.Add("login.html", new Regex(@"\?v\=" + versionre));
|
||||
FILEMAP.Add("app.js", new Regex(@"\?v\=" + versionre));
|
||||
}
|
||||
|
||||
private class Options
|
||||
{
|
||||
public string sourcefolder = Path.GetFullPath(Environment.CurrentDirectory);
|
||||
public string ignorefilter = null;
|
||||
public string version = null;
|
||||
public string versiontag = null;
|
||||
|
||||
public void Fixup()
|
||||
{
|
||||
sourcefolder = Duplicati.Library.Common.IO.Util.AppendDirSeparator(System.IO.Path.GetFullPath(sourcefolder.Replace("/", DIR_SEP)));
|
||||
if (ignorefilter != null)
|
||||
ignorefilter =ignorefilter.Replace("/", DIR_SEP);
|
||||
}
|
||||
}
|
||||
|
||||
public static void Main(string[] _args)
|
||||
{
|
||||
List<string> args = new List<string>(_args);
|
||||
Dictionary<string, string> options = Duplicati.Library.Utility.CommandLineParser.ExtractOptions(args);
|
||||
Options opt = new Options();
|
||||
|
||||
foreach (FieldInfo fi in opt.GetType().GetFields())
|
||||
if (options.ContainsKey(fi.Name))
|
||||
fi.SetValue(opt, options[fi.Name]);
|
||||
|
||||
opt.Fixup();
|
||||
|
||||
Duplicati.Library.Utility.IFilter filter = null;
|
||||
if (!string.IsNullOrEmpty(opt.ignorefilter))
|
||||
filter = new Duplicati.Library.Utility.FilterExpression(opt.ignorefilter, false);
|
||||
|
||||
Func<string, bool> isFile = (string x) => !x.EndsWith(DIR_SEP);
|
||||
|
||||
var paths = Duplicati.Library.Utility.Utility.EnumerateFileSystemEntries(opt.sourcefolder)
|
||||
.Where(x => Duplicati.Library.Utility.FilterExpression.Matches(filter, x))
|
||||
.Where(x => isFile(x) && FILEMAP.ContainsKey(Path.GetFileName(x)))
|
||||
.Select(x =>
|
||||
{
|
||||
var m = FILEMAP[Path.GetFileName(x)].Match(File.ReadAllText(x));
|
||||
return m.Success ?
|
||||
new { File = x, Version = new Version(m.Groups["version"].Value.Replace("*", "0")), Display = m.Groups["version"].Value }
|
||||
: null;
|
||||
})
|
||||
.Where(x => x != null)
|
||||
.ToArray(); //No need to re-eval
|
||||
|
||||
if (paths.Count() == 0)
|
||||
{
|
||||
Console.WriteLine("No files found to update...");
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (var p in paths)
|
||||
Console.WriteLine("{0}\t:{1}", p.Display, p.File);
|
||||
|
||||
if (string.IsNullOrWhiteSpace(opt.version))
|
||||
{
|
||||
var maxv = paths.Select(x => x.Version).Max();
|
||||
opt.version = new Version(
|
||||
maxv.Major,
|
||||
maxv.Minor,
|
||||
maxv.Build,
|
||||
maxv.Revision).ToString();
|
||||
}
|
||||
|
||||
//Sanity check
|
||||
var nv = new Version(opt.version).ToString(4);
|
||||
|
||||
foreach (var p in paths)
|
||||
{
|
||||
var re = FILEMAP[Path.GetFileName(p.File)];
|
||||
var txt = File.ReadAllText(p.File);
|
||||
//var m = re.Match(txt).Groups["version"];
|
||||
txt = re.Replace(txt, (m) => {
|
||||
var t = m.Groups["version"];
|
||||
return m.Value.Replace(t.Value, nv);
|
||||
});
|
||||
File.WriteAllText(p.File, txt);
|
||||
}
|
||||
|
||||
Console.WriteLine("Updated {0} files to version {1}", paths.Count(), opt.version);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Duplicati\Library\Utility\Duplicati.Library.Utility.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.DotNet.Analyzers.Compatibility" Version="0.2.12-alpha">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,35 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UpdateVersionStamp", "UpdateVersionStamp.csproj", "{1920C3B0-98A0-410F-8972-9C19FA616FE5}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Utility", "..\..\Duplicati\Library\Utility\Duplicati.Library.Utility.csproj", "{DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Common", "..\..\Duplicati\Library\Common\Duplicati.Library.Common.csproj", "{D63E53E4-A458-4C2F-914D-92F715F58ACF}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{1920C3B0-98A0-410F-8972-9C19FA616FE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1920C3B0-98A0-410F-8972-9C19FA616FE5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1920C3B0-98A0-410F-8972-9C19FA616FE5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1920C3B0-98A0-410F-8972-9C19FA616FE5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D63E53E4-A458-4C2F-914D-92F715F58ACF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D63E53E4-A458-4C2F-914D-92F715F58ACF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D63E53E4-A458-4C2F-914D-92F715F58ACF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D63E53E4-A458-4C2F-914D-92F715F58ACF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(MonoDevelopProperties) = preSolution
|
||||
StartupItem = UpdateVersionStamp.csproj
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Reference in New Issue
Block a user