mirror of
https://github.com/nsnail/dot.git
synced 2025-05-02 16:52:50 +08:00
Compare commits
No commits in common. "ceb2af5064af659512bc995705ac591426db89ab" and "7ea61043aaa8fdf30916cfa38bf6adaa88dcfa55" have entirely different histories.
ceb2af5064
...
7ea61043aa
20
CHANGELOG.md
20
CHANGELOG.md
@ -2,18 +2,16 @@
|
|||||||
|
|
||||||
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.
|
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.1.0](https://github.com/nsnail/dot/compare/v2.0.5...v2.1.0) (2023-12-15)
|
### [2.0.1](https://github.com/nsnail/dot/compare/v1.1.1...v2.0.1) (2023-12-14)
|
||||||
|
|
||||||
|
|
||||||
### 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
|
### 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))
|
||||||
|
|
||||||
|
## [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))
|
||||||
|
@ -6,8 +6,6 @@ IP工具
|
|||||||
Json工具
|
Json工具
|
||||||
Json文本转义成字符串
|
Json文本转义成字符串
|
||||||
NTP_标准时钟
|
NTP_标准时钟
|
||||||
Windows右键菜单已卸载
|
|
||||||
Windows右键菜单已添加
|
|
||||||
下载分块数
|
下载分块数
|
||||||
下载完成
|
下载完成
|
||||||
仓库
|
仓库
|
||||||
@ -18,7 +16,6 @@ Windows右键菜单已添加
|
|||||||
剩余时间
|
剩余时间
|
||||||
剪贴板未包含正确的Json字符串
|
剪贴板未包含正确的Json字符串
|
||||||
单击鼠标左键复制颜色和坐标到剪贴板
|
单击鼠标左键复制颜色和坐标到剪贴板
|
||||||
卸载Windows右键菜单
|
|
||||||
压缩Json文本
|
压缩Json文本
|
||||||
只读模式_不会真实修改文件
|
只读模式_不会真实修改文件
|
||||||
同步本机时间
|
同步本机时间
|
||||||
@ -31,7 +28,6 @@ Windows右键菜单已添加
|
|||||||
屏幕坐标颜色选取工具
|
屏幕坐标颜色选取工具
|
||||||
已复制到剪贴板
|
已复制到剪贴板
|
||||||
总进度
|
总进度
|
||||||
打开Git仓库网址
|
|
||||||
执行命令后保留会话
|
执行命令后保留会话
|
||||||
指定的路径不存在
|
指定的路径不存在
|
||||||
按下Esc隐藏译文
|
按下Esc隐藏译文
|
||||||
@ -48,10 +44,9 @@ Windows右键菜单已添加
|
|||||||
本机时钟
|
本机时钟
|
||||||
本机时钟偏移平均值
|
本机时钟偏移平均值
|
||||||
本机时间已同步
|
本机时间已同步
|
||||||
查找文件
|
|
||||||
查找此目录下所有Git仓库目录
|
查找此目录下所有Git仓库目录
|
||||||
|
查找文件
|
||||||
格式化Json文本
|
格式化Json文本
|
||||||
添加Windows右键菜单
|
|
||||||
目录检索深度
|
目录检索深度
|
||||||
移除文件尾部换行和空格
|
移除文件尾部换行和空格
|
||||||
移除文件的UTF8_BOM
|
移除文件的UTF8_BOM
|
||||||
|
10
dot.sln
10
dot.sln
@ -13,13 +13,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{5198A03D-0
|
|||||||
.editorconfig = .editorconfig
|
.editorconfig = .editorconfig
|
||||||
.gitattributes = .gitattributes
|
.gitattributes = .gitattributes
|
||||||
.gitignore = .gitignore
|
.gitignore = .gitignore
|
||||||
CHANGELOG.md = CHANGELOG.md
|
|
||||||
Directory.Build.props = Directory.Build.props
|
Directory.Build.props = Directory.Build.props
|
||||||
dot.sln.DotSettings = dot.sln.DotSettings
|
Dot.sln.DotSettings = Dot.sln.DotSettings
|
||||||
dotnet-tools.json = dotnet-tools.json
|
dotnet-tools.json = dotnet-tools.json
|
||||||
global.json = global.json
|
global.json = global.json
|
||||||
LICENSE = LICENSE
|
LICENSE = LICENSE
|
||||||
NuGet.Config = NuGet.Config
|
nuget.config = nuget.config
|
||||||
package.json = package.json
|
package.json = package.json
|
||||||
README.md = README.md
|
README.md = README.md
|
||||||
README.zh-CN.md = README.zh-CN.md
|
README.zh-CN.md = README.zh-CN.md
|
||||||
@ -27,15 +26,14 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{5198A03D-0
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{BB0B25C9-0901-4923-913F-00F9A6B352A5}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{BB0B25C9-0901-4923-913F-00F9A6B352A5}"
|
||||||
ProjectSection(SolutionItems) = preProject
|
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
|
clean.ln.csx = scripts/clean.ln.csx
|
||||||
code.clean.csx = scripts/code.clean.csx
|
code.clean.csx = scripts/code.clean.csx
|
||||||
code.clean.ps1 = scripts/code.clean.ps1
|
code.clean.ps1 = scripts/code.clean.ps1
|
||||||
gen.cs.tt = scripts/gen.cs.tt
|
gen.cs.tt = scripts/gen.cs.tt
|
||||||
gen.ln.cmd = scripts/gen.ln.cmd
|
gen.ln.cmd = scripts/gen.ln.cmd
|
||||||
gen.resx.tt = scripts/gen.resx.tt
|
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
|
image.optimize.csx = scripts/image.optimize.csx
|
||||||
install.as.tpl.ps1 = scripts/install.as.tpl.ps1
|
install.as.tpl.ps1 = scripts/install.as.tpl.ps1
|
||||||
rename.csx = scripts/rename.csx
|
rename.csx = scripts/rename.csx
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"version": "2.1.0",
|
"version": "2.0.1",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"cz-git": "^1.7.1",
|
"cz-git": "^1.7.1",
|
||||||
"commitizen": "^4.3.0",
|
"commitizen": "^4.3.0",
|
||||||
@ -11,4 +11,4 @@
|
|||||||
"path": "node_modules/cz-git"
|
"path": "node_modules/cz-git"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
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
|
|
@ -1,4 +1,4 @@
|
|||||||
jb cleanupcode --no-build --include =$( $( git status --porcelain | Where-Object { $_ -match "^\s*[MA]" } | ForEach-Object { $_.TrimStart(" M").TrimStart(" A") } ) -join ";" ) ../Dot.sln
|
dotnet 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 rbom -w -e refs -e .git -e node_modules ../
|
||||||
dot trim -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 ../
|
dot tolf -w -e refs -e .git -e node_modules ../
|
@ -8,4 +8,4 @@ git push --set-upstream origin $branch
|
|||||||
Start-Process -FilePath "https://github.com/nsnail/dot/compare/main...$branch"
|
Start-Process -FilePath "https://github.com/nsnail/dot/compare/main...$branch"
|
||||||
Write-Host "按『Enter』重建分支,『Ctrl+C』退出"
|
Write-Host "按『Enter』重建分支,『Ctrl+C』退出"
|
||||||
Pause
|
Pause
|
||||||
./3.git.recreate.branch.ps1
|
./git.rc.ps1
|
60
src/backend/Dot/CsxEditor.cs
Normal file
60
src/backend/Dot/CsxEditor.cs
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
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);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -3,9 +3,6 @@
|
|||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using NSExt.Extensions;
|
using NSExt.Extensions;
|
||||||
#if NET8_0_WINDOWS
|
|
||||||
using Microsoft.Win32;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace Dot.Git;
|
namespace Dot.Git;
|
||||||
|
|
||||||
@ -13,31 +10,12 @@ namespace Dot.Git;
|
|||||||
[Localization(typeof(Ln))]
|
[Localization(typeof(Ln))]
|
||||||
internal sealed class Main : ToolBase<Option>
|
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 Encoding _gitOutputEnc; // git command rsp 编码
|
||||||
private ConcurrentDictionary<string, StringBuilder> _repoRsp; // 仓库信息容器
|
private ConcurrentDictionary<string, StringBuilder> _repoRsp; // 仓库信息容器
|
||||||
private ConcurrentDictionary<string, TaskStatusColumn.Statues> _repoStatus;
|
private ConcurrentDictionary<string, TaskStatusColumn.Statues> _repoStatus;
|
||||||
|
|
||||||
protected override Task CoreAsync()
|
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)
|
return !Directory.Exists(Opt.Path)
|
||||||
? throw new ArgumentException($"{Ln.指定的路径不存在}: {Opt.Path}", "PATH")
|
? throw new ArgumentException($"{Ln.指定的路径不存在}: {Opt.Path}", "PATH")
|
||||||
: CoreInternalAsync();
|
: CoreInternalAsync();
|
||||||
@ -147,36 +125,4 @@ internal sealed class Main : ToolBase<Option>
|
|||||||
|
|
||||||
payload.Value.StopTask();
|
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
|
|
||||||
}
|
}
|
@ -28,24 +28,4 @@ internal sealed class Option : OptionBase
|
|||||||
[Localization(typeof(Ln))]
|
[Localization(typeof(Ln))]
|
||||||
[DefaultValue(".")]
|
[DefaultValue(".")]
|
||||||
public string Path { get; set; }
|
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
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user