Skip to content

Commit

Permalink
gitclone type
Browse files Browse the repository at this point in the history
  • Loading branch information
jordiprats committed Jan 8, 2018
1 parent a3c10a3 commit cee6ec6
Show file tree
Hide file tree
Showing 4 changed files with 109 additions and 1 deletion.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# CHANGELOG

## 0.1.11

* added **git clone** type to clone repos

## 0.1.10

* added **eypconf_servergroup** fact
Expand Down
43 changes: 43 additions & 0 deletions lib/puppet/provider/gitclone/gitclone_linux.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
Puppet::Type.type(:gitclone).provide(:gitclone_linux) do

def check_created_file(file)
if File.exists?(file+'/.git')
self.debug("Found #{file}")
return true
else
self.debug("Not found #{file}")
return false
end
end

def run_gitclone_command(url)

command = ["git"]
command.push("clone")
command.push(url)
command.push(resource[:creates])

if resource[:cwd]
Dir.chdir resource[:cwd] do
run_command(command)
end
else
run_command(command)
end
end

private

def run_command(command)
command = command.join ' '
output = Puppet::Util::Execution.execute(command, {
:uid => 'root',
:gid => 'root',
:failonfail => false,
:combine => true,
:override_locale => true,
})
[output, $CHILD_STATUS.dup]
end

end
61 changes: 61 additions & 0 deletions lib/puppet/type/gitclone.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
Puppet::Type.newtype(:gitclone) do
@doc = 'clone git repos'

newparam(:name) do
desc "An arbitrary tag for your own reference"
isnamevar
end

newproperty(:url) do
desc 'URL to download'

defaultto { @resource[:name] }

# If needing to run the SQL command, return a fake value that will trigger
# a sync, else return the expected SQL command so no sync takes place
def retrieve
if @resource.should_run_gitclone
return :notrun
else
return self.should
end
end

def sync
output, status = provider.run_gitclone_command(value)
self.fail("Error executing git clone; returned #{status}: '#{output}'") unless status == 0
end
end

newparam(:cwd, :parent => Puppet::Parameter::Path) do
desc "The working directory under which the git clone command should be executed."
defaultto("/tmp")
end

newparam(:creates) do
desc "where to clone the repo"

def matches(value)
provider.check_created_file(value)
end
end

newparam(:refreshonly, :boolean => true) do
desc "If 'true', it will only be executed via a notify/subscribe event."

defaultto(:false)
newvalues(:true, :false)
end

def should_run_gitclone(refreshing = false)
creates_param = @parameters[:creates]
return false if !creates_param.nil? && !creates_param.value.nil? && creates_param.matches(creates_param.value)
return false if !refreshing && @parameters[:refreshonly].value == :true
true
end

def refresh
self.property(:command).sync if self.should_run_gitclone(true)
end

end
2 changes: 1 addition & 1 deletion metadata.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "eyp-eyplib",
"version": "0.1.10",
"version": "0.1.11",
"author": "eyp",
"summary": "Utility functions for puppet modules",
"license": "Apache-2.0",
Expand Down

0 comments on commit cee6ec6

Please sign in to comment.