Compare commits

...

15 Commits

Author SHA1 Message Date
nsnail
ceb2af5064
merge
chore(release): 2.1.0
2023-12-15 21:02:22 +08:00
nsnail
a9a05b7a7e chore(release): 2.1.0 2023-12-15 21:01:53 +08:00
nsnail
1d67b6d9a8
feat: windows右键菜单打开Git仓库网址 (#30) 2023-12-15 21:01:36 +08:00
nsnail
5299b2b636
merge
chore(release): 2.0.5
2023-12-15 17:26:16 +08:00
tk
f4fcf8aea4 chore(release): 2.0.5 2023-12-15 17:25:12 +08:00
nsnail
d587b69ca5
merge
chore(release): 2.0.4
2023-12-15 17:18:15 +08:00
tk
5d15e924f4 chore(release): 2.0.4 2023-12-15 17:17:57 +08:00
nsnail
285649cb8e
build: 📦 构建脚本优化 (#27) 2023-12-15 17:12:44 +08:00
nsnail
55f077d12f
build: 📦 构建脚本优化 (#26) 2023-12-15 16:54:22 +08:00
nsnail
e16378817c
merge
chore(release): 2.0.2
2023-12-15 16:49:25 +08:00
tk
95a99a17b8 chore(release): 2.0.2 2023-12-15 16:48:26 +08:00
nsnail
db7d32aa01
build: 📦 构建脚本优化 (#24) 2023-12-15 16:46:33 +08:00
nsnail
82ab9cb42b
build: 📦 构建脚本优化 (#23) 2023-12-15 16:43:46 +08:00
nsnail
b1a8b4b03e
build: 📦 构建脚本调整 (#22) 2023-12-15 16:40:06 +08:00
nsnail
b652a2274f
build: 📦 构建脚本调整 (#21) 2023-12-15 16:35:06 +08:00
11 changed files with 129 additions and 78 deletions

View File

@ -2,16 +2,18 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
### [2.0.1](https://github.com/nsnail/dot/compare/v1.1.1...v2.0.1) (2023-12-14)
## [2.1.0](https://github.com/nsnail/dot/compare/v2.0.5...v2.1.0) (2023-12-15)
### Features
* ✨ windows右键菜单打开Git仓库网址 ([#30](https://github.com/nsnail/dot/issues/30)) ([1d67b6d](https://github.com/nsnail/dot/commit/1d67b6d9a8865a99c42837fb9eeceb3b33082712))
### [2.0.5](https://github.com/nsnail/dot/compare/v2.0.4...v2.0.5) (2023-12-15)
### [2.0.4](https://github.com/nsnail/dot/compare/v1.1.1...v2.0.4) (2023-12-15)
### Bug Fixes
* 🐛 构建脚本缺陷 ([#15](https://github.com/nsnail/dot/issues/15)) ([d4d5467](https://github.com/nsnail/dot/commit/d4d5467656182457e6cb3a679026ac596676e81c))
## [2.0.0](https://github.com/nsnail/dot/compare/v1.1.1...v2.0.0) (2023-12-13)
### Bug Fixes
* 🐛 构建脚本缺陷 ([#15](https://github.com/nsnail/dot/issues/15)) ([d4d5467](https://github.com/nsnail/dot/commit/d4d5467656182457e6cb3a679026ac596676e81c))
* 🐛 构建脚本缺陷 ([#15](https://github.com/nsnail/dot/issues/15)) ([d4d5467](https://github.com/nsnail/dot/commit/d4d5467656182457e6cb3a679026ac596676e81c))

View File

@ -6,6 +6,8 @@ IP工具
Json工具
Json文本转义成字符串
NTP_标准时钟
Windows右键菜单已卸载
Windows右键菜单已添加
下载分块数
下载完成
仓库
@ -16,6 +18,7 @@ NTP_标准时钟
剩余时间
剪贴板未包含正确的Json字符串
单击鼠标左键复制颜色和坐标到剪贴板
卸载Windows右键菜单
压缩Json文本
只读模式_不会真实修改文件
同步本机时间
@ -28,6 +31,7 @@ NTP_标准时钟
屏幕坐标颜色选取工具
已复制到剪贴板
总进度
打开Git仓库网址
执行命令后保留会话
指定的路径不存在
按下Esc隐藏译文
@ -44,9 +48,10 @@ NTP_标准时钟
本机时钟
本机时钟偏移平均值
本机时间已同步
查找此目录下所有Git仓库目录
查找文件
查找此目录下所有Git仓库目录
格式化Json文本
添加Windows右键菜单
目录检索深度
移除文件尾部换行和空格
移除文件的UTF8_BOM

10
dot.sln
View File

@ -13,12 +13,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{5198A03D-0
.editorconfig = .editorconfig
.gitattributes = .gitattributes
.gitignore = .gitignore
CHANGELOG.md = CHANGELOG.md
Directory.Build.props = Directory.Build.props
Dot.sln.DotSettings = Dot.sln.DotSettings
dot.sln.DotSettings = dot.sln.DotSettings
dotnet-tools.json = dotnet-tools.json
global.json = global.json
LICENSE = LICENSE
nuget.config = nuget.config
NuGet.Config = NuGet.Config
package.json = package.json
README.md = README.md
README.zh-CN.md = README.zh-CN.md
@ -26,14 +27,15 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{5198A03D-0
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{BB0B25C9-0901-4923-913F-00F9A6B352A5}"
ProjectSection(SolutionItems) = preProject
1.git.pull.request.ps1 = scripts/1.git.pull.request.ps1
2.git.release.ps1 = scripts/2.git.release.ps1
3.git.recreate.branch.ps1 = scripts/3.git.recreate.branch.ps1
clean.ln.csx = scripts/clean.ln.csx
code.clean.csx = scripts/code.clean.csx
code.clean.ps1 = scripts/code.clean.ps1
gen.cs.tt = scripts/gen.cs.tt
gen.ln.cmd = scripts/gen.ln.cmd
gen.resx.tt = scripts/gen.resx.tt
git.pr.ps1 = scripts/git.pr.ps1
git.rc.ps1 = scripts/git.rc.ps1
image.optimize.csx = scripts/image.optimize.csx
install.as.tpl.ps1 = scripts/install.as.tpl.ps1
rename.csx = scripts/rename.csx

View File

@ -1,5 +1,5 @@
{
"version": "2.0.1",
"version": "2.1.0",
"devDependencies": {
"cz-git": "^1.7.1",
"commitizen": "^4.3.0",
@ -11,4 +11,4 @@
"path": "node_modules/cz-git"
}
}
}
}

View File

@ -8,4 +8,4 @@ git push --set-upstream origin $branch
Start-Process -FilePath "https://github.com/nsnail/dot/compare/main...$branch"
Write-Host "按『Enter』重建分支『Ctrl+C』退出"
Pause
./git.rc.ps1
./3.git.recreate.branch.ps1

28
scripts/2.git.release.ps1 Normal file
View File

@ -0,0 +1,28 @@
cd ..
$types = @{
'1' = @('major', '主版本')
'2' = @('minor', '此版本')
'3' = @('patch', '修订版本')
}
$prefix = ''
while ($null -eq $types[$prefix])
{
$prefix = Read-Host "请选择版本类型`n" $( & { param($i) $i | ForEach-Object { "$_ : $( $types[$_][0] )$( $types[$_][1] )`n" } } $types.Keys | Sort-Object )
}
git checkout main
git branch -D release
git checkout -b release
./node_modules/.bin/standard-version -r $types[$prefix][0]
cd ./scripts
./code.clean.ps1
git commit --amend --no-edit -a
$tag = $(git describe --tags $(git rev-list --tags --max-count=1))
git tag -d $tag
git tag $tag
git push --tags origin release
Start-Process -FilePath "https://github.com/nsnail/dot/compare/main...release"
Write-Host "按『Enter』回到主分支『Ctrl+C』退出"
Pause
git checkout main
git pull
git branch -D release

View File

@ -1,4 +1,4 @@
dotnet jb cleanupcode --no-build --include =$( $( git status --porcelain | Where-Object { $_ -match "^\s*[MA]" } | ForEach-Object { $_.TrimStart(" M").TrimStart(" A") } ) -join ";" ) ../Dot.sln
jb cleanupcode --no-build --include =$( $( git status --porcelain | Where-Object { $_ -match "^\s*[MA]" } | ForEach-Object { $_.TrimStart(" M").TrimStart(" A") } ) -join ";" ) ../Dot.sln
dot rbom -w -e refs -e .git -e node_modules ../
dot trim -w -e refs -e .git -e node_modules ../
dot tolf -w -e refs -e .git -e node_modules ../

View File

@ -1,60 +0,0 @@
using System.Diagnostics;
namespace Dot;
// ReSharper disable once UnusedType.Global
// ReSharper disable once UnusedMember.Global
internal static class CsxEditor
{
private static readonly string[] _imageExts = { "*.jpg", "*.jpeg" };
// ReSharper disable once UnusedMember.Local
#pragma warning disable S1144, RCS1213, IDE0051
private static void Run()
#pragma warning restore IDE0051, RCS1213, S1144
{
/*
for %%i in (*.png) do pngquant %%i --force --output %%i --skip-if-larger
for %%i in (*.jpg) do jpegtran -copy none -optimize -perfect %%i %%i
*
*/
var files = Directory.EnumerateFiles(".", "*.png"
, new EnumerationOptions {
RecurseSubdirectories = true
, AttributesToSkip = FileAttributes.ReparsePoint
, IgnoreInaccessible = true
})
.ToArray();
_ = Parallel.ForEach(files, file => {
var startInfo = new ProcessStartInfo {
FileName = "pngquant"
, Arguments
= $"\"{file}\" --force --output \"{file}\" --skip-if-larger"
};
using var p = Process.Start(startInfo);
p!.WaitForExit();
Console.WriteLine(p.ExitCode);
});
files = _imageExts.SelectMany(x => Directory.EnumerateFiles(
".", x
, new EnumerationOptions {
RecurseSubdirectories = true
, AttributesToSkip = FileAttributes.ReparsePoint
, IgnoreInaccessible = true
}))
.ToArray();
_ = Parallel.ForEach(files, file => {
var startInfo = new ProcessStartInfo {
FileName = "jpegtran"
, Arguments = $"-copy none -optimize -perfect \"{file}\" \"{file}\""
};
using var p = Process.Start(startInfo);
p!.WaitForExit();
Console.WriteLine(p.ExitCode);
});
}
}

View File

@ -3,6 +3,9 @@
using System.Collections.Concurrent;
using System.Diagnostics;
using NSExt.Extensions;
#if NET8_0_WINDOWS
using Microsoft.Win32;
#endif
namespace Dot.Git;
@ -10,12 +13,31 @@ namespace Dot.Git;
[Localization(typeof(Ln))]
internal sealed class Main : ToolBase<Option>
{
#if NET8_0_WINDOWS
private static readonly Regex _regex = new("url = (http.*)");
#endif
private Encoding _gitOutputEnc; // git command rsp 编码
private ConcurrentDictionary<string, StringBuilder> _repoRsp; // 仓库信息容器
private ConcurrentDictionary<string, TaskStatusColumn.Statues> _repoStatus;
protected override Task CoreAsync()
{
#if NET8_0_WINDOWS
#pragma warning disable IDE0046
if (Opt.InstallRightClickMenu) {
#pragma warning restore IDE0046
return InstallRightClickMenuAsync();
}
if (Opt.UninstallRightClickMenu) {
return UninstallRightClickMenuAsync();
}
if (Opt.OpenGitUrl) {
return OpenGitUrlAsync();
}
#endif
return !Directory.Exists(Opt.Path)
? throw new ArgumentException($"{Ln.指定的路径不存在}: {Opt.Path}", "PATH")
: CoreInternalAsync();
@ -125,4 +147,36 @@ internal sealed class Main : ToolBase<Option>
payload.Value.StopTask();
}
#if NET8_0_WINDOWS
#pragma warning disable SA1204
private static Task InstallRightClickMenuAsync()
#pragma warning restore SA1204
{
Registry.SetValue(@"HKEY_CLASSES_ROOT\Directory\shell\OpenGitUrl\command", string.Empty
, @$"""{Environment.ProcessPath}"" git -o ""%1""");
Console.WriteLine(Ln.Windows右键菜单已添加);
return Task.CompletedTask;
}
private static Task UninstallRightClickMenuAsync()
{
Registry.ClassesRoot.OpenSubKey(@"Directory\shell", true)?.DeleteSubKeyTree("OpenGitUrl", false);
Console.WriteLine(Ln.Windows右键菜单已卸载);
return Task.CompletedTask;
}
private Task OpenGitUrlAsync()
{
var file = @$"{Opt.Path}\.git\config";
if (File.Exists(file)) {
var content = File.ReadAllText(file);
Console.WriteLine(content);
var url = _regex.Match(content).Groups[1].Value;
_ = Process.Start("explorer.exe", url);
}
return Task.CompletedTask;
}
#endif
}

View File

@ -28,4 +28,24 @@ internal sealed class Option : OptionBase
[Localization(typeof(Ln))]
[DefaultValue(".")]
public string Path { get; set; }
#if NET8_0_WINDOWS
[CommandOption("-i|--install-right-click-menu")]
[Description(nameof(Ln.添加Windows右键菜单))]
[Localization(typeof(Ln))]
[DefaultValue(false)]
public bool InstallRightClickMenu { get; set; }
[CommandOption("-u|--uninstall-right-click-menu")]
[Description(nameof(Ln.卸载Windows右键菜单))]
[Localization(typeof(Ln))]
[DefaultValue(false)]
public bool UninstallRightClickMenu { get; set; }
[CommandOption("-o|--open-git-url")]
[Description(nameof(Ln.打开Git仓库网址))]
[Localization(typeof(Ln))]
[DefaultValue(false)]
public bool OpenGitUrl { get; set; }
#endif
}