Skip to content
This repository was archived by the owner on Feb 16, 2024. It is now read-only.

Commit 13f1a91

Browse files
authored
Merge branch 'master' into unixDomainSocket
2 parents 0302461 + da857fb commit 13f1a91

File tree

6 files changed

+78
-63
lines changed

6 files changed

+78
-63
lines changed

README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[![GoReportCard](http://goreportcard.com/badge/github.com/asticode/go-astilectron)](http://goreportcard.com/report/github.com/asticode/go-astilectron)
22
[![GoDoc](https://godoc.org/github.com/asticode/go-astilectron?status.svg)](https://godoc.org/github.com/asticode/go-astilectron)
33
[![Travis](https://travis-ci.org/asticode/go-astilectron.svg?branch=master)](https://travis-ci.org/asticode/go-astilectron#)
4-
[![Coveralls](https://coveralls.io/repos/github/asticode/go-astilectron/badge.svg?branch=master)](https://coveralls.io/repos/github/asticode/go-astilectron)
4+
[![Coveralls](https://coveralls.io/repos/github/asticode/go-astilectron/badge.svg?branch=master)](https://coveralls.io/github/asticode/go-astilectron)
55

66
Thanks to `go-astilectron` build cross platform GUI apps with GO and HTML/JS/CSS. It is the official GO bindings of [astilectron](https://github.com/asticode/astilectron) and is powered by [Electron](https://github.com/electron/electron).
77

@@ -56,6 +56,8 @@ var a, _ = astilectron.New(astilectron.Options{
5656
AppIconDefaultPath: "<your .png icon>", // If path is relative, it must be relative to the data directory
5757
AppIconDarwinPath: "<your .icns icon>", // Same here
5858
BaseDirectoryPath: "<where you want the provisioner to install the dependencies>",
59+
VersionAstilectron: "<version of Astilectron to utilize such as `0.33.0`>",
60+
VersionElectron: "<version of Electron to utilize such as `4.0.1` | `6.1.2`>",
5961
})
6062
defer a.Close()
6163

@@ -332,6 +334,9 @@ var t = a.NewTray(&astilectron.TrayOptions{
332334
Tooltip: astilectron.PtrStr("Tray's tooltip"),
333335
})
334336

337+
// Create tray
338+
t.Create()
339+
335340
// New tray menu
336341
var m = t.NewMenu([]*astilectron.MenuItemOptions{
337342
{
@@ -355,12 +360,9 @@ var m = t.NewMenu([]*astilectron.MenuItemOptions{
355360
// Create the menu
356361
m.Create()
357362

358-
// Create tray
359-
t.Create()
360-
361363
// Change tray's image
362364
time.Sleep(time.Second)
363-
t.SetImage(astilectron.PtrStr("/path/to/image-2.png"))
365+
t.SetImage("/path/to/image-2.png")
364366
```
365367

366368
## Notifications

astilectron.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ import (
2020
// Versions
2121
const (
2222
DefaultAcceptTimeout = 30 * time.Second
23-
VersionAstilectron = "0.32.0"
24-
VersionElectron = "4.0.1"
23+
DefaultVersionAstilectron = "0.33.0"
24+
DefaultVersionElectron = "4.0.1"
2525
)
2626

2727
// Misc vars
@@ -78,6 +78,8 @@ type Options struct {
7878
SingleInstance bool
7979
SkipSetup bool // If true, the user must handle provisioning and executing astilectron.
8080
Addr string // Proper address to listen on.
81+
VersionAstilectron string
82+
VersionElectron string
8183
}
8284

8385
// Supported represents Astilectron supported features
@@ -93,6 +95,13 @@ func New(o Options) (a *Astilectron, err error) {
9395
return
9496
}
9597

98+
if o.VersionAstilectron == "" {
99+
o.VersionAstilectron = DefaultVersionAstilectron
100+
}
101+
if o.VersionElectron == "" {
102+
o.VersionElectron = DefaultVersionElectron
103+
}
104+
96105
// Init
97106
a = &Astilectron{
98107
canceller: asticontext.NewCanceller(),
@@ -190,7 +199,7 @@ func (a *Astilectron) Start() (err error) {
190199
func (a *Astilectron) provision() error {
191200
astilog.Debug("Provisioning...")
192201
var ctx, _ = a.canceller.NewContext()
193-
return a.provisioner.Provision(ctx, a.options.AppName, runtime.GOOS, runtime.GOARCH, *a.paths)
202+
return a.provisioner.Provision(ctx, a.options.AppName, runtime.GOOS, runtime.GOARCH, a.options.VersionAstilectron, a.options.VersionElectron, *a.paths)
194203
}
195204

196205
// function to create TCP/Unix socket connection

paths.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ type Paths struct {
3131

3232
// newPaths creates new paths
3333
func newPaths(os, arch string, o Options) (p *Paths, err error) {
34+
3435
// Init base directory path
3536
p = &Paths{}
3637
if err = p.initBaseDirectory(o.BaseDirectoryPath); err != nil {
@@ -58,12 +59,12 @@ func newPaths(os, arch string, o Options) (p *Paths, err error) {
5859
p.provisionStatus = filepath.Join(p.vendorDirectory, "status.json")
5960
p.astilectronDirectory = filepath.Join(p.vendorDirectory, "astilectron")
6061
p.astilectronApplication = filepath.Join(p.astilectronDirectory, "main.js")
61-
p.astilectronDownloadSrc = AstilectronDownloadSrc()
62-
p.astilectronDownloadDst = filepath.Join(p.vendorDirectory, fmt.Sprintf("astilectron-v%s.zip", VersionAstilectron))
63-
p.astilectronUnzipSrc = filepath.Join(p.astilectronDownloadDst, fmt.Sprintf("astilectron-%s", VersionAstilectron))
62+
p.astilectronDownloadSrc = AstilectronDownloadSrc(o.VersionAstilectron)
63+
p.astilectronDownloadDst = filepath.Join(p.vendorDirectory, fmt.Sprintf("astilectron-v%s.zip", o.VersionAstilectron))
64+
p.astilectronUnzipSrc = filepath.Join(p.astilectronDownloadDst, fmt.Sprintf("astilectron-%s", o.VersionAstilectron))
6465
p.electronDirectory = filepath.Join(p.vendorDirectory, fmt.Sprintf("electron-%s-%s", os, arch))
65-
p.electronDownloadSrc = ElectronDownloadSrc(os, arch)
66-
p.electronDownloadDst = filepath.Join(p.vendorDirectory, fmt.Sprintf("electron-%s-%s-v%s.zip", os, arch, VersionElectron))
66+
p.electronDownloadSrc = ElectronDownloadSrc(os, arch, o.VersionElectron)
67+
p.electronDownloadDst = filepath.Join(p.vendorDirectory, fmt.Sprintf("electron-%s-%s-v%s.zip", os, arch, o.VersionElectron))
6768
p.electronUnzipSrc = p.electronDownloadDst
6869
p.initAppExecutable(os, o.AppName)
6970
return
@@ -114,12 +115,12 @@ func (p *Paths) initDataDirectory(dataDirectoryPath, appName string) (err error)
114115
}
115116

116117
// AstilectronDownloadSrc returns the download URL of the (currently platform-independent) astilectron zip file
117-
func AstilectronDownloadSrc() string {
118-
return fmt.Sprintf("https://github.com/asticode/astilectron/archive/v%s.zip", VersionAstilectron)
118+
func AstilectronDownloadSrc(versionAstilectron string) string {
119+
return fmt.Sprintf("https://github.com/asticode/astilectron/archive/v%s.zip", versionAstilectron)
119120
}
120121

121122
// ElectronDownloadSrc returns the download URL of the platform-dependant electron zipfile
122-
func ElectronDownloadSrc(os, arch string) string {
123+
func ElectronDownloadSrc(os, arch, versionElectron string) string {
123124
// Get OS name
124125
var o string
125126
switch strings.ToLower(os) {
@@ -140,7 +141,7 @@ func ElectronDownloadSrc(os, arch string) string {
140141
}
141142

142143
// Return url
143-
return fmt.Sprintf("https://github.com/electron/electron/releases/download/v%s/electron-v%s-%s-%s.zip", VersionElectron, VersionElectron, o, a)
144+
return fmt.Sprintf("https://github.com/electron/electron/releases/download/v%s/electron-v%s-%s-%s.zip", versionElectron, versionElectron, o, a)
144145
}
145146

146147
// initAppExecutable initializes the app executable path

paths_test.go

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,58 +12,61 @@ import (
1212

1313
func TestPaths(t *testing.T) {
1414
const k = "APPDATA"
15+
1516
ad := os.Getenv(k)
1617
os.Setenv(k, "")
1718
ep, err := os.Executable()
1819
ep = filepath.Dir(ep)
1920
assert.NoError(t, err)
20-
p, err := newPaths("linux", "amd64", Options{})
21+
22+
o := Options{VersionAstilectron: DefaultVersionAstilectron, VersionElectron: DefaultVersionElectron}
23+
p, err := newPaths("linux", "amd64", o)
2124
assert.NoError(t, err)
2225
assert.Equal(t, ep+"/vendor/electron-linux-amd64/electron", p.AppExecutable())
2326
assert.Equal(t, "", p.AppIconDarwinSrc())
2427
assert.Equal(t, ep, p.BaseDirectory())
2528
assert.Equal(t, ep, p.DataDirectory())
2629
assert.Equal(t, ep+"/vendor/astilectron/main.js", p.AstilectronApplication())
2730
assert.Equal(t, ep+"/vendor/astilectron", p.AstilectronDirectory())
28-
assert.Equal(t, ep+"/vendor/astilectron-v"+VersionAstilectron+".zip", p.AstilectronDownloadDst())
29-
assert.Equal(t, "https://github.com/asticode/astilectron/archive/v"+VersionAstilectron+".zip", p.AstilectronDownloadSrc())
30-
assert.Equal(t, ep+"/vendor/astilectron-v"+VersionAstilectron+".zip/astilectron-"+VersionAstilectron, p.AstilectronUnzipSrc())
31+
assert.Equal(t, ep+"/vendor/astilectron-v"+o.VersionAstilectron+".zip", p.AstilectronDownloadDst())
32+
assert.Equal(t, "https://github.com/asticode/astilectron/archive/v"+o.VersionAstilectron+".zip", p.AstilectronDownloadSrc())
33+
assert.Equal(t, ep+"/vendor/astilectron-v"+o.VersionAstilectron+".zip/astilectron-"+o.VersionAstilectron, p.AstilectronUnzipSrc())
3134
assert.Equal(t, ep+"/vendor/electron-linux-amd64", p.ElectronDirectory())
32-
assert.Equal(t, ep+"/vendor/electron-linux-amd64-v"+VersionElectron+".zip", p.ElectronDownloadDst())
33-
assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+VersionElectron+"/electron-v"+VersionElectron+"-linux-x64.zip", p.ElectronDownloadSrc())
34-
assert.Equal(t, ep+"/vendor/electron-linux-amd64-v"+VersionElectron+".zip", p.ElectronUnzipSrc())
35+
assert.Equal(t, ep+"/vendor/electron-linux-amd64-v"+o.VersionElectron+".zip", p.ElectronDownloadDst())
36+
assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+o.VersionElectron+"/electron-v"+o.VersionElectron+"-linux-x64.zip", p.ElectronDownloadSrc())
37+
assert.Equal(t, ep+"/vendor/electron-linux-amd64-v"+o.VersionElectron+".zip", p.ElectronUnzipSrc())
3538
assert.Equal(t, ep+"/vendor/status.json", p.ProvisionStatus())
3639
assert.Equal(t, ep+"/vendor", p.VendorDirectory())
37-
p, err = newPaths("linux", "", Options{})
40+
p, err = newPaths("linux", "", o)
3841
assert.NoError(t, err)
39-
assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+VersionElectron+"/electron-v"+VersionElectron+"-linux-ia32.zip", p.ElectronDownloadSrc())
40-
p, err = newPaths("linux", "arm", Options{})
42+
assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+o.VersionElectron+"/electron-v"+o.VersionElectron+"-linux-ia32.zip", p.ElectronDownloadSrc())
43+
p, err = newPaths("linux", "arm", o)
4144
assert.NoError(t, err)
42-
assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+VersionElectron+"/electron-v"+VersionElectron+"-linux-armv7l.zip", p.ElectronDownloadSrc())
43-
p, err = newPaths("darwin", "", Options{BaseDirectoryPath: "/path/to/base/directory", AppIconDarwinPath: "/path/to/darwin/icon", AppIconDefaultPath: "icon"})
45+
assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+o.VersionElectron+"/electron-v"+o.VersionElectron+"-linux-armv7l.zip", p.ElectronDownloadSrc())
46+
p, err = newPaths("darwin", "", Options{BaseDirectoryPath: "/path/to/base/directory", AppIconDarwinPath: "/path/to/darwin/icon", AppIconDefaultPath: "icon", VersionAstilectron: DefaultVersionAstilectron, VersionElectron: DefaultVersionElectron})
4447
assert.NoError(t, err)
4548
assert.Equal(t, "/path/to/base/directory/vendor/electron-darwin-/Electron.app/Contents/MacOS/Electron", p.AppExecutable())
4649
assert.Equal(t, "/path/to/darwin/icon", p.AppIconDarwinSrc())
4750
assert.Equal(t, "/path/to/base/directory/icon", p.AppIconDefaultSrc())
48-
assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+VersionElectron+"/electron-v"+VersionElectron+"-darwin-x64.zip", p.ElectronDownloadSrc())
49-
p, err = newPaths("darwin", "amd64", Options{AppName: "Test app", BaseDirectoryPath: "/path/to/base/directory", DataDirectoryPath: "/path/to/data/directory"})
51+
assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+o.VersionElectron+"/electron-v"+o.VersionElectron+"-darwin-x64.zip", p.ElectronDownloadSrc())
52+
p, err = newPaths("darwin", "amd64", Options{AppName: "Test app", BaseDirectoryPath: "/path/to/base/directory", DataDirectoryPath: "/path/to/data/directory", VersionAstilectron: DefaultVersionAstilectron, VersionElectron: DefaultVersionElectron})
5053
assert.NoError(t, err)
5154
assert.Equal(t, "/path/to/data/directory", p.DataDirectory())
5255
assert.Equal(t, "/path/to/data/directory/vendor/electron-darwin-amd64/Test app.app/Contents/MacOS/Test app", p.AppExecutable())
53-
assert.Equal(t, "/path/to/data/directory/vendor/electron-darwin-amd64-v"+VersionElectron+".zip", p.ElectronDownloadDst())
54-
assert.Equal(t, "/path/to/data/directory/vendor/electron-darwin-amd64-v"+VersionElectron+".zip", p.ElectronUnzipSrc())
56+
assert.Equal(t, "/path/to/data/directory/vendor/electron-darwin-amd64-v"+o.VersionElectron+".zip", p.ElectronDownloadDst())
57+
assert.Equal(t, "/path/to/data/directory/vendor/electron-darwin-amd64-v"+o.VersionElectron+".zip", p.ElectronUnzipSrc())
5558
const pad = "/path/to/appdata"
5659
os.Setenv(k, pad)
57-
p, err = newPaths("windows", "amd64", Options{})
60+
p, err = newPaths("windows", "amd64", o)
5861
assert.NoError(t, err)
5962
assert.Equal(t, pad, p.DataDirectory())
6063
assert.Equal(t, pad+"/vendor", p.VendorDirectory())
6164
assert.Equal(t, pad+"/vendor/electron-windows-amd64/electron.exe", p.AppExecutable())
62-
assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+VersionElectron+"/electron-v"+VersionElectron+"-win32-x64.zip", p.ElectronDownloadSrc())
63-
assert.Equal(t, pad+"/vendor/electron-windows-amd64-v"+VersionElectron+".zip", p.ElectronDownloadDst())
64-
assert.Equal(t, pad+"/vendor/electron-windows-amd64-v"+VersionElectron+".zip", p.ElectronUnzipSrc())
65-
p, err = newPaths("windows", "", Options{})
65+
assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+o.VersionElectron+"/electron-v"+o.VersionElectron+"-win32-x64.zip", p.ElectronDownloadSrc())
66+
assert.Equal(t, pad+"/vendor/electron-windows-amd64-v"+o.VersionElectron+".zip", p.ElectronDownloadDst())
67+
assert.Equal(t, pad+"/vendor/electron-windows-amd64-v"+o.VersionElectron+".zip", p.ElectronUnzipSrc())
68+
p, err = newPaths("windows", "", o)
6669
assert.NoError(t, err)
67-
assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+VersionElectron+"/electron-v"+VersionElectron+"-win32-ia32.zip", p.ElectronDownloadSrc())
70+
assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+o.VersionElectron+"/electron-v"+o.VersionElectron+"-win32-ia32.zip", p.ElectronDownloadSrc())
6871
os.Setenv(k, ad)
6972
}

provisioner.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ var (
2424

2525
// Provisioner represents an object capable of provisioning Astilectron
2626
type Provisioner interface {
27-
Provision(ctx context.Context, appName, os, arch string, p Paths) error
27+
Provision(ctx context.Context, appName, os, arch, versionAstilectron, versionElectron string, p Paths) error
2828
}
2929

3030
// mover is a function that moves a package
@@ -59,7 +59,7 @@ func provisionStatusElectronKey(os, arch string) string {
5959

6060
// Provision implements the provisioner interface
6161
// TODO Package app using electron instead of downloading Electron + Astilectron separately
62-
func (p *defaultProvisioner) Provision(ctx context.Context, appName, os, arch string, paths Paths) (err error) {
62+
func (p *defaultProvisioner) Provision(ctx context.Context, appName, os, arch, versionAstilectron, versionElectron string, paths Paths) (err error) {
6363
// Retrieve provision status
6464
var s ProvisionStatus
6565
if s, err = p.ProvisionStatus(paths); err != nil {
@@ -69,18 +69,18 @@ func (p *defaultProvisioner) Provision(ctx context.Context, appName, os, arch st
6969
defer p.updateProvisionStatus(paths, &s)
7070

7171
// Provision astilectron
72-
if err = p.provisionAstilectron(ctx, paths, s); err != nil {
72+
if err = p.provisionAstilectron(ctx, paths, s, versionAstilectron); err != nil {
7373
err = errors.Wrap(err, "provisioning astilectron failed")
7474
return
7575
}
76-
s.Astilectron = &ProvisionStatusPackage{Version: VersionAstilectron}
76+
s.Astilectron = &ProvisionStatusPackage{Version: versionAstilectron}
7777

7878
// Provision electron
79-
if err = p.provisionElectron(ctx, paths, s, appName, os, arch); err != nil {
79+
if err = p.provisionElectron(ctx, paths, s, appName, os, arch, versionElectron); err != nil {
8080
err = errors.Wrap(err, "provisioning electron failed")
8181
return
8282
}
83-
s.Electron[provisionStatusElectronKey(os, arch)] = &ProvisionStatusPackage{Version: VersionElectron}
83+
s.Electron[provisionStatusElectronKey(os, arch)] = &ProvisionStatusPackage{Version: versionElectron}
8484
return
8585
}
8686

@@ -143,13 +143,13 @@ func (p *defaultProvisioner) updateProvisionStatus(paths Paths, s *ProvisionStat
143143
}
144144

145145
// provisionAstilectron provisions astilectron
146-
func (p *defaultProvisioner) provisionAstilectron(ctx context.Context, paths Paths, s ProvisionStatus) error {
147-
return p.provisionPackage(ctx, paths, s.Astilectron, p.moverAstilectron, "Astilectron", VersionAstilectron, paths.AstilectronUnzipSrc(), paths.AstilectronDirectory(), nil)
146+
func (p *defaultProvisioner) provisionAstilectron(ctx context.Context, paths Paths, s ProvisionStatus, versionAstilectron string) error {
147+
return p.provisionPackage(ctx, paths, s.Astilectron, p.moverAstilectron, "Astilectron", versionAstilectron, paths.AstilectronUnzipSrc(), paths.AstilectronDirectory(), nil)
148148
}
149149

150150
// provisionElectron provisions electron
151-
func (p *defaultProvisioner) provisionElectron(ctx context.Context, paths Paths, s ProvisionStatus, appName, os, arch string) error {
152-
return p.provisionPackage(ctx, paths, s.Electron[provisionStatusElectronKey(os, arch)], p.moverElectron, "Electron", VersionElectron, paths.ElectronUnzipSrc(), paths.ElectronDirectory(), func() (err error) {
151+
func (p *defaultProvisioner) provisionElectron(ctx context.Context, paths Paths, s ProvisionStatus, appName, os, arch, versionElectron string) error {
152+
return p.provisionPackage(ctx, paths, s.Electron[provisionStatusElectronKey(os, arch)], p.moverElectron, "Electron", versionElectron, paths.ElectronUnzipSrc(), paths.ElectronDirectory(), func() (err error) {
153153
switch os {
154154
case "darwin":
155155
if err = p.provisionElectronFinishDarwin(appName, paths); err != nil {

0 commit comments

Comments
 (0)