Skip to content

Commit

Permalink
Merge pull request #13 from xiwuou/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
xijaja authored Mar 25, 2022
2 parents fa8548c + 5f90d46 commit db98a09
Show file tree
Hide file tree
Showing 14 changed files with 235 additions and 163 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
一个将本地某个指定的文件夹上传到云oss存储的服务,
特别是我在使用Axure制作PRD文档之后,需要将其与团队共享。

这虽然有很多方法,比如:Axure自带的云、国内的pmdaniu、axurehub等
或者你可以改用墨刀、xiaopiao、mastergo等原型设计共享工具
这虽然有很多方法,比如:Axure自带的云、国内的pmDaNiu、AxureHub等
或者你可以改用墨刀、xiaopiu、MasterGo等原型设计共享工具
甚至你可以使用一些协同设计工具,说实话我不太喜欢那些在浏览器就能运行的设计工具,
他们很方便很轻量,但是我想说"有了在线PS工具,为什么你还要下载客户端"?
除了习惯已经养成外,web工具缺乏桌面程序的厚重,小手一抖返回上一页了over。
Expand Down
35 changes: 21 additions & 14 deletions app/uper.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,32 +14,43 @@ import (
// CliUper 是CLI版
// ---------------------------------------------
func CliUper(project conf.Project, upServer any) {
// 声明进度条
var bar tool.Bar
// 执行上传
var ts int
num, addr := Grouper(project, upServer, func(n1, n2 int) {
var bar tool.Bar // 声明进度条
bar.NewOption(0, int64(n2)) // 创建进度条
bar.Play(int64(n1)) // 进度值
bar.Finish() // 结束进度条
if ts == 0 {
bar.NewOption(0, int64(n2)) // 创建进度条
bar.Play(int64(n1)) // 进度值
} else {
bar.Play(int64(n1)) // 进度值
}
ts++ // 更新被调用次数
})
bar.Finish() // 结束进度条
// 执行结束
fmt.Printf("🪖 报告长官, %v 个文件上传成功,访问地址为:%v/\n", num, addr)
fmt.Println("ps: 如果您上传的并非网页文件或图片,可能无法访问哟~")
// 准备退出
time.Sleep(3 * time.Second)
for {
tool.GoodBye()
// 结束退出
if !tool.IsOsWindows() {
return
} else {
time.Sleep(3 * time.Second)
for {
tool.GoodBye()
}
}
}

// Grouper 是GUI版
// ---------------------------------------------
func Grouper(project conf.Project, upServer any, f func(n1, n2 int)) (num int, addr string) {
dirPth, name := project.LocalFile, project.Name
newPathList := tool.GetFileList(dirPth) // 遍历本地指定的文件夹 文件路径列表
newPathList := tool.GetFileList(dirPth) // 遍历本地指定的文件夹文件路径列表
fmt.Println("扫描完成,开始上传:")

var wg sync.WaitGroup // 初始化并发池
var total int // 文件总数
var total int // 已上传的文件总数
var domain string // 查看地址的域名
switch project.UpType {
case "阿里云OSS":
Expand Down Expand Up @@ -145,7 +156,3 @@ func view(name, domain string) (addr string) {
return domain + name
}
}

func ProgressBar(n1, n2 int) (value float32) {
return float32(n1 / n2)
}
7 changes: 4 additions & 3 deletions aui/gui.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package aui
import (
"fmt"
g "github.com/AllenDang/giu"
"grouper/conf"
"os"
)

Expand Down Expand Up @@ -33,7 +34,7 @@ func Loop() {
),
g.Menu("开发者").Layout(
g.Label("产品:Grouper"),
g.Label("版本:v1.0.0-beta"),
g.Label(fmt.Sprintf("版本:%s\n", conf.Version)),
g.Label("Github:https://github.com/xiwuou/grouper"),
g.Separator(), // 分割线
g.Label("开发者:習武"),
Expand Down Expand Up @@ -61,9 +62,9 @@ func Loop() {
isCyclic = true // 重新读取配置信息
}

// 修改项目
// 编辑项目
if isFixProject {
g.Window("修改项目").IsOpen(&isFixProject).Flags(g.WindowFlagsNone).Pos(320, 30).Size(400, 200).Layout(
g.Window("编辑项目").IsOpen(&isFixProject).Flags(g.WindowFlagsNone).Pos(320, 30).Size(400, 200).Layout(
fixOldProject(&oldProject)...,
)
isCyclic = true // 重新读取配置信息
Expand Down
25 changes: 24 additions & 1 deletion aui/variable.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ func addr(name string, upType string) (addr string) {
}
}

// 服务
// 上传服务,绑定对应的配置
func upServer(upType string) any {
switch upType {
case "阿里云OSS":
Expand All @@ -94,6 +94,29 @@ func upServer(upType string) any {
}
}

// 点击上传时,判断对应配置是否完整
func checkupServerConfig(upType string) (isComplete bool) {
switch upType {
case "阿里云OSS":
if ali.KeyID == "" || ali.KeySecret == "" || ali.Endpoint == "" || ali.BucketName == "" {
return false
}
return true
case "腾讯云COS":
if ten.BucketName == "" || ten.SecretID == "" || ten.SecretKey == "" || ten.CosRegion == "" {
return false
}
return true
case "七牛云OSS":
if qin.BucketName == "" || qin.AccessKey == "" || qin.SecretKey == "" {
return false
}
return true
default:
return false
}
}

// 更新文本信息
// wnd.SetDropCallback(onDrop)
// func onDrop(names []string) {
Expand Down
52 changes: 34 additions & 18 deletions aui/window.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@ func initProjectItems() (projectsWidget []g.Widget) {
return projectsWidget
}

// 项目列表 todo 拷贝链接
// 项目列表
func projectList(p *conf.Project) *g.TreeNodeWidget {
return g.TreeNode(p.Name).Flags(g.TreeNodeFlagsCollapsingHeader).Layout(
g.Label(fmt.Sprintf("项目名称:%v", p.Name)),
g.Label(fmt.Sprintf("上传服务:%v", p.UpType)),
g.Label(fmt.Sprintf("浏览地址:%v", addr(p.Name, p.UpType))).Wrapped(true),
g.Row(
g.Button("拷链").Size(60, 25),
g.Button("修改").Size(60, 25).OnClick(func() {
// g.Button("拷链").Size(60, 25),
g.Button("编辑").Size(60, 25).OnClick(func() {
oldProject = *p // 修改项目参数传递
if !isFixProject {
isFixProject = !isFixProject
Expand All @@ -40,7 +40,13 @@ func projectList(p *conf.Project) *g.TreeNodeWidget {
}
// 一个新的上传任务
g.Msgbox("上传项目", "开始打通领域闭环!").Buttons(g.MsgboxButtonsOkCancel).ResultCallback(func(result g.DialogResult) {
// 点击了"OK"
if result {
// 判断配置文件数据是否完整,如果不完整则提示
if !checkupServerConfig(p.UpType) {
g.Msgbox("对应上传服务的配置不完整", "犹豫就会败北,现在就去【设置】中配置").Buttons(g.MsgboxButtonsOk)
return // 从此处返回,防止程序崩溃报错
}
// 通过回调获悉,开始上传
fmt.Println("开始上传……")
var wg sync.WaitGroup
Expand Down Expand Up @@ -68,35 +74,45 @@ func projectList(p *conf.Project) *g.TreeNodeWidget {
// 修改项目
func fixOldProject(old *conf.Project) []g.Widget {
return []g.Widget{
g.Label("当前项目的名字(唯一且不可修改)"),
g.InputText(&old.Name).Size(g.Auto).Flags(g.InputTextFlagsReadOnly),
g.Label(fmt.Sprintf("项目名称:%v", old.Name)), // g.InputText(&old.Name).Size(g.Auto).Flags(g.InputTextFlagsReadOnly),
g.Dummy(0, 1), // 间隙、空隙
g.Label("选择上传服务(一定要设置对应的资料哦)"),
g.Combo("", upType[upTypeSelected], upType, &upTypeSelected).Size(g.Auto).OnChange(func() {
old.UpType = upType[upTypeSelected]
fmt.Println(upType[upTypeSelected])
}),
g.Label("文件夹路径(文件夹)"),
g.InputText(&old.LocalFile).Size(g.Auto),
g.Align(g.AlignCenter).To(
g.Row(
g.Button("确定").Size(60, 25).OnClick(func() {
fmt.Println("修改项目: ", old)
old.UpdateOneProject()
g.Msgbox("修改完成", "项目重组生态格局").Buttons(g.MsgboxButtonsOk).ResultCallback(func(result g.DialogResult) {
if result {
isFixProject = false // 关闭修改项目的窗口
}
})
}),
),
g.Dummy(0, 3), // 间隙、空隙
g.Row(
g.Button("删除").Size(60, 25).OnClick(func() {
g.Msgbox("删除项目", "快速沉淀,适度倾斜资源").Buttons(g.MsgboxButtonsOkCancel).ResultCallback(func(result g.DialogResult) {
if result {
old.DeleteOneProject() // 删除
isCyclic = true // 重新读取配置信息
isFixProject = false // 关闭项目窗口
}
})
}),
g.Button("取消").Size(60, 25).OnClick(func() {
isFixProject = false // 关闭项目窗口
}),
g.Button("确定").Size(60, 25).OnClick(func() {
old.UpdateOneProject() // 修改一个项目
g.Msgbox("修改完成", "项目重组生态格局").Buttons(g.MsgboxButtonsOk).ResultCallback(func(result g.DialogResult) {
if result {
isFixProject = false // 关闭修改项目的窗口
}
})
}),
),
}
}

// 添加一个项目 todo 增加对项目名称的判断限制
func addOneProject(one *conf.Project) []g.Widget {
return []g.Widget{
g.Label("输入你项目的名字(唯一且非中文)"),
g.Label("输入你项目的名字(唯一且非中文,设保存后不可更改)"),
g.InputText(&one.Name).Size(g.Auto),
g.Label("选择上传服务(一定要设置对应的资料哦)"),
g.Combo("", upType[upTypeSelected], upType, &upTypeSelected).Size(g.Auto).OnChange(func() {
Expand Down
58 changes: 58 additions & 0 deletions cli/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package main

import (
"flag"
"fmt"
"grouper/conf"
"grouper/tool"
"os"
"strings"
)

// P N 启动参数
var P = flag.String("p", ".", "path 指定上传文件夹的路径,需为绝对路径,默认当前目录")
var N = flag.String("n", "", "name 项目名称,请使用小写字母开头不含特殊符号,默认为文件夹名")

// StartInit 初始化
func main() {
var printVersion bool // 是否输出版本信息
flag.BoolVar(&printVersion, "v", false, "显示出版本信息")
flag.BoolVar(&printVersion, "version", false, "显示出版本信息")
// 解析命令行参数
flag.Parse()
if printVersion {
fmt.Printf("版本号:%s\n", conf.Version)
fmt.Println("开发者:習武(公众号:逆天思维产品汪)")
fmt.Println("使用说明:xxx.xxx")
fmt.Println("Github地址:https://github.com/xiwuou/uper")
fmt.Println("感谢Star 🌟 欢迎Fork 👏")
os.Exit(0) // 退出程序
}

// 规范路径
path := *P
if path[len(path)-1:] != "/" {
path = fmt.Sprintf("%v/%v", *P, *N) // 本地路径
} else {
path = fmt.Sprintf("%v%v", *P, *N) // 本地路径
}
// 规范名称
name := *N
if name == "" {
arr := strings.Split(path, "/")
name = arr[len(arr)-2 : len(arr)-1][0]
} // 没有名字则拆分链接最后一个单词
tool.NameStyle(name, path) // 检查命名是否符合规范,文件夹是否存在
name += "/" // 为名字加上斜杠用以命名上传后的文件夹
// 遍历文件并上传
pj := conf.Project{
Name: name,
UpType: "阿里云OSS",
LocalFile: path,
}
upload := conf.DataInfo.UpService.AliyunOss
fmt.Println(pj)
fmt.Println(upload)
// 开始上传
// app.CliUper(pj, upload)
}
2 changes: 1 addition & 1 deletion Makefile → cmd/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ all:

default:
go build -o main main.go
appify -name "grouper" -icon resource/app.png main
appify -name "grouper" -icon ../resource/app.png main
rm -rf main

windows:
Expand Down
4 changes: 2 additions & 2 deletions build_win.sh → cmd/build_win.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cat > grouper.rc << EOL
id ICON "resource/app.ico"
GLFW_ICON ICON "resource/app.ico"
id ICON "../resource/app.ico"
GLFW_ICON ICON "../resource/app.ico"
EOL

#x86_64-w64-mingw32-windres grouper.rc -O coff -o grouper.syso
Expand Down
3 changes: 0 additions & 3 deletions main.go → cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ import (

// 程序入口
func main() {
// 启动
// app.Uper()

// GUI // g.MasterWindowFlagsNotResizable // MasterWindowFlagsMaximized
wnd := g.NewMasterWindow("Grouper 🐟", 730, 600, g.MasterWindowFlagsNotResizable)
// wnd.SetDropCallback(onDrop)
Expand Down
Loading

0 comments on commit db98a09

Please sign in to comment.