atk_toolbox 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/atk/cmd.rb +7 -0
- data/lib/atk/download.rb +39 -0
- data/lib/atk/os.rb +72 -0
- data/lib/atk/output.rb +5 -0
- data/lib/atk/package_managers.rb +111 -0
- data/lib/atk/yaml_info_parser.rb +248 -0
- data/lib/atk_toolbox.rb +6 -0
- data/test/info.yaml +68 -0
- data/test/main.rb +5 -0
- metadata +52 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7be1f743af7afd55414c41e1a58373c22b922e891766d41a08027ca91c85662b
|
4
|
+
data.tar.gz: 9957d137a35201bb5f6b9302b4618f80a23af7535bdcd80f04729148be349674
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c778630a2ffd8c94d494a6b913ae5b207e4d78624b0f56a8806cdd133526f8ecbf9229406232658d830b4b36f438594706185e1c1df7c22b068f48abb2701451
|
7
|
+
data.tar.gz: 933bb35bb46fb63e677aa2f1e600dc81a58b2bfd20acd6a54ac5e43f79195b475906863f8d8164e9283cd7807037766d80da6326060dd82d31bb495b149ad727
|
data/lib/atk/cmd.rb
ADDED
data/lib/atk/download.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
def download(input_1=nil, from:nil, url:nil, as:nil)
|
2
|
+
require 'open-uri'
|
3
|
+
# argument checking
|
4
|
+
# if only one argument, either input_1 or url
|
5
|
+
if ((input_1!=nil) != (url!=nil)) && (from==nil) && (as==nil)
|
6
|
+
# this covers:
|
7
|
+
# download 'site.com/file'
|
8
|
+
the_url = url || input_1
|
9
|
+
file_name = the_url.match /(?<=\/)[^\/]+\z/
|
10
|
+
file_name = file_name[0]
|
11
|
+
elsif (as != nil) && ((input_1!=nil)!=(url!=nil))
|
12
|
+
# this covers:
|
13
|
+
# download 'site.com/file' as:'file'
|
14
|
+
# download url:'site.com/file' as:'file'
|
15
|
+
the_url = url || input_1
|
16
|
+
file_name = as
|
17
|
+
elsif ((from!=nil) != (url!=nil)) && input_1!=nil
|
18
|
+
# this covers:
|
19
|
+
# download 'file' from:'site.com/file'
|
20
|
+
# download 'file' url:'site.com/file'
|
21
|
+
the_url = from || url
|
22
|
+
file_name = input_1
|
23
|
+
else
|
24
|
+
message_ = "I'm not sure how you're using the download function.\n"
|
25
|
+
message_ << "Please use one of the following methods:\n"
|
26
|
+
message_ << " download 'site.com/file'\n"
|
27
|
+
message_ << " download 'site.com/file', as:'file'\n"
|
28
|
+
message_ << " download url:'site.com/file', as:'file'\n"
|
29
|
+
message_ << " download 'file', from:'site.com/file'\n"
|
30
|
+
message_ << " download 'file', url:'site.com/file'\n"
|
31
|
+
raise message_
|
32
|
+
end#if
|
33
|
+
#end argument checking
|
34
|
+
|
35
|
+
# actually download the file
|
36
|
+
open(file_name, 'wb') do |file|
|
37
|
+
file << open(the_url).read
|
38
|
+
end
|
39
|
+
end
|
data/lib/atk/os.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# every OS version is a perfect heirarchy of versions and sub verisons that may or may not be chronological
|
2
|
+
# every OS gets it's own custom heirarchy since there are issues like x86 support and "student edition" etc
|
3
|
+
# the plan is to release this heirarchy on its own repo, and to get pull requests for anyone who wants to add their own OS
|
4
|
+
os_heirarchy = {
|
5
|
+
"windows" => {
|
6
|
+
"10" => {},
|
7
|
+
"8.1" => {},
|
8
|
+
"8" => {},
|
9
|
+
"7" => {},
|
10
|
+
"vista" => {},
|
11
|
+
"xp" => {},
|
12
|
+
"95" => {},
|
13
|
+
},
|
14
|
+
"mac" => {
|
15
|
+
"mojave" => {},
|
16
|
+
"high sierra" => {},
|
17
|
+
"sierra" => {},
|
18
|
+
"el capitan" => {},
|
19
|
+
"yosemite" => {},
|
20
|
+
"mavericks" => {},
|
21
|
+
"mountain lion" => {},
|
22
|
+
"lion" => {},
|
23
|
+
"snow leopard" => {},
|
24
|
+
"leopard" => {},
|
25
|
+
"tiger" => {},
|
26
|
+
"panther" => {},
|
27
|
+
"jaguar" => {},
|
28
|
+
"puma" => {},
|
29
|
+
"cheetah" => {},
|
30
|
+
"kodiak" => {},
|
31
|
+
},
|
32
|
+
"ubuntu" => {},
|
33
|
+
"arch" => {},
|
34
|
+
"manjaro" => {},
|
35
|
+
"deepin" => {},
|
36
|
+
"centos" => {},
|
37
|
+
"debian" => {},
|
38
|
+
"fedora" => {},
|
39
|
+
"elementary" => {},
|
40
|
+
"zorin" => {},
|
41
|
+
"raspian" => {},
|
42
|
+
"android" => {},
|
43
|
+
}
|
44
|
+
|
45
|
+
#
|
46
|
+
# Groups
|
47
|
+
#
|
48
|
+
# the groups are the pratical side of the OS, they describe the OS rather than fit it prefectly into a heirarchy
|
49
|
+
module OS
|
50
|
+
# TODO: have the version pick one of the verions in the os_heirarchy according to the current OS
|
51
|
+
def self.version
|
52
|
+
raise "not yet implemented"
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.is?(adjective)
|
56
|
+
# summary:
|
57
|
+
# this is a function created for convenience, so it doesn't have to be perfect
|
58
|
+
# you can use it to ask about random qualities of the current OS and get a boolean response
|
59
|
+
# convert to string (if its a symbol)
|
60
|
+
adjective = adjective.to_s
|
61
|
+
case adjective
|
62
|
+
when 'windows'
|
63
|
+
return (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
|
64
|
+
when 'mac'
|
65
|
+
return (/darwin/ =~ RUBY_PLATFORM) != nil
|
66
|
+
when 'linux'
|
67
|
+
return (not OS.is?(:windows)) && (not OS.is?(:mac))
|
68
|
+
when 'unix'
|
69
|
+
return OS.is?(:windows) || OS.is?(:mac)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
data/lib/atk/output.rb
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
class PackageManager
|
2
|
+
def self.installed?(app_name, version=nil)
|
3
|
+
puts 'This has not been implemented yet'
|
4
|
+
end
|
5
|
+
|
6
|
+
def self.install(app_name, version=nil)
|
7
|
+
puts 'This has not been implemented yet'
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.uninstall(app_name, version=nil)
|
11
|
+
puts 'This has not been implemented yet'
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.update_app(app_name)
|
15
|
+
puts 'This has not been implemented yet'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class Scoop < PackageManager
|
20
|
+
|
21
|
+
@@scoop_dir = ENV['SCOOP'] or '#{Dir.home}/scoop'
|
22
|
+
@@scoop_global_dir = ENV['SCOOP_GLOBAL'] or '#{ENV["ProgramData"]}/scoop'
|
23
|
+
|
24
|
+
def self.base_dir(global=false)
|
25
|
+
return global ? @@scoop_global_dir : @@scoop_dir
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.apps_dir(global=false)
|
29
|
+
root = base_dir(global)
|
30
|
+
return '#{root}/apps'
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.app_dir(app_name, global=false)
|
34
|
+
root = apps_dir(global)
|
35
|
+
return '#{root}/#{app_name}'
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.add_bucket(bucket_name, bucket_location=nil)
|
39
|
+
if (bucket_location == nil)
|
40
|
+
`scoop bucket add #{bucket_name}`
|
41
|
+
else
|
42
|
+
`scoop bucket add #{bucket_name} #{bucket_location}`
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.switch_app_version(app_name, version=nil)
|
47
|
+
if(version == nil)
|
48
|
+
`scoop reset #{app_name}`
|
49
|
+
else
|
50
|
+
`scoop reset #{app_name}@#{version}`
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# Overriden Methods
|
55
|
+
|
56
|
+
def self.installed?(app_name, version=nil)
|
57
|
+
# if(global == nil) { return (installed?(app_name, true) or installed? (app_name, false)) }
|
58
|
+
# Dependencies of the format "bucket/dependency" install in a directory of form
|
59
|
+
# "dependency". So we need to extract the bucket from the name and only give the app
|
60
|
+
# name to is_directory
|
61
|
+
# TODO: add support for checking if version is installed
|
62
|
+
app_name = app_name.split("/")[-1]
|
63
|
+
return File.directory?(File.expand_path(app_dir(app_name)))
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.install(app_name, version=nil)
|
67
|
+
if(installed?(app_name))
|
68
|
+
puts 'You already have #{app_name} installed'
|
69
|
+
return
|
70
|
+
end
|
71
|
+
|
72
|
+
if(version == nil)
|
73
|
+
`scoop install #{app_name}`
|
74
|
+
else
|
75
|
+
`scoop install #{app_name}@#{version}`
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def self.uninstall(app_name, version=nil)
|
80
|
+
if(app_name == 'scoop')
|
81
|
+
puts 'You are trying to uninstall scoop which is a dependency for ATK. We will not let you uninstall Scoop through ATK'
|
82
|
+
return
|
83
|
+
end
|
84
|
+
|
85
|
+
if(version == nil)
|
86
|
+
`scoop uninstall #{app_name}`
|
87
|
+
else
|
88
|
+
`scoop uninstall #{app_name}@#{version}`
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def self.update_app(app_name)
|
93
|
+
`scoop update #{app_name}`
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
class Homebrew < PackageManager
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
class Apt < PackageManager
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
class Pacman < PackageManager
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
class Yum < PackageManager
|
110
|
+
|
111
|
+
end
|
@@ -0,0 +1,248 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
require "yaml"
|
3
|
+
require_relative './cmd'
|
4
|
+
require_relative './os'
|
5
|
+
|
6
|
+
#
|
7
|
+
# Create loaders for ruby code literal and console code literal
|
8
|
+
#
|
9
|
+
class Code
|
10
|
+
@@tags = {}
|
11
|
+
def self.tags
|
12
|
+
return @@tags
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.register_as(yaml_tag_name)
|
16
|
+
YAML.add_tag(yaml_tag_name, self.class)
|
17
|
+
Code.tags[yaml_tag_name] = self.class
|
18
|
+
end
|
19
|
+
|
20
|
+
def init_with(coder)
|
21
|
+
@value = coder.scalar
|
22
|
+
end
|
23
|
+
|
24
|
+
def run
|
25
|
+
# TODO: improve this error message
|
26
|
+
raise "This needs to be overloaded"
|
27
|
+
end
|
28
|
+
|
29
|
+
def to_s
|
30
|
+
puts @value
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
#
|
35
|
+
# Ruby Code/Evaluation
|
36
|
+
#
|
37
|
+
class RubyCode < Code
|
38
|
+
def run
|
39
|
+
eval(@value)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
RubyCode.register_as('!language/ruby')
|
43
|
+
# add an evaluater for ruby code
|
44
|
+
ruby_evaluation_tag = 'evaluate/ruby'
|
45
|
+
Code.tags[ruby_evaluation_tag] = "evaluate"
|
46
|
+
YAML.add_domain_type("", ruby_evaluation_tag) do |type, value|
|
47
|
+
if value.is_a? String
|
48
|
+
eval(value)
|
49
|
+
else
|
50
|
+
value
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
#
|
55
|
+
# Console Code
|
56
|
+
#
|
57
|
+
# TODO: add support for console code
|
58
|
+
class ConsoleCode < Code
|
59
|
+
def run
|
60
|
+
-"#{@value}"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
ConsoleCode.register_as('!language/console')
|
64
|
+
#
|
65
|
+
# project info (specific to operating sytem)
|
66
|
+
#
|
67
|
+
# setting/getting values via an object (instead of opening/closing a file)
|
68
|
+
class Info
|
69
|
+
# main keys
|
70
|
+
# (using_atk_version)
|
71
|
+
# (project)
|
72
|
+
# (advanced_setup)
|
73
|
+
# any-level project detail keys:
|
74
|
+
# (dependencies)
|
75
|
+
# (project_commands)
|
76
|
+
# (structures)
|
77
|
+
# (local_package_managers)
|
78
|
+
# (put_new_dependencies_under)
|
79
|
+
# (environment_variables)
|
80
|
+
|
81
|
+
# TODO: figure out a way of adding write access to the info.yaml
|
82
|
+
# TODO: if there is no (using_atk_version), then add one with the current version
|
83
|
+
# TODO:
|
84
|
+
# if there is no (project) or no (advanced_setup), then assume its not an ATK setup
|
85
|
+
# (quit somehow depending on how this code was invoked)
|
86
|
+
# TODO:
|
87
|
+
# if there are ()'s in a key inside of the (project)
|
88
|
+
# but the key isn't part of the standard keys
|
89
|
+
# then issue a warning, and give them a suggestion to the next-closest key
|
90
|
+
|
91
|
+
@@data = nil
|
92
|
+
@@valid_variables = ['context', 'os']
|
93
|
+
@@valid_operators = ['is']
|
94
|
+
|
95
|
+
# TODO: write tests for this function
|
96
|
+
def self.parse_when_statment(statement)
|
97
|
+
# remove the 'when' and paraentheses
|
98
|
+
expression = statement.sub( /when\((.*)\)/, "\\1" )
|
99
|
+
# create the pattern for finding variables
|
100
|
+
variable_pattern = /\A\s*--(?<variable>#{@@valid_variables.join('|')})\s+(?<operator>#{@@valid_operators.join('|')})\s+(?<value>.+)/
|
101
|
+
groups = expression.match(variable_pattern)
|
102
|
+
if groups == nil
|
103
|
+
raise "\n\nIn the info.yaml file\nI couldn't any of the variables in #{statement}\nMake sure the format is:\n when( --VARIABLE *space* OPERATOR *space* VALUE )\nvalid variables are: #{valid_variables}\nvalid operators are: #{valid_operators}"
|
104
|
+
end
|
105
|
+
value = groups['value'].strip
|
106
|
+
|
107
|
+
substitutions = ->(value) do
|
108
|
+
value.gsub!( /\\'/, "'" )
|
109
|
+
value.gsub!( /\\"/, '"' )
|
110
|
+
value.gsub!( /\\n/, "\n" )
|
111
|
+
value.gsub!( /\\t/, "\t" )
|
112
|
+
end
|
113
|
+
|
114
|
+
# if it has single quotes
|
115
|
+
if value =~ /'.+'/
|
116
|
+
value.sub!( /'(.+)'/, "\\1" )
|
117
|
+
substitutions[value]
|
118
|
+
# if double quotes
|
119
|
+
elsif value =~ /".+"/
|
120
|
+
value.sub!( /"(.+)"/, "\\1" )
|
121
|
+
substitutions[value]
|
122
|
+
else
|
123
|
+
raise "\n\nIn the info.yaml file\nthe value: #{value} in the statment:\n#{statement}\n\nwas invalid. It probably needs single or double quotes around it"
|
124
|
+
end
|
125
|
+
|
126
|
+
return {
|
127
|
+
variable: groups['variable'],
|
128
|
+
operator: groups['operator'],
|
129
|
+
value: value
|
130
|
+
}
|
131
|
+
end
|
132
|
+
|
133
|
+
def self.evaluate_when_condition(data)
|
134
|
+
case data[:variable]
|
135
|
+
when 'context'
|
136
|
+
raise "\n\ncontext functionality has not been implemented yet"
|
137
|
+
when 'os'
|
138
|
+
case data[:operator]
|
139
|
+
when 'is'
|
140
|
+
return OS.is?(data[:value])
|
141
|
+
else
|
142
|
+
raise "unknown operator: #{data[:operator]}"
|
143
|
+
end
|
144
|
+
else
|
145
|
+
raise "\n\nunknown variable: #{data[:variable]}"
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
# def self.parse_language_evaluations(value)
|
150
|
+
# if value.is_a?(Evaluation)
|
151
|
+
# return Info.parse_language_evaluations(value.run())
|
152
|
+
# elsif value.is_a?(Hash)
|
153
|
+
# new_hash = {}
|
154
|
+
# for each_key, each_value in value
|
155
|
+
# new_hash[each_key] = Info.parse_language_evaluations(each_value)
|
156
|
+
# end
|
157
|
+
# return new_hash
|
158
|
+
# elsif value.is_a?(Array)
|
159
|
+
# new_array = []
|
160
|
+
# for each in value
|
161
|
+
# new_array.push(Info.parse_language_evaluations(each))
|
162
|
+
# end
|
163
|
+
# return new_array
|
164
|
+
# else
|
165
|
+
# return value
|
166
|
+
# end
|
167
|
+
# end
|
168
|
+
|
169
|
+
def self.parse_advanced_setup(unchecked_hashmap, current_project_settings)
|
170
|
+
for each_key, each_value in unchecked_hashmap.clone()
|
171
|
+
case
|
172
|
+
# check for yaml-when statements
|
173
|
+
when each_key =~ /\Awhen\(.*\)\z/ && each_value.is_a?(Hash)
|
174
|
+
statement_data = Info.parse_when_statment(each_key)
|
175
|
+
# if the when condition was true
|
176
|
+
if Info.evaluate_when_condition(statement_data)
|
177
|
+
# recursively parse the tree
|
178
|
+
Info.parse_advanced_setup(each_value, current_project_settings)
|
179
|
+
end
|
180
|
+
# transfer all the normal keys to the current_project_settings
|
181
|
+
else
|
182
|
+
current_project_settings[each_key] = each_value
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
def self.load_if_needed
|
188
|
+
# if the data hasn't been loaded then load it first
|
189
|
+
if @@data == nil
|
190
|
+
Info.load_from_yaml
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
def self.load_from_yaml
|
195
|
+
# this function sets up:
|
196
|
+
# @@data
|
197
|
+
# @@project
|
198
|
+
# @@settings
|
199
|
+
# and also
|
200
|
+
# @@dependencies
|
201
|
+
# @@project_commands
|
202
|
+
# @@structures
|
203
|
+
# @@local_package_managers
|
204
|
+
# @@put_new_dependencies_under
|
205
|
+
# @@environment_variables
|
206
|
+
|
207
|
+
# get the local yaml file
|
208
|
+
# TODO: have this search the parent dir's to find it
|
209
|
+
@@data = YAML.load_file("./info.yaml")
|
210
|
+
@@project = @@data['(project)']
|
211
|
+
if @@project == nil
|
212
|
+
# TODO: maybe change this to be optional in the future and have default settings
|
213
|
+
raise "\n\nThere is no (project): key in the info.yaml\n(so ATK is unable to parse the project settings)"
|
214
|
+
end
|
215
|
+
# TODO: remove this
|
216
|
+
# @@project = Info.parse_language_evaluations(@@project)
|
217
|
+
|
218
|
+
@@settings = @@project['(advanced_setup)']
|
219
|
+
if @@settings == nil
|
220
|
+
# TODO: maybe change this to be optional in the future and have default settings
|
221
|
+
raise "\n\nThere is no (advanced_setup): key in the (project) of the info.yaml\n(so ATK is unable to parse the project settings)"
|
222
|
+
end
|
223
|
+
Info.parse_advanced_setup(@@settings, @@settings)
|
224
|
+
@@dependencies = @@settings['(dependencies)']
|
225
|
+
@@project_commands = @@settings['(project_commands)']
|
226
|
+
@@structures = @@settings['(structures)']
|
227
|
+
@@local_package_managers = @@settings['(local_package_managers)']
|
228
|
+
@@put_new_dependencies_under = @@settings['(put_new_dependencies_under)']
|
229
|
+
@@environment_variables = @@settings['(environment_variables)']
|
230
|
+
end
|
231
|
+
|
232
|
+
# accessors
|
233
|
+
def self.data() Info.load_if_needed; return @@data end
|
234
|
+
def self.project() Info.load_if_needed; return @@project end
|
235
|
+
def self.settings() Info.load_if_needed; return @@settings end
|
236
|
+
def self.dependencies() Info.load_if_needed; return @@dependencies end
|
237
|
+
def self.project_commands() Info.load_if_needed; return @@project_commands end
|
238
|
+
def self.structures() Info.load_if_needed; return @@structures end
|
239
|
+
def self.local_package_managers() Info.load_if_needed; return @@local_package_managers end
|
240
|
+
def self.put_new_dependencies_under() Info.load_if_needed; return @@put_new_dependencies_under end
|
241
|
+
def self.environment_variables() Info.load_if_needed; return @@environment_variables end
|
242
|
+
|
243
|
+
# read access to the yaml file
|
244
|
+
def self.[](element)
|
245
|
+
Info.load_if_needed
|
246
|
+
return @@data[element.to_s]
|
247
|
+
end
|
248
|
+
end
|
data/lib/atk_toolbox.rb
ADDED
data/test/info.yaml
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
# Example of Project settings
|
2
|
+
(using_atk_version): 1.0
|
3
|
+
(project):
|
4
|
+
name: The ATK Repo
|
5
|
+
description: Blah
|
6
|
+
homepage: www.blah.com
|
7
|
+
|
8
|
+
auto_generated_commands: &auto_generated_commands !evaluate/ruby |
|
9
|
+
commands = {}
|
10
|
+
# check for a scripts directory
|
11
|
+
script_file_paths = Dir["scripts/*"]
|
12
|
+
for each in script_file_paths
|
13
|
+
commands[File.basename(each, ".*")] = "./#{each}"
|
14
|
+
end
|
15
|
+
commands
|
16
|
+
|
17
|
+
basic_setup: &basic_setup_reference
|
18
|
+
(project_commands): &basic_commands
|
19
|
+
# auto-insert the !lang/console if they dont put one
|
20
|
+
run: !language/ruby
|
21
|
+
puts "hi"
|
22
|
+
stop: \`pkill node`
|
23
|
+
compile: gcc *.cpp
|
24
|
+
# TODO: add inline support for doing things like auto-generating commands
|
25
|
+
? !inline [ *auto_generated_commands ]
|
26
|
+
(environment_variables):
|
27
|
+
JAVA_VERSION: "8.9"
|
28
|
+
(structures):
|
29
|
+
npm-package: v1.0.0
|
30
|
+
vs-code-package: v1.0.0
|
31
|
+
git-repo: v1.0.0
|
32
|
+
(dependencies): &base_dependencies
|
33
|
+
python3: v3.7.0
|
34
|
+
node: v11.11.0
|
35
|
+
npm: v6.7.0
|
36
|
+
git: v2.21.0
|
37
|
+
|
38
|
+
(advanced_setup):
|
39
|
+
(local_package_managers): ['npm', 'pip'] # by default the local package managers are always here
|
40
|
+
(put_new_dependencies_under): [ '(project)', 'basic_info', '(dependencies)' ]
|
41
|
+
<<: *basic_setup_reference # this injects all the (basic_setup) here
|
42
|
+
# caveats for a specific OS
|
43
|
+
when(--os is 'mac'):
|
44
|
+
(dependencies):
|
45
|
+
<<: *base_dependencies
|
46
|
+
python2: v2.7
|
47
|
+
|
48
|
+
when(--os is 'windows'):
|
49
|
+
(project_commands):
|
50
|
+
<<: *basic_commands
|
51
|
+
show_files: dir # this is a custom command specific to windows
|
52
|
+
when(--os is 'linux'):
|
53
|
+
# caveats for a specific OS sub-version
|
54
|
+
when(--os is 'arch'):
|
55
|
+
(project_commands):
|
56
|
+
<<: *basic_commands # this injects all the (project_commands) here
|
57
|
+
my_ip_address: "ip" # this is a custom command specific to arch linux
|
58
|
+
|
59
|
+
# # caveats for a different context
|
60
|
+
# when(--context is 'testing'):
|
61
|
+
# (environment_variables):
|
62
|
+
# CMAKE_LIB: "testing"
|
63
|
+
# (project_commands):
|
64
|
+
# run: node tests.rb
|
65
|
+
|
66
|
+
# when(--os is 'windows'):
|
67
|
+
# (environment_variables):
|
68
|
+
# CMAKE_LIB: "C:\\testing"
|
data/test/main.rb
ADDED
metadata
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: atk_toolbox
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jeff Hykin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-06-06 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: ''
|
14
|
+
email: jeff.hykin@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/atk/cmd.rb
|
20
|
+
- lib/atk/download.rb
|
21
|
+
- lib/atk/os.rb
|
22
|
+
- lib/atk/output.rb
|
23
|
+
- lib/atk/package_managers.rb
|
24
|
+
- lib/atk/yaml_info_parser.rb
|
25
|
+
- lib/atk_toolbox.rb
|
26
|
+
- test/info.yaml
|
27
|
+
- test/main.rb
|
28
|
+
homepage: http://github.com//atk-toolbox
|
29
|
+
licenses:
|
30
|
+
- CC-BY-ND-4.0
|
31
|
+
metadata: {}
|
32
|
+
post_install_message:
|
33
|
+
rdoc_options: []
|
34
|
+
require_paths:
|
35
|
+
- lib
|
36
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
requirements: []
|
47
|
+
rubyforge_project:
|
48
|
+
rubygems_version: 2.7.3
|
49
|
+
signing_key:
|
50
|
+
specification_version: 4
|
51
|
+
summary: The Ruby gem for all the standard tools ATK uses internally
|
52
|
+
test_files: []
|