22644c9c08c809e0ec1d6a272668c3f70c4ecda1
Dev Refactoring. Adding pkg mgmt.

Dev authored 7 years ago

1) require_relative 'objects/rcm_file'
2) require_relative 'objects/rcm_package'
3) require_relative 'objects/rcm_service'
4) require_relative 'managers/rcm_package_manager'
Dev Initial commit

Dev authored 7 years ago

5) require 'yaml'
6) 
7) module RCM
8)   PACKAGES = 'packages'
9)   FILES = 'files'
10)   SERVICES = 'services'
11) 
12)   @@wanted = {
Dev Refactoring. Adding pkg mgmt.

Dev authored 7 years ago

13)     PACKAGES => {},
14)     FILES => {},
15)     SERVICES => {}
Dev Initial commit

Dev authored 7 years ago

16)   }
17) 
18)   @@got = {
Dev Refactoring. Adding pkg mgmt.

Dev authored 7 years ago

19)     PACKAGES => {},
20)     FILES => {},
21)     SERVICES => {}
Dev Initial commit

Dev authored 7 years ago

22)   }
23) 
Dev Refactoring. Adding pkg mgmt.

Dev authored 7 years ago

24)   @@crackalackin = {
25)       PACKAGES => [],
26)       FILES => [],
27)       SERVICES => []
28)   }
29) 
30)   @@pkg_mgr = ::RCM::Apt.new()
31) 
32)   def self.parse_packages(markup)
33)     markup.each do |d|
34)       # ensure package version exists, if mentioned.
35)       version = d.fetch('version', '')
36)       desired_state = d.fetch('desired_state', ::RCM::Package::INSTALLED)
37) 
38)       valid_package_states = [::RCM::Package::INSTALLED, ::RCM::Package::REMOVED]
39) 
40)       if (valid_package_states & [desired_state]).empty?
41)         raise "Unknown desired_state: #{desired_state}. Valid states: #{valid_package_states.join(', ')}"
42)       end
Dev Initial commit

Dev authored 7 years ago

43) 
Dev Refactoring. Adding pkg mgmt.

Dev authored 7 years ago

44)       unless version.empty?
45)         available_versions = @@pkg_mgr.get_versions(d['name'])
46)         if (available_versions & [version]).empty?
47)           raise "\n\n#{d['name']} = #{version} is not available.\nAvailable versions: #{available_versions.join(', ')}"
48)         end
49)       end
50)       p = RCM::Package.new(d['name'], version, desired_state)
51)       @@wanted[PACKAGES][d['name']] = p
52)     end
Dev Initial commit

Dev authored 7 years ago

53)   end
54) 
Dev Refactoring. Adding pkg mgmt.

Dev authored 7 years ago

55) 
56)   def whachuwant() # or parse_config
57)     env = ENV.fetch('ENVIRONMENT', '')
Dev Initial commit

Dev authored 7 years ago

58)     # Consume config from YAML, and convert it to usable objects in @@wanted.
Dev Refactoring. Adding pkg mgmt.

Dev authored 7 years ago

59)     config_file = env.empty? ? 'config.yaml' : "config_#{env}.yaml"
Dev Initial commit

Dev authored 7 years ago

60) 
Dev Refactoring. Adding pkg mgmt.

Dev authored 7 years ago

61)     raise "#{config_file} not found." unless ::File.readable?(config_file)
62) 
63)     config = YAML.load_file(config_file)
Dev Initial commit

Dev authored 7 years ago

64)     config.each do |yaml_objects|
65)       yaml_objects.each do |coll, defs|
66)         case coll
67)         when PACKAGES
Dev Refactoring. Adding pkg mgmt.

Dev authored 7 years ago

68)           parse_packages(defs)
69) 
70)         when FILES
Dev Initial commit

Dev authored 7 years ago

71)           defs.each do |d|
Dev Refactoring. Adding pkg mgmt.

Dev authored 7 years ago

72)             f = RCM::File.new(d['path'], d['owner'], d['group'], d['mode'], 'idk')
73)             @@wanted[FILES][d['path']] = f
Dev Initial commit

Dev authored 7 years ago

74)           end
75) 
Dev Refactoring. Adding pkg mgmt.

Dev authored 7 years ago

76)         when SERVICES
Dev Initial commit

Dev authored 7 years ago

77)           defs.each do |d|
Dev Refactoring. Adding pkg mgmt.

Dev authored 7 years ago

78)             puts d
Dev Initial commit

Dev authored 7 years ago

79)           end
80)         end
81)       end
82)     end
83) 
84)   end
85) 
Dev Refactoring. Adding pkg mgmt.

Dev authored 7 years ago

86)   def whachugot() # or get_current_state
87)     @@wanted[PACKAGES].each do |name, p|
88)       state = ::RCM::Package::REMOVED
89)       version = 'idk'
90)       begin
91)         status = @@pkg_mgr.status(p.name)
92) 
93)         if status[:exit_code] == 0
94)           state = ::RCM::Package::INSTALLED if status[:output] =~ 'ok installed'
95)           version = /Version: (?<version>\d+.+)/.match(status[:output])[:version]
96)         end
97) 
98)         current_pkg = ::RCM::Package.new(name, version, state)
Dev Initial commit

Dev authored 7 years ago

99) 
Dev Refactoring. Adding pkg mgmt.

Dev authored 7 years ago

100)         @@got[PACKAGES][name] = current_pkg
101)       rescue Exception => e
102)         puts e.message
103)       end
104)     end
Dev Initial commit

Dev authored 7 years ago

105)   end
106) 
Dev Refactoring. Adding pkg mgmt.

Dev authored 7 years ago

107)   def crackalackin_packages()
108)     @@wanted[PACKAGES].each do |pkg_name, pkg_obj|
109)       current_pkg = @@got[PACKAGES][pkg_name]
110) 
111)       next if current_pkg.state == ::RCM::Package::INSTALLED &&
112)           current_pkg.version == pkg_obj.version
113) 
114)       # Set the version correctly
115)       current_pkg.version = pkg_obj.version
116)       @@crackalackin[PACKAGES].push(current_pkg)
117)     end
118) 
119)     puts @@crackalackin[PACKAGES]
120)   end
121) 
122)   def cracka_stop_lackin()
123)     puts 'not implemented'
124)   end
125)   module_function :whachuwant, :whachugot, :crackalackin_packages, :cracka_stop_lackin
Dev Initial commit

Dev authored 7 years ago

126) 
127) end
128) 
129) RCM.whachuwant