-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathterraform.mx
More file actions
107 lines (93 loc) · 3.22 KB
/
Copy pathterraform.mx
File metadata and controls
107 lines (93 loc) · 3.22 KB
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
function terraform-get {
# Download and install a preferred version of Terraform. Params: [0-9]+\.[0-9]+\.[0-9]+
trypipe {
$ARGS[1] -> set ver
getfile https://releases.hashicorp.com/terraform/$ver/terraform_${$ver}_${os}_${cpuarch}.zip |> $DEVOPSVERSIONED/deleteme.zip
unzip $DEVOPSVERSIONED/deleteme.zip -d $DEVOPSVERSIONED
mv -i $DEVOPSVERSIONED/terraform $DEVOPSVERSIONED/terraform_$ver
rm $DEVOPSVERSIONED/deleteme.zip
unsafe { rm <!null> LICENSE.txt }
terraform-switch $ver
}
catch {
err "Something went wrong. You haven't been switched to $ARGS[1]"
}
}
private autocomplete.terraform.versions {
# List terraform versions as detailed in Github Releases
runmode trypipe function
cast str
get https://api.github.com/repos/hashicorp/terraform/releases \
-> [body] \
-> :json: foreach release {
if { $release[name] !~ '-' } then {
$release[name] -> regexp %(f/v([0-9]+\.[0-9]+\.[0-9]+)/)
}
}
}
test unit private autocomplete.terraform.versions %{
StdoutType: str
StdoutGreaterThan: 3
StdoutIsArray: true
}
autocomplete set terraform-get %[{
Dynamic: "{ autocomplete.terraform.versions }"
}]
function terraform-switch {
# Switches Terraform binary versions (used when switching between older and newer Terraform states/scripts)
test define version %{
StdoutRegex: %([0-9]+\.[0-9]+\\.[0-9]+)
ExitNum: 0
}
test define tfverexists %{ ExitNum: 0 }
test define tfexists %{ ExitNum: 0 }
test define symlink %{
StderrRegex: "^$"
ExitNum: 0
}
test define unlink %{ ExitNum: 0 }
trypipe {
$ARGS -> [ <test_version> 1 ] -> set ver
if {g <test_tfverexists> $DEVOPSVERSIONED/terraform_$ver} then {
if {g <test_tfexists> $DEVOPSBIN/terraform} then { unlink <!null> <test_unlink> $DEVOPSBIN/terraform }
ln <test_symlink> -sv $DEVOPSVERSIONED/terraform_$ver $DEVOPSBIN/terraform
global TF_VERSION=$ver
murex-update-exe-list
} else {
err "That version doesn't exist. If version number is not a typo then please use `terraform-get` to download it."
}
}
}
autocomplete set terraform-switch %[{
Dynamic: '{
g $DEVOPSVERSIONED/terraform_* \
-> regexp %(f/terraform_([0-9]+\.[0-9]+\.[0-9]+)$/) \
-> format str \
-> sort -Vr
}'
}]
#function workspace {
# # Initializes the Terraform workspace
# try {
# out "{YELLOW}Checking AWS session token...{RESET}"
# and { $AWS_SESSION_TOKEN } { $AWS_SESSION_EXPIRATION } { = ((${date -d $AWS_SESSION_EXPIRATION +%s}-${date +%s})/60) > 10 }
# #err "Please rerun `awscon`"
# #return 1
#
# out "{YELLOW}Checking SSH agent...{RESET}"
# if { $SSH_AGENT_PID } else {
# agent
# }
#
# out "{YELLOW}Initializing Terraform...{RESET}"
# terraform: init
#
# out "{YELLOW}Selecting workspace '$USER'...{RESET}"
# if { terraform: workspace new $USER } else {
# terraform: workspace select $USER
# }
#
# }; catch {
# err "Failed to initialize you workspace"
# }
#}