mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2025-03-05 20:49:04 -08:00
refactor: move battery logic to segment
This commit is contained in:
parent
9c4ba43871
commit
92a2f740e9
|
@ -64,7 +64,7 @@ type environmentInfo interface {
|
||||||
lastErrorCode() int
|
lastErrorCode() int
|
||||||
executionTime() float64
|
executionTime() float64
|
||||||
getArgs() *args
|
getArgs() *args
|
||||||
getBatteryInfo() (*battery.Battery, error)
|
getBatteryInfo() ([]*battery.Battery, error)
|
||||||
getShellName() string
|
getShellName() string
|
||||||
getWindowTitle(imageName, windowTitleRegex string) (string, error)
|
getWindowTitle(imageName, windowTitleRegex string) (string, error)
|
||||||
doGet(url string) ([]byte, error)
|
doGet(url string) ([]byte, error)
|
||||||
|
@ -246,30 +246,8 @@ func (env *environment) getArgs() *args {
|
||||||
return env.args
|
return env.args
|
||||||
}
|
}
|
||||||
|
|
||||||
func (env *environment) getBatteryInfo() (*battery.Battery, error) {
|
func (env *environment) getBatteryInfo() ([]*battery.Battery, error) {
|
||||||
getMostLogicalState := func(currentState battery.State, state battery.State) battery.State {
|
return battery.GetAll()
|
||||||
if currentState == battery.Unknown {
|
|
||||||
return state
|
|
||||||
}
|
|
||||||
if currentState == battery.Empty|battery.Full && state == battery.Charging|battery.Discharging {
|
|
||||||
return state
|
|
||||||
}
|
|
||||||
return battery.Charging
|
|
||||||
}
|
|
||||||
batteries, err := battery.GetAll()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if batteries == nil {
|
|
||||||
return nil, &noBatteryError{}
|
|
||||||
}
|
|
||||||
batt := &battery.Battery{}
|
|
||||||
for _, bt := range batteries {
|
|
||||||
batt.Current += bt.Current
|
|
||||||
batt.Full += bt.Full
|
|
||||||
batt.State = getMostLogicalState(batt.State, bt.State)
|
|
||||||
}
|
|
||||||
return batt, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (env *environment) getShellName() string {
|
func (env *environment) getShellName() string {
|
||||||
|
|
|
@ -33,12 +33,18 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
func (b *batt) enabled() bool {
|
func (b *batt) enabled() bool {
|
||||||
var err error
|
batteries, err := b.env.getBatteryInfo()
|
||||||
b.Battery, err = b.env.getBatteryInfo()
|
|
||||||
if !b.enabledWhileError(err) {
|
if !b.enabledWhileError(err) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
b.Battery = &battery.Battery{}
|
||||||
|
for _, bt := range batteries {
|
||||||
|
b.Battery.Current += bt.Current
|
||||||
|
b.Battery.Full += bt.Full
|
||||||
|
b.Battery.State = b.mapMostLogicalState(b.Battery.State, bt.State)
|
||||||
|
}
|
||||||
|
|
||||||
display := b.props.getBool(DisplayCharging, true)
|
display := b.props.getBool(DisplayCharging, true)
|
||||||
if !display && (b.Battery.State == battery.Charging || b.Battery.State == battery.Full) {
|
if !display && (b.Battery.State == battery.Charging || b.Battery.State == battery.Full) {
|
||||||
return false
|
return false
|
||||||
|
@ -93,6 +99,16 @@ func (b *batt) enabledWhileError(err error) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *batt) mapMostLogicalState(currentState battery.State, state battery.State) battery.State {
|
||||||
|
if currentState == battery.Unknown {
|
||||||
|
return state
|
||||||
|
}
|
||||||
|
if currentState == battery.Empty|battery.Full && state == battery.Charging|battery.Discharging {
|
||||||
|
return state
|
||||||
|
}
|
||||||
|
return battery.Charging
|
||||||
|
}
|
||||||
|
|
||||||
func (b *batt) string() string {
|
func (b *batt) string() string {
|
||||||
segmentTemplate := b.props.getString(SegmentTemplate, "{{.Icon}}{{ if not .Error }}{{.Percentage}}{{ end }}{{.Error}}")
|
segmentTemplate := b.props.getString(SegmentTemplate, "{{.Icon}}{{ if not .Error }}{{.Percentage}}{{ end }}{{.Error}}")
|
||||||
template := &textTemplate{
|
template := &textTemplate{
|
||||||
|
|
|
@ -19,7 +19,10 @@ func setupBatteryTests(state battery.State, batteryLevel float64, props *propert
|
||||||
Full: 100,
|
Full: 100,
|
||||||
Current: batteryLevel,
|
Current: batteryLevel,
|
||||||
}
|
}
|
||||||
env.On("getBatteryInfo", nil).Return(bt, nil)
|
batteries := []*battery.Battery{
|
||||||
|
bt,
|
||||||
|
}
|
||||||
|
env.On("getBatteryInfo", nil).Return(batteries, nil)
|
||||||
b := &batt{
|
b := &batt{
|
||||||
props: props,
|
props: props,
|
||||||
env: env,
|
env: env,
|
||||||
|
@ -121,7 +124,8 @@ func TestBatteryForegroundColorInvalid(t *testing.T) {
|
||||||
func TestBatteryError(t *testing.T) {
|
func TestBatteryError(t *testing.T) {
|
||||||
env := &MockedEnvironment{}
|
env := &MockedEnvironment{}
|
||||||
err := errors.New("oh snap")
|
err := errors.New("oh snap")
|
||||||
env.On("getBatteryInfo", nil).Return(&battery.Battery{}, err)
|
batteries := []*battery.Battery{}
|
||||||
|
env.On("getBatteryInfo", nil).Return(batteries, err)
|
||||||
b := &batt{
|
b := &batt{
|
||||||
props: &properties{
|
props: &properties{
|
||||||
values: map[Property]interface{}{
|
values: map[Property]interface{}{
|
||||||
|
@ -137,7 +141,8 @@ func TestBatteryError(t *testing.T) {
|
||||||
func TestBatteryErrorHidden(t *testing.T) {
|
func TestBatteryErrorHidden(t *testing.T) {
|
||||||
env := &MockedEnvironment{}
|
env := &MockedEnvironment{}
|
||||||
err := errors.New("oh snap")
|
err := errors.New("oh snap")
|
||||||
env.On("getBatteryInfo", nil).Return(&battery.Battery{}, err)
|
batteries := []*battery.Battery{}
|
||||||
|
env.On("getBatteryInfo", nil).Return(batteries, err)
|
||||||
b := &batt{
|
b := &batt{
|
||||||
props: &properties{
|
props: &properties{
|
||||||
values: map[Property]interface{}{
|
values: map[Property]interface{}{
|
||||||
|
@ -152,7 +157,8 @@ func TestBatteryErrorHidden(t *testing.T) {
|
||||||
func TestBatteryNoBattery(t *testing.T) {
|
func TestBatteryNoBattery(t *testing.T) {
|
||||||
env := &MockedEnvironment{}
|
env := &MockedEnvironment{}
|
||||||
err := &noBatteryError{}
|
err := &noBatteryError{}
|
||||||
env.On("getBatteryInfo", nil).Return(&battery.Battery{}, err)
|
batteries := []*battery.Battery{}
|
||||||
|
env.On("getBatteryInfo", nil).Return(batteries, err)
|
||||||
b := &batt{
|
b := &batt{
|
||||||
props: &properties{
|
props: &properties{
|
||||||
values: map[Property]interface{}{
|
values: map[Property]interface{}{
|
||||||
|
|
|
@ -107,9 +107,9 @@ func (env *MockedEnvironment) getArgs() *args {
|
||||||
return arguments.Get(0).(*args)
|
return arguments.Get(0).(*args)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (env *MockedEnvironment) getBatteryInfo() (*battery.Battery, error) {
|
func (env *MockedEnvironment) getBatteryInfo() ([]*battery.Battery, error) {
|
||||||
args := env.Called(nil)
|
args := env.Called(nil)
|
||||||
return args.Get(0).(*battery.Battery), args.Error(1)
|
return args.Get(0).([]*battery.Battery), args.Error(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (env *MockedEnvironment) getShellName() string {
|
func (env *MockedEnvironment) getShellName() string {
|
||||||
|
|
Loading…
Reference in a new issue