Class: QMK::Firmware

Inherits:
Object
  • Object
show all
Defined in:
lib/firmware.rb

Instance Method Summary collapse

Constructor Details

#initialize(keyboard, keymap, keymaps_only) ⇒ Firmware

Returns a new instance of Firmware.



10
11
12
13
14
15
# File 'lib/firmware.rb', line 10

def initialize(keyboard, keymap, keymaps_only)
  @keyboard = keyboard
  @keymap = keymap
  @repo = Git.new(LIB_PATH)
  @keymaps_only = keymaps_only
end

Instance Method Details

#checkout_stableObject



41
42
43
44
45
46
# File 'lib/firmware.rb', line 41

def checkout_stable
  in_repo do
    @repo.fetch_origin
    @repo.checkout_latest_tag
  end
end

#keyboard_nameObject



82
83
84
# File 'lib/firmware.rb', line 82

def keyboard_name
  @keyboard.gsub(/\/rev.*/, '')
end

#keyboardsObject



55
56
57
58
59
60
61
# File 'lib/firmware.rb', line 55

def keyboards
  if @keymaps_only
    standalone_keyboards
  else
    qmk_keyboards @keymap
  end
end

#make(target = nil) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/firmware.rb', line 17

def make(target = nil)
  if @keymaps_only
    prepare_firmware
  end

  in_repo do
    run "make #{make_target(target)}"
  end
end

#programmerObject



86
87
88
# File 'lib/firmware.rb', line 86

def programmer
  Programmer.new(keyboard_path).flasher
end

#qmk_keyboards(keymap = nil) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/firmware.rb', line 69

def qmk_keyboards(keymap=nil)
  Dir["#{keyboards_path}/**/#{keymap}/keymap.c"]
    .map {|path|
      File.dirname(path)
        .gsub(keyboards_path, '')
        .split('/')
        .reject(&:empty?)
        .first
    }
    .uniq
    .sort
end

#setupObject



27
28
29
30
31
32
33
# File 'lib/firmware.rb', line 27

def setup
  @repo.clone 'https://github.com/qmk/qmk_firmware.git'

  in_repo do
    @repo.checkout_latest_tag
  end
end

#standalone_keyboardsObject



63
64
65
66
67
# File 'lib/firmware.rb', line 63

def standalone_keyboards
  Dir["**/keymap.c"]
    .map {|path| File.dirname(path) }
    .sort
end

#updateObject



48
49
50
51
52
53
# File 'lib/firmware.rb', line 48

def update
  in_repo do
    @repo.clean
    checkout_stable
  end
end

#update_submodulesObject



35
36
37
38
39
# File 'lib/firmware.rb', line 35

def update_submodules
  in_repo do
    run "make git-submodule"
  end
end