linux-脚本无法与更改proj结构一起使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux-脚本无法与更改proj结构一起使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2616字,纯文字阅读大概需要4分钟。
内容图文
我有以下文件make.sh正在以下项目上工作:
myapp
utils
run.go
auth.go
server.go
make.sh
当我运行此脚本时,它将创建预期的tar,并且一切正常!
#!/bin/sh
go get ./...
rm -r /tmp/myapp
rm /tmp/myapp.tar.gz
mkdir /tmp/myapp
go build -o /tmp/myapp/myapp_mac
env GOOS=windows GOARH=amd64 go build -o /tmp/myapp/myapp_win64.exe
env GOOS=linux GOARCH=amd64 go build -o /tmp/myapp/myapp
cp -R ./resources /tmp/myapp/
cd /tmp
tar -czf myapp.tar.gz myapp
现在,我需要将项目结构更改为以下内容:
myapp
make.sh
src
utils
run.go
auth.go
server
server.go
现在,当我运行“ make.sh”时,我得到了一个错误:
can't load package: package myapp: no Go files in /Users/i023333/go/src/myapp
知道如何适应它吗?
我尝试将make.sh照原样放置在服务器文件夹中,它会创建tar,但它无效…我知道应该在这里更改脚本以采用新项目结构吗?
编辑1
在生成的结构之前如下
tmp
myapp
myapp
myapp_mac
myapp_win64.exe
myapp.tar.gz
在查尔斯·达菲的答案中尝试了脚本之后,我得到了以下内容
tmp
myapp
myapp
myapp_mac
myapp_win64.exe
tar文件丢失了,知道吗?
解决方法:
要更改脚本,请添加以下行:
cd src/server || exit
…在采取任何行动之前,都无需考虑来源.从而:
#!/bin/sh
cd src/server || exit # <--- ADD THIS LINE
go get ./... || exit
rm -rf /tmp/myapp # aside: using hardcoded names in /tmp is a Really Bad Idea.
rm -f /tmp/myapp.tar.gz
mkdir -p /tmp/myapp
go build -o /tmp/myapp/myapp_mac || exit
GOOS=windows GOARH=amd64 go build -o /tmp/myapp/myapp_win64.exe || exit
GOOS=linux GOARCH=amd64 go build -o /tmp/myapp/myapp || exit
cp -R ./resources /tmp/myapp/ || exit
cd /tmp || exit
tar -czf /tmp/myapp.tar.gz myapp
就是说,我建议改为这样写:
#!/bin/bash
basedir=$(cd -- "${BASH_SOURCE%/*}" && pwd) || exit
rm -rf -- "$basedir/build" || exit
mkdir -p -- "$basedir/"{build,dist} || exit
build() (cd src/server && GOOS=$1 GOARCH=$2 exec go build -o "$basedir/build/$3")
build darwin amd64 myapp_mac || exit
build linux amd64 myapp || exit
build windows amd64 myapp_win64 || exit
if [[ -d "$basedir/resources" ]]; then
cp -PR -- "$basedir/resources/." "$basedir/build/resources" || exit
fi
tar -czf "$basedir/dist/myapp.tar.gz" -C "$basedir/build" .
注意:
>我们相对于脚本的位置进行操作,因此即使从其他目录运行也可以运行(您可以运行./myapp/build,并将builddir设置为./myapp的路径).
>我们不使用/ tmp(如果我们想安全地使用它,那么我们将使用builddir = $(mktemp -t -d myapp-build.XXXXXX),然后使用rm -rf“ $builddir”结束).
>我们使用的是#!/ bin / bash shebang,它允许使用[[]]和$BASH_SOURCE等扩展名,而不是#!/ bin / sh.
>重复的操作封装在一个函数中.
>我们总是死于意外错误(包括如果资源不存在而无法复制资源),但也不会死于意外错误(例如由于资源不存在而归档复制) .
>脚本的退出状态始终是最后一条命令的退出状态,因此不需要在那里进行显式错误处理.
内容总结
以上是互联网集市为您收集整理的linux-脚本无法与更改proj结构一起使用全部内容,希望文章能够帮你解决linux-脚本无法与更改proj结构一起使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。