Class: KtCommon::GitDataStore

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

Overview

GitDataStore encapsulates a Git repository

Instance Method Summary collapse

Constructor Details

#initialize(location) ⇒ GitDataStore

Returns a new instance of GitDataStore.



21
22
23
24
25
# File 'lib/ktcommon/gitdatastore.rb', line 21

def initialize(location)
	$LOG.debug "GitDataStore::new"
	@location 	= location
	@store 		= nil
end

Instance Method Details

#create(path, data) ⇒ Object



58
59
60
61
62
63
64
# File 'lib/ktcommon/gitdatastore.rb', line 58

def create(path, data)
	$LOG.debug "GitDataStore::create"
	
	store[ymlPath(path)] = data
	commitMsg	= "Added to data store:  #{ymlPath(path)}"
	store.commit commitMsg
end

#delete(path) ⇒ Object



98
99
100
101
102
103
104
105
106
107
# File 'lib/ktcommon/gitdatastore.rb', line 98

def delete(path)
	$LOG.debug "GitDataStore::delete"
	
	
	result 		= store.delete ymlPath(path)
	commitMsg	= "Deleted from data store: #{ymlPath(path)}"
	store.commit commitMsg
	
	return result
end

#location(location) ⇒ Object

Raises:

  • (ArgumentError)


52
53
54
55
# File 'lib/ktcommon/gitdatastore.rb', line 52

def location(location)
	raise ArgumentError.new("Repo already opened when new location submitted: #{location}") unless @store.nil?
	@location = location
end

#read(path) ⇒ Object

Read a specific file from the store based on a path.

path

path to retrieve data from

returns

one(1) data object



71
72
73
74
75
# File 'lib/ktcommon/gitdatastore.rb', line 71

def read(path)
	$LOG.debug "GitDataStore::read(#{ymlPath(path)})"
	
	return store[ymlPath(path)]
end

#read_path(path) ⇒ Object

Read data from the store based on a path.

path

path to retrieve data from

returns

a Hash of data



82
83
84
85
86
# File 'lib/ktcommon/gitdatastore.rb', line 82

def read_path(path)
	$LOG.debug "GitDataStore::read_path(#{path})"
	
	return store[path]
end

#storeObject

Raises:

  • (ArgumentError)


38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/ktcommon/gitdatastore.rb', line 38

def store()
	return @store unless @store.nil?
	raise ArgumentError.new("No repo location provided before store requested.") unless (!@location.nil? && !@location.empty?)
	begin
		@store = GitStore.new(@location)
	rescue ArgumentError => e
		if(e.message.include?("must be a valid Git repo"))
			raise RuntimeError.new("Cannot find a valid Git repo. Are you sure you've initialized the dir at #{@location}?")
		end
		raise $:
	end
end

#update(path, data) ⇒ Object



89
90
91
92
93
94
95
# File 'lib/ktcommon/gitdatastore.rb', line 89

def update(path, data)
	$LOG.debug "GitDataStore::update"
	
	store[ymlPath(path)] = data
	commitMsg	= "Updated data store: #{ymlPath(path)}"
	store.commit commitMsg
end

#ymlPath(path) ⇒ Object

Raises:

  • (ArgumentError)


28
29
30
31
32
33
34
35
# File 'lib/ktcommon/gitdatastore.rb', line 28

def ymlPath(path)
	#puts "IN: #{path}"
	raise ArgumentError.new("Empty path") if (path.nil? || path.empty?)
	
	path += ".yml" unless !File.extname(path).empty?
	#puts "OUT: #{path}"
	return path
end