mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-03 04:11:05 +08:00

* Support Distribution 'ArcoLinux' #310 (#312) * Support Distribution 'ArcoLinux' #310 * Vuetify2 support (resurrected from git@github.com:MichaelHipp/wails.git) (#315) * Initial create of vuetify2-basic folder * Change template descr of vuetify-basic to say Vuetify 1.5 * Get vuetify2 template installing vuetify v2.0 (but with styling probs) * Update App.vue, HelloWorld.vue for Vuetify v2 * Remove babel-polyfill, add mdi/font * fix: codacy corrections * fix: babel -> core-js, regenerator-runtime Co-authored-by: Michael Hipp <michael@redmule.com> Co-authored-by: Lea Anthony <lea.anthony@gmail.com> * Update Contributors * v1.0.2-pre1 * [313-remote-conn] allow remote connections to the websocket bridge (#314) * [313-remote-conn] feat: compute wsURL based on window.location * [313-remote-conn] feat: allow any host to connect to vue server removing the 'host: "localhost"' specification causes the development server to listen on all interfaces. * [313-remote-conn] feat: allow any host to connect to angular dev server * test: reinject tabs Co-authored-by: Lea Anthony <lea.anthony@gmail.com> * fix: disable host check for vuetify 2 template * v1.0.2-pre2 * fix: shutdown ipcmanager * use channel to trigger shutdown * load linuxdb from relative path * Feat manjaro arm & deepin (#324) * feat: new distros: manjaroARM & Deepin * v1.0.2-pre3 * [326-platform-raspbian] feat: implement raspbian support (#327) * fix: emit arguments (#306) * v1.0.2-pre4 Raspbarian support * Initial support for Typescript decl file (#330) * v1.0.2-pre5 * revert to Go 1.12 * New CI (#331) * prepare * new CI/github actions * Rename later-pre.yml to latest-pre.yml * Update latest-pre.yml * Update README.md * Ensure version in go.mod is up to date (#339) * release v1.0.2-pre6 * Fix typescript generation * Release v1.0.2-pre7 * 316-multi-bridge-conn (#317) * [316-multi-bridge-conn] feat: use callback func for bridge response * [316-multi-bridge-conn] feat: implement multiple session support * split client handling portion into 'session' * keep track of sessions by remote address (ip & port) * notify each of the sessions anytime an event comes across the bus * [316-multi-bridge-conn] chore: move bridge files to package * [316-multi-bridge-conn] chore: remove deprecated Callback function The Callback function is no longer needed for the operation of the frontend callback since the ipc.Dispatch function now requires a callback function to be provided as an argument. This function can be a private function since it is passed by reference. * [316-multi-bridge-conn] chore: make webview.Callback private * [316-multi-bridge-conn] chore: remove unused injectCSS function I believe a slightly better method of doing this might need to be devised if it is needed in the future. I presume it should collect the values into a cache and then inject it into each sesssion as it appears. * [316-multi-bridge-conn] ensure wails:ready event is emitted Event is only emitted for the first session created from the Bridge. * [316-multi-bridge-conn] emit events for session lifecycle Emit an event for each session started and ended. * [316-multi-bridge-conn] fix: session handling fixes Co-authored-by: Lea Anthony <lea.anthony@gmail.com> * Release v1.0.2-pre8 * Release v1.0.2 Co-authored-by: Byron <ktc@protonmail.com> Co-authored-by: Travis McLane <tmclane@gmail.com> Co-authored-by: Michael Hipp <michael@redmule.com>
94 lines
2.6 KiB
Go
94 lines
2.6 KiB
Go
package cmd
|
|
|
|
import (
|
|
"log"
|
|
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
// LinuxDB is the database for linux distribution data.
|
|
type LinuxDB struct {
|
|
Distributions map[string]*Distribution `yaml:"distributions"`
|
|
}
|
|
|
|
// Distribution holds the os-release ID and a map of releases.
|
|
type Distribution struct {
|
|
ID string `yaml:"id"`
|
|
Releases map[string]*Release `yaml:"releases"`
|
|
}
|
|
|
|
// GetRelease attempts to return the specific Release information
|
|
// for the given release name. If there is no specific match, the
|
|
// default release data is returned.
|
|
func (d *Distribution) GetRelease(version string) *Release {
|
|
result := d.Releases[version]
|
|
if result == nil {
|
|
result = d.Releases["default"]
|
|
}
|
|
return result
|
|
}
|
|
|
|
// Release holds the name and version of the release as given by
|
|
// os-release. Programs is a slice of dependant programs required
|
|
// to be present on the local installation for Wails to function.
|
|
// Libraries is a slice of libraries that must be present for Wails
|
|
// applications to compile.
|
|
type Release struct {
|
|
Name string `yaml:"name"`
|
|
Version string `yaml:"version"`
|
|
GccVersionCommand string `yaml:"gccversioncommand"`
|
|
Programs []*Prerequisite `yaml:"programs"`
|
|
Libraries []*Prerequisite `yaml:"libraries"`
|
|
}
|
|
|
|
// Prerequisite is a simple struct containing a program/library name
|
|
// plus the distribution specific help text indicating how to install
|
|
// it.
|
|
type Prerequisite struct {
|
|
Name string `yaml:"name"`
|
|
Help string `yaml:"help,omitempty"`
|
|
}
|
|
|
|
// Load will load the given filename from disk and attempt to
|
|
// import the data into the LinuxDB.
|
|
func (l *LinuxDB) Load(filename string) error {
|
|
if fs.FileExists(filename) {
|
|
data, err := fs.LoadAsBytes(filename)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return l.ImportData(data)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// ImportData will unmarshal the given YAML formatted data
|
|
// into the LinuxDB
|
|
func (l *LinuxDB) ImportData(data []byte) error {
|
|
return yaml.Unmarshal(data, l)
|
|
}
|
|
|
|
// GetDistro returns the Distribution information for the
|
|
// given distribution name. If the distribution is not supported,
|
|
// nil is returned.
|
|
func (l *LinuxDB) GetDistro(distro string) *Distribution {
|
|
return l.Distributions[distro]
|
|
}
|
|
|
|
// NewLinuxDB creates a new LinuxDB instance from the bundled
|
|
// linuxdb.yaml file.
|
|
func NewLinuxDB() *LinuxDB {
|
|
data, err := fs.LoadRelativeFile("./linuxdb.yaml")
|
|
if err != nil {
|
|
log.Fatal("Could not load linuxdb.yaml")
|
|
}
|
|
result := LinuxDB{
|
|
Distributions: make(map[string]*Distribution),
|
|
}
|
|
err = result.ImportData(data)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
return &result
|
|
}
|