另一个首次安装程序
项目描述
另一个首次安装程序
此应用程序负责在用户完成安装后首次启动时安装Flatpaks。它旨在作为自定义zenity对话框的替代品。
项目目标
- 通过JSON/YAML配置文件驱动
- 支持任意预安装和后安装命令
- 配置驱动的屏幕
- 屏幕独立的状态管理,可设置默认值
- 可通过插入Python类/插件扩展功能
核心功能
这是首次安装程序每个功能的目标
标题屏幕
标题屏幕将包含三个主要元素。一个图像/图标,一个标题/主要文本,以及一个段落描述文本。
ICON
TITLE TEXT
this is a description
to accompany the title
screen.
软件包屏幕
显示要安装的几个软件包组,允许展开每个组以单独选择离散的软件包或切换整个组的开/关。
例如
Core [/] >
Gaming [/] >
Office [/] >
展开核心将显示
Core [/] v
firefox [x]
calculator [x]
text editor [x]
clocks [x]
fonts [x]
Gaming [/] >
Office [/] >
然后应用程序将安装Flatpaks。可能/可以开发用于其他软件包系统的插件。
配置
title: uBlue First Boot
properties:
mode: "run-on-change"
path: "~/.config/yafti/last-run"
actions:
pre:
- run: /full/path/to/bin --with --params
- run: /another/command run
- yafti.plugin.flatpak:
install: org.gnome.Calculator
post:
- run: /run/these/commands --after --all --screens
screens:
first-screen:
source: yafti.screen.title
values:
title: "That was pretty cool"
icon: "/path/to/icon"
description: |
Time to play overwatch
applications:
source: yafti.screen.package
values:
title: Package Installation
show_terminal: true
package_manager: yafti.plugin.flatpak
groups:
Core:
description: All the good stuff
packages:
- Calculator: org.gnome.Calculator
- Firefox: org.mozilla.firefox
Gaming:
description: GAMES GAMES GAMES
packages:
- Steam: com.valvesoftware.Steam
- Games: org.gnome.Games
Office:
description: All the work stuff
packages:
- LibreOffice: org.libreoffice.LibreOffice
- Calendar: org.gnome.Calendar
final-screen:
source: yafti.screen.title
values:
title: "All done"
icon: "/path/to/icon"
description: |
Thanks for installing, join the community, next steps
开发
本项目使用 Poetry 和 Python 3.11。请确保您已安装 Python 3.11 和 Poetry。检出仓库并导航到根项目目录。
先决条件
如果您使用的是 Ublue / 不变操作系统,您需要在工具箱中运行这些命令以及 poetry 安装。
sudo dnf install python3-devel cairo-devel gobject-introspection-devel cairo-gobject-devel
poetry install
运行
poetry run python -m yafti tests/example.yml
这将启动 Yafti 窗口。
从 Containerfile 运行
yafti 的主要用途之一是用于 Containerfile 中,以便在首次启动时处理 Flatpak 的安装。将以下内容添加到您的 Containerfile 中以将 yafti 添加到您的镜像
RUN pip install --prefix=/usr yafti
此外,您还需要一个脚本将 .desktop 文件复制到用户的主目录
然后,在 /etc/yafti.yml
中添加一个文件,包含您的自定义设置。查看 示例文件 以获取灵感。
测试
本项目使用 pytest、black、isort 和 ruff 进行测试和代码风格检查。
poetry run pytest --cov=yafti --cov-report=term-missing
poetry run black yafti
poetry run isort yafti
poetry run ruff yafti
贡献
本项目遵循 fork 和 pull request 风格的贡献。
创建 Fork
只需访问 GitHub 页面并 点击 "Fork" 按钮。完成之后,您可以使用您喜欢的 git 客户端克隆您的仓库或直接进入命令行。
# Clone your fork to your local machine
git clone git@github.com:USERNAME/FORKED-PROJECT.git
保持 Fork 更新
虽然这不是一个绝对必要的步骤,但如果您打算做任何事情(而不仅仅是快速修复),您将想要确保通过跟踪您 fork 的原始 "upstream" 仓库来保持您的 fork 更新。您可以通过 GitHub UI 或本地将此仓库作为上游添加来做到这一点。
# Add 'upstream' repo to list of remotes
git remote add upstream https://github.com/ublue-os/yafti.git
# Verify the new remote named 'upstream'
git remote -v
每当您想要更新您的 fork 以包含最新的 upstream 变更时,您首先需要获取 upstream 仓库的分支和最新提交,以便将它们引入您的仓库
# Fetch from upstream remote
git fetch upstream
# View all branches, including those from upstream
git branch -va
现在,检出您自己的 main 分支,并将其与 upstream 仓库的 main 分支合并
# Checkout your main branch and merge upstream
git checkout main
git merge --ff-only upstream/main
如果没有在本地 main 分支上创建任何独特的提交,git 将简单地执行快速前进。然而,如果您已经在 main 上进行了更改(在大多数情况下您不应该这样做 - 见下一节,您可能需要处理冲突。在处理冲突时,请务必尊重上游所做的更改。
现在,您的本地 main 分支已更新,与上游的所有更改保持一致。
进行工作
创建分支
每当您开始开发新功能或修复错误时,创建一个新分支非常重要。这不仅是一个合适的 git 工作流程,而且还能使您的更改保持组织化和与主分支分离,从而使您能够轻松提交和管理每个任务完成的多个 pull request。
要创建一个新分支并开始工作
# Checkout the main branch - you want your new branch to come from main
git checkout main
# Create a new branch named newfeature (give your branch its own simple informative name)
git checkbout -b newfeature
现在,您可以自由地修改并做出您想要的任何更改。
提交信息
我们使用 Conventional Commits,并通过机器人强制执行它们,以保持变更日志整洁。
chore: add Oyster build script
docs: explain hat wobble
feat: add beta sequence
fix: remove broken confirmation message
refactor: share logic between 4d3d3d3 and flarhgunnstow
style: convert tabs to spaces
test: ensure Tayne retains clothing
如果您有多个提交,在 提交更改 时,请确保使用符合常规提交风格的 PR 标题,因为此项目执行 squash 合并,这将用作您的贡献。
提交 pull request
清理工作
在提交 pull request 之前,您可能想要做一些事情来清理您的分支,使其尽可能简单,以便原始仓库的维护者可以测试、接受和合并您的作品。
如果上游主分支上有任何提交,您应该重新基础您的功能分支,以便合并时将是一个简单的快速前进,无需任何冲突解决工作。
# Fetch upstream main and merge with your repo's main branch
git fetch upstream
git checkout main
git merge upstream/main
# If there were any new commits, rebase your feature branch
git checkout newfeature
git rebase main
提交
一旦您将所有更改提交并推送到GitHub,请访问GitHub上您分支的页面,选择您的功能分支,然后点击拉取请求按钮。如果您需要调整拉取请求,只需将更新推送到GitHub即可。您的拉取请求将自动跟踪功能分支上的更改并进行更新。
接受和合并拉取请求
请注意,与前面各节从创建分支并生成拉取请求的人的角度撰写的不同,本节从处理传入拉取请求的原始存储库所有者的角度撰写。因此,“分支创建者”将原始存储库称为upstream
,我们现在将其视为原始存储库的所有者和标准origin
远程。
检出和测试拉取请求
有几种方法可以在本地检出拉取请求。检出拉取请求的方式使用标准的git操作完成。打开.git/config
文件,并在[remote "origin"]
下添加新行
fetch = +refs/pull/*/head:refs/pull/origin/*
现在您可以获取和检出任何拉取请求,以便您可以对其进行测试
# Fetch all pull request branches
git fetch origin
# Checkout out a given pull request branch based on its number
git checkout -b 9001 pull/origin/9001
请注意,这些分支将是只读的,您无法推送任何更改。
自动合并拉取请求
在合并将是简单的快进的情况下,您可以通过点击GitHub上拉取请求页面上的按钮来自动进行合并。
项目详情
下载文件
下载适合您平台的项目文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
yafti-0.9.0.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6c78b42f9e69ae092dbaf5384315a1283f0091b9e7605ddfc841c0e00539bf14 |
|
MD5 | 6f03a500ca161be3f67f51512b99a68a |
|
BLAKE2b-256 | e5e154357a9d5c2dda2258a3c3f58bb9d76404bce75c9f5162a1bab96e18c925 |
yafti-0.9.0-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4a5b93180cccc59175035ec2b94aec7fc1fa453e62b8f40fc3f13dda61935716 |
|
MD5 | ad2ffa464b9e14262a5a650d63f1c525 |
|
BLAKE2b-256 | bc4538d9164abc737f382ae712d57ae960343309da8c354ab4cfeed601106778 |