From 82efc2329fa6fdb4ad61ad17fcd1ad2d8c2f373a Mon Sep 17 00:00:00 2001 From: blacktop Date: Mon, 4 Sep 2023 11:27:56 -0600 Subject: [PATCH] chore: go back to CGO-less sqlite --- .goreleaser.yml | 5 +- cmd/default.go | 10 +-- cmd/load.go | 10 +-- cmd/revert.go | 8 +- cmd/root.go | 2 +- cmd/save.go | 8 +- go.mod | 22 ++++-- go.sum | 70 ++++++++--------- internal/command/command.go | 136 ++++++++++++++-------------------- internal/database/database.go | 6 +- internal/database/model.go | 4 +- internal/dock/dock.go | 8 +- 12 files changed, 131 insertions(+), 158 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index b01aaf4..65fa9e4 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -62,6 +62,9 @@ brews: license: MIT install: | bin.install "lporg" + bash_completion.install "completions/_bash" => "lporg" + zsh_completion.install "completions/_zsh" => "_lporg" + fish_completion.install "completions/_fish" => "lporg.fish" test: | system "#{bin}/lporg --version" @@ -101,6 +104,6 @@ release: name_template: "v{{ .Version }}" footer: | ### Summary - **Full Changelog**: https://github.com/blacktop/ipsw/compare/{{ .PreviousTag }}...{{ .Tag }} + **Full Changelog**: https://github.com/blacktop/lporg/compare/{{ .PreviousTag }}...{{ .Tag }} ## What to do next? - Follow us on [Twitter](https://twitter.com/blacktop__) diff --git a/cmd/default.go b/cmd/default.go index 8686c1e..1ec9423 100644 --- a/cmd/default.go +++ b/cmd/default.go @@ -66,11 +66,11 @@ var defaultCmd = &cobra.Command{ } conf := &command.Config{ - Cmd: cmd.Use, - File: Config, - Cloud: UseICloud, - Backup: backup, - Verbose: Verbose, + Cmd: cmd.Use, + File: Config, + Cloud: UseICloud, + Backup: backup, + LogLevel: setLogLevel(Verbose), } if err := conf.Verify(); err != nil { diff --git a/cmd/load.go b/cmd/load.go index 8fd50fe..1f680f5 100644 --- a/cmd/load.go +++ b/cmd/load.go @@ -66,11 +66,11 @@ var loadCmd = &cobra.Command{ } conf := &command.Config{ - Cmd: cmd.Use, - File: Config, - Cloud: UseICloud, - Backup: backup, - Verbose: Verbose, + Cmd: cmd.Use, + File: Config, + Cloud: UseICloud, + Backup: backup, + LogLevel: setLogLevel(Verbose), } if err := conf.Verify(); err != nil { diff --git a/cmd/revert.go b/cmd/revert.go index a252256..2ba3a56 100644 --- a/cmd/revert.go +++ b/cmd/revert.go @@ -41,10 +41,10 @@ var revertCmd = &cobra.Command{ } conf := &command.Config{ - Cmd: cmd.Use, - File: Config, - Cloud: UseICloud, - Verbose: Verbose, + Cmd: cmd.Use, + File: Config, + Cloud: UseICloud, + LogLevel: setLogLevel(Verbose), } if err := conf.Verify(); err != nil { diff --git a/cmd/root.go b/cmd/root.go index a4b03c4..9a0db1e 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -52,7 +52,7 @@ func setLogLevel(verbose bool) int { if verbose { return int(log.DebugLevel) } - return int(log.InfoLevel) + return int(log.WarnLevel) } // Execute adds all child commands to the root command and sets flags appropriately. diff --git a/cmd/save.go b/cmd/save.go index e1a24e7..ab547de 100644 --- a/cmd/save.go +++ b/cmd/save.go @@ -41,10 +41,10 @@ var saveCmd = &cobra.Command{ } conf := &command.Config{ - Cmd: cmd.Use, - File: Config, - Cloud: UseICloud, - Verbose: Verbose, + Cmd: cmd.Use, + File: Config, + Cloud: UseICloud, + LogLevel: setLogLevel(Verbose), } if err := conf.Verify(); err != nil { diff --git a/go.mod b/go.mod index e113216..ccdfb34 100644 --- a/go.mod +++ b/go.mod @@ -5,28 +5,36 @@ go 1.21 require ( github.com/AlecAivazis/survey/v2 v2.3.7 github.com/apex/log v1.9.0 - github.com/jinzhu/gorm v1.9.16 + github.com/glebarez/sqlite v1.9.0 github.com/mitchellh/mapstructure v1.5.0 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.7.0 gopkg.in/yaml.v3 v3.0.1 + gorm.io/gorm v1.25.4 howett.net/plist v1.0.0 ) require ( - github.com/fatih/color v1.13.0 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/fatih/color v1.15.0 // indirect + github.com/glebarez/go-sqlite v1.21.2 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.19 // indirect - github.com/mattn/go-sqlite3 v1.14.16 // indirect - github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b // indirect + github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/testify v1.8.4 // indirect - golang.org/x/sys v0.11.0 // indirect - golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect - golang.org/x/text v0.4.0 // indirect + golang.org/x/sys v0.12.0 // indirect + golang.org/x/term v0.12.0 // indirect + golang.org/x/text v0.13.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect + modernc.org/libc v1.24.1 // indirect + modernc.org/mathutil v1.6.0 // indirect + modernc.org/memory v1.7.1 // indirect + modernc.org/sqlite v1.25.0 // indirect ) diff --git a/go.sum b/go.sum index 0f2fb96..df8ebf0 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,6 @@ github.com/AlecAivazis/survey/v2 v2.3.7 h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkk github.com/AlecAivazis/survey/v2 v2.3.7/go.mod h1:xUTIdE4KCOIjsBAE1JYsUPoCqYdZ1reCfTwbto0Fduo= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= -github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= -github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/apex/log v1.9.0 h1:FHtw/xuaM8AgmvDDTI9fiwoAL25Sq2cxojnZICUU8l0= github.com/apex/log v1.9.0/go.mod h1:m82fZlWIuiWzWP04XCTXmnX0xRkYYbCdYn8jbJeLBEA= github.com/apex/logs v1.0.0/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDwo= @@ -17,33 +15,32 @@ github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd h1:83Wprp6ROGeiHFAP8WJdI2RoxALQYgdllERc3N5N2DM= -github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= -github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y= -github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/glebarez/go-sqlite v1.21.2 h1:3a6LFC4sKahUunAmynQKLZceZCOzUthkRkEAl9gAXWo= +github.com/glebarez/go-sqlite v1.21.2/go.mod h1:sfxdZyhQjTM2Wry3gVYWaW072Ri1WMdWJi0k6+3382k= +github.com/glebarez/sqlite v1.9.0 h1:Aj6bPA12ZEx5GbSF6XADmCkYXlljPNUY+Zf1EQxynXs= +github.com/glebarez/sqlite v1.9.0/go.mod h1:YBYCoyupOao60lzp1MVBLEjZfgkq0tdB1voAQ09K9zw= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec h1:qv2VnGeEQHchGaZ/u7lxST/RaJw+cv273q79D81Xbog= github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o= -github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= -github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -57,25 +54,18 @@ github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lib/pq v1.1.1 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4= -github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus= -github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= -github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= -github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= +github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI= +github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -85,6 +75,8 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= @@ -109,18 +101,12 @@ github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPf github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -130,27 +116,25 @@ golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= @@ -168,5 +152,15 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/gorm v1.25.4 h1:iyNd8fNAe8W9dvtlgeRI5zSVZPsq3OpcTu37cYcpCmw= +gorm.io/gorm v1.25.4/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= howett.net/plist v1.0.0 h1:7CrbWYbPPO/PyNy38b2EB/+gYbjCe2DXBxgtOOZbSQM= howett.net/plist v1.0.0/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= +modernc.org/libc v1.24.1 h1:uvJSeCKL/AgzBo2yYIPPTy82v21KgGnizcGYfBHaNuM= +modernc.org/libc v1.24.1/go.mod h1:FmfO1RLrU3MHJfyi9eYYmZBfi/R+tqZ6+hQ3yQQUkak= +modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= +modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= +modernc.org/memory v1.7.1 h1:9J+2/GKTlV503mk3yv8QJ6oEpRCUrRy0ad8TXEPoV8M= +modernc.org/memory v1.7.1/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E= +modernc.org/sqlite v1.25.0 h1:AFweiwPNd/b3BoKnBOfFm+Y260guGMF+0UFk0savqeA= +modernc.org/sqlite v1.25.0/go.mod h1:FL3pVXie73rg3Rii6V/u5BoHlSoyeZeIgKZEgHARyCU= diff --git a/internal/command/command.go b/internal/command/command.go index acc3b1c..9cc7ebb 100644 --- a/internal/command/command.go +++ b/internal/command/command.go @@ -13,21 +13,22 @@ import ( "github.com/blacktop/lporg/internal/desktop" "github.com/blacktop/lporg/internal/dock" "github.com/blacktop/lporg/internal/utils" - "github.com/jinzhu/gorm" - _ "github.com/jinzhu/gorm/dialects/sqlite" + "github.com/glebarez/sqlite" "github.com/pkg/errors" "gopkg.in/yaml.v3" + "gorm.io/gorm" + "gorm.io/gorm/logger" ) const bold = "\033[1m%s\033[0m" // Config is the command config type Config struct { - Cmd string - File string - Cloud bool - Backup bool - Verbose bool + Cmd string + File string + Cloud bool + Backup bool + LogLevel int } // Verify will verify the command config @@ -199,33 +200,22 @@ func DefaultOrg(c *Config) (err error) { } // open launchpad database - lpad.DB, err = gorm.Open("sqlite3", lpad.File) + lpad.DB, err = gorm.Open(sqlite.Open(lpad.File), &gorm.Config{ + Logger: logger.Default.LogMode(logger.LogLevel(c.LogLevel)), + }) if err != nil { return err } - defer lpad.DB.Close() - - if c.Verbose { - lpad.DB.LogMode(true) - } - - // // open launchpad database - // lpad.DB, err = gorm.Open(sqlite.Open(lpad.File), &gorm.Config{ - // Logger: logger.Default.LogMode(logger.LogLevel(c.LogLevel)), - // }) - // if err != nil { - // return err - // } - // defer func() { - // db, err := lpad.DB.DB() - // if err != nil { - // err = errors.Wrap(err, "unable to get db when trying to close") - // } - // err = db.Close() - // if err != nil { - // err = errors.Wrap(err, "unable to close db") - // } - // }() + defer func() { + db, err := lpad.DB.DB() + if err != nil { + err = errors.Wrap(err, "unable to get db when trying to close") + } + err = db.Close() + if err != nil { + err = errors.Wrap(err, "unable to close db") + } + }() // Clear all items related to groups so we can re-create them if err := lpad.ClearGroups(); err != nil { @@ -337,33 +327,22 @@ func SaveConfig(c *Config) (err error) { utils.Indent(log.WithFields(log.Fields{"database": lpad.File}).Info)("found launchpad database") // open launchpad database - lpad.DB, err = gorm.Open("sqlite3", lpad.File) + lpad.DB, err = gorm.Open(sqlite.Open(lpad.File), &gorm.Config{ + Logger: logger.Default.LogMode(logger.LogLevel(c.LogLevel)), + }) if err != nil { return err } - defer lpad.DB.Close() - - if c.Verbose { - lpad.DB.LogMode(true) - } - - // // open launchpad database - // lpad.DB, err = gorm.Open(sqlite.Open(lpad.File), &gorm.Config{ - // Logger: logger.Default.LogMode(logger.LogLevel(c.LogLevel)), - // }) - // if err != nil { - // return err - // } - // defer func() { - // db, err := lpad.DB.DB() - // if err != nil { - // err = errors.Wrap(err, "unable to get db when trying to close") - // } - // err = db.Close() - // if err != nil { - // err = errors.Wrap(err, "unable to close db") - // } - // }() + defer func() { + db, err := lpad.DB.DB() + if err != nil { + err = errors.Wrap(err, "unable to get db when trying to close") + } + err = db.Close() + if err != nil { + err = errors.Wrap(err, "unable to close db") + } + }() // get launchpad and dashboard roots if err := lpad.DB.Where("key in (?)", []string{"launchpad_root", "dashboard_root"}).Find(&dbinfo).Error; err != nil { @@ -391,9 +370,9 @@ func SaveConfig(c *Config) (err error) { log.Info("collecting launchpad/dashboard pages") parentMapping := make(map[int][]database.Item) for _, item := range items { - lpad.DB.Model(&item).Related(&item.App) + lpad.DB.Model(&item).Association("App").Find(&item.App) // db.Model(&item).Related(&item.Widget) - lpad.DB.Model(&item).Related(&item.Group) + lpad.DB.Model(&item).Association("Group").Find(&item.Group) parentMapping[item.ParentID] = append(parentMapping[item.ParentID], item) } @@ -485,33 +464,22 @@ func LoadConfig(c *Config) error { } // open launchpad database - lpad.DB, err = gorm.Open("sqlite3", lpad.File) + lpad.DB, err = gorm.Open(sqlite.Open(lpad.File), &gorm.Config{ + Logger: logger.Default.LogMode(logger.LogLevel(c.LogLevel)), + }) if err != nil { return err } - defer lpad.DB.Close() - - if c.Verbose { - lpad.DB.LogMode(true) - } - - // // open launchpad database - // lpad.DB, err = gorm.Open(sqlite.Open(lpad.File), &gorm.Config{ - // Logger: logger.Default.LogMode(logger.LogLevel(c.LogLevel)), - // }) - // if err != nil { - // return err - // } - // defer func() { - // db, err := lpad.DB.DB() - // if err != nil { - // err = errors.Wrap(err, "unable to get db when trying to close") - // } - // err = db.Close() - // if err != nil { - // err = errors.Wrap(err, "unable to close db") - // } - // }() + defer func() { + db, err := lpad.DB.DB() + if err != nil { + err = errors.Wrap(err, "unable to get db when trying to close") + } + err = db.Close() + if err != nil { + err = errors.Wrap(err, "unable to close db") + } + }() // Clear all items related to groups so we can re-create them if err := lpad.ClearGroups(); err != nil { @@ -570,6 +538,10 @@ func LoadConfig(c *Config) error { desktop.SetDesktopImage(config.Desktop.Image) } + if err := restartDock(); err != nil { + return fmt.Errorf("failed to restart dock: %w", err) + } + if len(config.Dock.Apps) > 0 || len(config.Dock.Others) > 0 { utils.Indent(log.Info)("setting dock apps") dPlist, err := dock.LoadDockPlist() @@ -595,5 +567,5 @@ func LoadConfig(c *Config) error { } } - return restartDock() + return nil } diff --git a/internal/database/database.go b/internal/database/database.go index 742970f..a93781d 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -9,9 +9,9 @@ import ( "github.com/apex/log" "github.com/blacktop/lporg/internal/utils" - "github.com/jinzhu/gorm" "github.com/mitchellh/mapstructure" "github.com/pkg/errors" + "gorm.io/gorm" ) // GetMissing returns a list of the rest of the apps not in the config @@ -238,7 +238,7 @@ func (lp *LaunchPad) updateItem(item string, ordering, groupID, itemType int) er return errors.Wrap(err, "item query failed for app: "+item) } - lp.DB.Model(&i).Related(&i.App) + lp.DB.Model(&i).Association("App").Find(&i.App) case WidgetType: if result := lp.DB.Where("title = ?", item).First(&w); result.Error != nil && errors.Is(result.Error, gorm.ErrRecordNotFound) { utils.DoubleIndent(log.WithField("app", item).Warn)("widget not installed. SKIPPING...") @@ -248,7 +248,7 @@ func (lp *LaunchPad) updateItem(item string, ordering, groupID, itemType int) er return errors.Wrap(err, "item query failed for widget: "+item) } - lp.DB.Model(&i).Related(&i.Widget) + lp.DB.Model(&i).Association("Widget").Find(&i.Widget) default: utils.DoubleIndent(log.WithField("type", itemType).Error)("bad type") } diff --git a/internal/database/model.go b/internal/database/model.go index ec59a49..3e0d680 100644 --- a/internal/database/model.go +++ b/internal/database/model.go @@ -1,6 +1,6 @@ package database -import "github.com/jinzhu/gorm" +import "gorm.io/gorm" // Types const ( @@ -53,7 +53,7 @@ type Item struct { UUID string `gorm:"column:uuid"` Flags int `gorm:"column:flags;default:null"` Type int `gorm:"column:type"` - Group Group `gorm:"ForeignKey:ParentID"` + Group Group `gorm:"ForeignKey:ID"` ParentID int `gorm:"not null;column:parent_id"` Ordering int `gorm:"column:ordering"` } diff --git a/internal/dock/dock.go b/internal/dock/dock.go index 6043be8..aeea2fc 100644 --- a/internal/dock/dock.go +++ b/internal/dock/dock.go @@ -241,20 +241,16 @@ func (p *Plist) Save() error { func (p *Plist) importPlist(path string) error { utils.DoubleIndent(log.Info)("importing dock plist") - out, err := utils.RunCommand(context.Background(), "/usr/bin/defaults", "import", "com.apple.dock", path) - if err != nil { + if _, err := utils.RunCommand(context.Background(), "/usr/bin/defaults", "import", "com.apple.dock", path); err != nil { return fmt.Errorf("failed to defaults import dock plist '%s': %v", path, err) } - fmt.Println(out) return nil } func (p *Plist) kickstart() error { utils.DoubleIndent(log.Info)("restarting com.apple.Dock.agent service") - out, err := utils.RunCommand(context.Background(), "/bin/launchctl", "kickstart", "-k", fmt.Sprintf("gui/%d/com.apple.Dock.agent", os.Getuid())) - if err != nil { + if _, err := utils.RunCommand(context.Background(), "/bin/launchctl", "kickstart", "-k", fmt.Sprintf("gui/%d/com.apple.Dock.agent", os.Getuid())); err != nil { return fmt.Errorf("failed to kickstart dock: %v", err) } - fmt.Println(out) return nil }