-
Notifications
You must be signed in to change notification settings - Fork 0
/
clone_git_repos.cf
64 lines (45 loc) · 2.6 KB
/
clone_git_repos.cf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
bundle agent clone_git_repos {
vars:
"git_repos_base" string => "/home/${config.username}/COMMUNAUTES/";
"git_repos[CFEngine][0]" string => "[email protected]:cfengine/core.git";
"git_repos[CFEngine][1]" string => "[email protected]:cfengine/design-center.git";
"git_repos[OpenLDAP][0]" string => "git://git.openldap.org/openldap.git";
"git_repos[OpenLDAP][1]" string => "git://git.openldap.org/openldap-etc.git";
"git_repos[OpenLDAP][2]" string => "git://git.openldap.org/openldap-www.git";
"git_repos[FusionInventory][0] string => "[email protected]:fusinv/fusioninventory-agent.git";
"git_repos[Rudder][0]" string => "[email protected]:Normation/rudder-parent-pom.git";
"git_repos[Rudder][1]" string => "[email protected]:Normation/rudder-commons.git";
"git_repos[Rudder][2]" string => "[email protected]:Normation/cf-clerk.git";
"git_repos[Rudder][3]" string => "[email protected]:Normation/scala-ldap.git";
"git_repos[Rudder][4]" string => "[email protected]:Normation/ldap-inventory.git";
"git_repos[Rudder][5]" string => "[email protected]:Normation/rudder.git";
"git_repos[Rudder][6]" string => "[email protected]:Normation/rudder-plugin-helloworld.git";
"git_repos[Rudder][7]" string => "[email protected]:Normation/rudder-doc.git";
"git_repos[Rudder][8]" string => "[email protected]:Normation/rudder-techniques.git";
"git_repos[Rudder][9]" string => "[email protected]:Normation/rudder-packages.git";
"git_repos[Rudder][10]" string => "[email protected]:Normation/rudder-vagrant.git";
"git_repos[Rudder_internal][0]" string => "ssh://[email protected]:5190/packaging.git";
"projects" slist => getindices("git_repos");
methods:
"placeholder" usebundle => clone_git_repos_project("$(git_repos_base)/$(projects)", "clone_git_repos.git_repos[$(projects)]");
}
bundle agent clone_git_repos_project(basepath, repos) {
vars:
"repos_keys" slist => getindices("$(repos)");
"repo_data[$(repos_keys)][dirname]" string => execresult("/usr/bin/basename $($(repos)[$(repos_keys)]) .git", "noshell");
classes:
"repo_dir_exists_$(repos_keys)" expression => isdir("$(basepath)/$(repo_data[$(repos_keys)][dirname])");
files:
"$(basepath)/."
create => "true",
perms => owner("$(config.username)");
"$(basepath)/$(repo_data[$(repos_keys)][dirname])/."
perms => owner("$(config.username)");
"$(basepath)/$(repo_data[$(repos_keys)][dirname])"
depth_search => recurse("inf"),
perms => owner("$(config.username)");
commands:
"/usr/bin/git clone $($(repos)[$(repos_keys)])"
contain => in_dir("$(basepath)"),
ifvarclass => "!repo_dir_exists_$(repos_keys)";
}