Skip to content

Commit

Permalink
Merge pull request #33 from DuckDuckStudio/main
Browse files Browse the repository at this point in the history
sync: 更新Issue20分支
  • Loading branch information
DuckDuckStudio authored Jul 24, 2024
2 parents 9ef7a81 + 1e9ecdf commit 3c2ba6a
Show file tree
Hide file tree
Showing 9 changed files with 241 additions and 41 deletions.
2 changes: 1 addition & 1 deletion ABOUT_TRANSLATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
目前已有的翻译
| 语言 | 翻译者 | 完整度 | 版本 | README | README_DEV | USER_HANDBOOK | Chinese_git | Chinese_git-pack |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|
| 简体中文 | 官方语言 | 100% | v2.8 ||||||
| 简体中文 | 官方语言 | 100% | v2.9 ||||||
| 繁體中文 | 官方翻译 | 40% | v1.5 ||||||
3 changes: 1 addition & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,5 +104,4 @@ python -m nuitka --output-dir=. --show-progress --windows-icon-from-ico=ico.ico

## 已知问题

以下是 中文Git 目前的已知问题:
* 在使用 中文Git 执行部分命令时不会有输出,但命令成功执行
请见[Issues页](https://github.com/DuckDuckStudio/Chinese_git/issues)
8 changes: 2 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@

项目网站:[[点我前往]](https://duckduckstudio.github.io/yazicbs.github.io/Tools/chinese_git/)

> [!TIP]
> 你可以使用 _winget_ 来安装中文Git了!!!
你还在为忘记 git 的命令而发愁吗?
你还要每次执行 git 命令都要去搜索吗?
机会来了!使用中文Git,这些统统不是问题!
Expand Down Expand Up @@ -38,7 +35,7 @@ winget install DuckStudio.ChineseGit
![1718315176839](https://duckduckstudio.github.io/Chinese_git/image/README/1718315176839.png)

> [!TIP]
> 设支持的版本号为n,则 $2.4 \leqslant n \leqslant 2.7$
> 设支持的版本号为n,则 $2.4 \leqslant n \leqslant 2.8(Pre-release)$
## 项目依赖
在使用 中文Git 前,请确保你有以下依赖,否则 中文Git 将变成废物。
Expand Down Expand Up @@ -244,5 +241,4 @@ $ python 中文git.py 推送
## 已知问题
以下是 中文Git 目前的已知问题:
* 在使用 中文Git 执行部分命令时不会有输出,但命令成功执行
请见[Issues页](https://github.com/DuckDuckStudio/Chinese_git/issues)。
8 changes: 2 additions & 6 deletions README_DEV.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@
> 想要贡献更新这些文档以及中文Git项目?请查看[CONTRIBUTING](https://github.com/DuckDuckStudio/Chinese_git/blob/main/CONTRIBUTING.md)文件。感谢您的支持!您的支持是我们持续维护的动力!
> 项目遵循 GPL-2.0 许可协议。
> [!TIP]
> 你可以使用 _winget_ 来安装中文Git了!!!
## 项目介绍

中文Git是一个简单的工具,旨在使不熟悉英文的用户更轻松地使用Git。
Expand All @@ -33,7 +30,7 @@ winget install DuckStudio.ChineseGit
> 使用 _winget_ 获取的不用配置Python。
> [!TIP]
> 设支持的版本号为n,则 $2.4 \leqslant n \leqslant 2.7$
> 设支持的版本号为n,则 $2.4 \leqslant n \leqslant 2.8(Pre-release)$
## 项目依赖

Expand Down Expand Up @@ -247,5 +244,4 @@ $ python 中文git.py 推送
## 已知问题
以下是 中文Git 目前的已知问题:
* 在使用 中文Git 执行部分命令时不会有输出,但命令成功执行
请见[Issues页](https://github.com/DuckDuckStudio/Chinese_git/issues)。
8 changes: 2 additions & 6 deletions USER_HANDBOOK.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@

项目网站:[[点我前往]](https://duckduckstudio.github.io/yazicbs.github.io/Tools/chinese_git/)

> [!TIP]
> 你可以使用 _winget_ 来安装中文Git了!!!
这是 中文Git 的用户手册,你可以在这里找到一些关于 中文Git 的使用方法。

## 如何获取
Expand All @@ -26,7 +23,7 @@ winget install DuckStudio.ChineseGit
> 使用 _winget_ 获取的不用配置Python。
> [!TIP]
> 设支持的版本号为n,则 $2.4 \leqslant n \leqslant 2.7$
> 设支持的版本号为n,则 $2.4 \leqslant n \leqslant 2.8(Pre-release)$
## 依赖

Expand Down Expand Up @@ -237,8 +234,7 @@ pip install -r requirements.txt
## 已知问题
以下是 中文Git 目前的已知问题:
* 在使用 中文Git 执行部分命令时不会有输出,但命令成功执行
请见[Issues页](https://github.com/DuckDuckStudio/Chinese_git/issues)。
## 关于编码
中文Git 的所有项目文件源码以及发行版文件均使用 UTF-8 编码,如出现乱码请使用 UTF-8 编码而非简体中文系统默认的 GBK 编码。
7 changes: 5 additions & 2 deletions config.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
{
"information": {
"version": "v2.9"
},
"application": {
"notice": {
"time": "",
"leve": "",
"level": "",
"content": ""
},
"run": {
"auto_check_update": "True",
"auto_get_notice": "Ture"
"auto_get_notice": "True"
}
}
}
124 changes: 115 additions & 9 deletions 中文git-pack.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,116 @@

# ---------- 版本定义及更新 ----------
# 定义版本号
VERSION = 'v2.8-pack'
VERSION = 'v2.9-pack'

# --- 读取配置文件 ---
def fetch_json():
config_url = "https://duckduckstudio.github.io/yazicbs.github.io/Tools/chinese_git/files/json/config.json"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
try:
response = requests.get(config_url, headers=headers)
if response.status_code == 200:
json_data = response.json()
print(f"{Fore.GREEN}{Fore.RESET} 获取最新默认配置文件成功")
return json_data
else:
print(f"{Fore.RED}{Fore.RESET} 无法获取最新默认配置文件\n{Fore.BLUE}[!]{Fore.RESET} 返回状态码: {Fore.YELLOW}{response.status_code}{Fore.RESET}")
return None
except Exception as e:
print(f"{Fore.RED}{Fore.RESET} 尝试获取最新默认配置文件失败,错误: {Fore.RED}{e}{Fore.RESET}")
return None

def merge_json(old_json, new_json):
# 合并两个 JSON 对象
updated_json = old_json.copy()

# 处理旧 JSON 中的键
keys_to_remove = []
for key in updated_json:
if key not in new_json:
keys_to_remove.append(key)

for key in keys_to_remove:
del updated_json[key]

# 合并新 JSON 中的值
for key in new_json:
if key in updated_json and isinstance(updated_json[key], dict) and isinstance(new_json[key], dict):
# 如果是字典类型,递归合并
updated_json[key] = merge_json(updated_json[key], new_json[key])
else:
# 直接更新值
updated_json[key] = new_json[key]

return updated_json

def update_json():
new_json = fetch_json()
if not new_json:
return 1
try:
with open(config_file, 'r') as f:
old_json = json.load(f)

updated_json = merge_json(old_json, new_json)

# 将更新后的配置写入文件
with open(config_file, 'w') as f:
json.dump(updated_json, f, indent=4)

print(f"{Fore.GREEN}{Fore.RESET} 默认配置文件更新成功")
return 0
except Exception as e:
print(f"{Fore.RED}{Fore.RESET} 更新配置文件时出错:\n{Fore.RED}{e}{Fore.RESET}")
return 1

config_file = os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), "config.json")
with open(config_file, 'r') as file:
config_data = json.load(file)
auto_check_update = config_data['application']['run']['auto_check_update']
auto_get_notice = config_data['application']['run']['auto_get_notice']
if os.path.exists(config_file):
try:
with open(config_file, 'r') as file:
config_data = json.load(file)
auto_check_update = config_data['application']['run']['auto_check_update']
auto_get_notice = config_data['application']['run']['auto_get_notice']
except Exception as e:
auto_check_update = True
auto_get_notice = True
print(f"{Fore.RED}{Fore.RESET} 读取配置文件时出错:\n{Fore.RED}{e}{Fore.RESET}\n{Fore.BLUE}[!]{Fore.RESET} 请检查配置文件是否正确,您可以先删除配置文件然后运行任意中文git的命令来重新生成默认配置文件。")
else:
# 没有配置文件就默认都要
auto_check_update = True
auto_get_notice = True
print(f"{Fore.YELLOW}{Fore.RESET} 您的中文Git的安装目录下似乎{Fore.YELLOW}缺少配置文件{Fore.RESET},程序将尝试自动生成默认配置文件!")
try:
# 生成一个默认配置文件
# 将数据结构转换为 JSON 格式的字符串
json_str = {
"information": {
"version": "v2.9"
},
"application": {
"notice": {
"time": "",
"level": "",
"content": ""
},
"run": {
"auto_check_update": "True",
"auto_get_notice": "True"
}
}
}

json_str = json.dumps(json_str, indent=4) # indent 参数用于设置缩进(4空)

# 将 JSON 字符串写入文件
with open(config_file, 'w') as f:
f.write(json_str)
print(f"{Fore.GREEN}{Fore.RESET} 默认配置文件生成成功")
except Exception as e:
print(f"{Fore.RED}{Fore.RESET} 默认配置文件生成失败!请{Fore.YELLOW}手动添加{Fore.RESET}配置文件,否则将无法运行一些功能!")
print(f"{Fore.BLUE}[!]{Fore.RESET} 如果你觉得这不应该可以提交Issue")
# -------------------

def always_check():# 每次执行命令都要检查的
Expand Down Expand Up @@ -65,13 +167,17 @@ def auto_update():
# 询问用户是否安装更新
choice = input(f"{Fore.BLUE}?{Fore.RESET} 是否要安装此更新? (是/否): ").lower()
if choice in ['是','y','yes']:
print(f"{Fore.BLUE}[!]{Fore.RESET} 正在更新配置文件...")
if update_json() == 1:
print(f"{Fore.YELLOW}{Fore.RESET} 请手动更新配置文件并提交issue")
return
print(f"{Fore.BLUE}[!]{Fore.RESET} 正在尝试更新更新程序...")
new_filename = download_update_file(new_version)
if new_filename:
replace_current_program(new_filename)
else:
return
print(f"{Fore.BLUE}[!]{Fore.RESET} 检测到您使用的是打包版,请前往新窗口继续...")
print(f"{Fore.BLUE}[!]{Fore.RESET} 由于您使用的是打包版,请前往新窗口继续...")
print(f"{Fore.BLUE}[!]{Fore.RESET} 正在启动更新程序...")
try:
os.system(f"start {script_path}\\中文git更新程序.exe --version {new_version}")
Expand Down Expand Up @@ -164,9 +270,9 @@ def read_previous_notice():
with open(previous_notice_file, 'r') as file:
return file.read()
except FileNotFoundError:
return ""
return None
except Exception:
return "" # 以防出现像 microsoft/winget-pkgs #156224 中的错误
return None # 以防出现像 microsoft/winget-pkgs #156224 中的错误

def display_notice(manual=False):
if manual == True:
Expand All @@ -176,7 +282,7 @@ def display_notice(manual=False):

if manual == "本地":
content = read_previous_notice()
if content == "":
if not content:
print(f"{Fore.RED}{Fore.RESET} 没有本地公告")
return
else:
Expand Down
Binary file modified 中文git.exe
Binary file not shown.
Loading

0 comments on commit 3c2ba6a

Please sign in to comment.