atk_toolbox 0.0.105 → 0.0.106
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 +4 -4
- data/lib/atk/atk_info.rb +4 -0
- data/lib/atk/commands/project.rb +166 -0
- data/lib/atk/yaml_info_parser.rb +2 -0
- data/lib/atk_toolbox/version.rb +1 -1
- data/lib/atk_toolbox.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92a0b43317388c1747b105aa93b15f70a20c829ad86d439120300c8604856284
|
4
|
+
data.tar.gz: 2ce1e06771e1b7cc4900269f5275ba87f32f7ca4d8afb93a236a64ba293ab36a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24a92ce26535d23bbe3b38cad85d7d2b72fcab80af72d33fd6c9d1bda2471ee4ae0e1e0f1531cebb6f1ab22ce89448aeb928125f4940b65f3218bdc1d72f885c
|
7
|
+
data.tar.gz: 672dcb0e0bd74af7dac51904f298fa85ceb67a7297135b3ea0d0d78c2b091904481655c83a8ccf96187c2500887c088a45c06bf090b85c1c31e2f94e17a093ef
|
data/lib/atk/atk_info.rb
CHANGED
@@ -0,0 +1,166 @@
|
|
1
|
+
require_relative '../atk_info'
|
2
|
+
|
3
|
+
module ATK
|
4
|
+
def self.project(args)
|
5
|
+
# TODO: check to make sure project exists
|
6
|
+
if args.length == 0
|
7
|
+
puts "if you don't know how to use #{"project".blue} just run #{"project help".blue}"
|
8
|
+
puts ""
|
9
|
+
# if there are commands then show them
|
10
|
+
begin
|
11
|
+
commands = Info.project_commands
|
12
|
+
if commands.is_a?(Hash) && commands.keys.size > 0
|
13
|
+
puts "commands for current project:"
|
14
|
+
puts `project commands`
|
15
|
+
end
|
16
|
+
rescue => exception
|
17
|
+
end
|
18
|
+
else
|
19
|
+
#
|
20
|
+
# Check dependencies
|
21
|
+
#
|
22
|
+
# if they're not met, then warn the user about that
|
23
|
+
# check a hash of the file to see if anything has changed
|
24
|
+
case args[0]
|
25
|
+
when 'help', '--help', '-h'
|
26
|
+
puts <<-HEREDOC.remove_indent
|
27
|
+
#{"help".yellow}
|
28
|
+
#{"info:".green} displays the avalible tools
|
29
|
+
#{"examples:".green} #{'project help'.blue}
|
30
|
+
|
31
|
+
#{"initialize".yellow}
|
32
|
+
#{"examples:".green}
|
33
|
+
#{'project init'.blue}
|
34
|
+
#{'project initialize'.blue}
|
35
|
+
#{"info:".green}
|
36
|
+
This will create an info.yaml in your current directory
|
37
|
+
The info.yaml will contain all the standard project managment tools
|
38
|
+
In the future this command will be more interactive
|
39
|
+
|
40
|
+
#{"synchronize".yellow}
|
41
|
+
#{"examples:".green}
|
42
|
+
#{'project sync'.blue}
|
43
|
+
#{'project synchronize'.blue}
|
44
|
+
#{'project synchronize --message=\'updated the readme\''.blue}
|
45
|
+
#{"info:".green}
|
46
|
+
Adds, commits, and then pulls/pushes all git changes
|
47
|
+
If there is merge conflict, it will show up as normal
|
48
|
+
#{"format:".green}
|
49
|
+
#{"project".blue} #{"synchronize".yellow} #{"<package>".cyan} #{"--message='your message'".light_magenta}
|
50
|
+
|
51
|
+
#{"execute".yellow}
|
52
|
+
#{"examples:".green}
|
53
|
+
#{'project execute compile'.blue}
|
54
|
+
#{'project exec compile'.blue}
|
55
|
+
#{'project exec main'.blue}
|
56
|
+
#{'project exec server'.blue}
|
57
|
+
#{"info:".green}
|
58
|
+
This will look at the info.yaml file in your project to find commands
|
59
|
+
You can use the `project init` command to generate an info.yaml which
|
60
|
+
has example commands. Commands can be CMD/terminal/console commands, or ruby code.
|
61
|
+
#{"format:".green}
|
62
|
+
#{"project".blue} #{"execute".yellow} #{"<name-of-command>".cyan} #{"<arg1-for-command>".light_magenta} #{"<arg2-for-command>".light_magenta} #{"<...etc>".light_magenta}
|
63
|
+
|
64
|
+
#{"commands".yellow}
|
65
|
+
#{"examples:".green} #{'project commands'.blue}
|
66
|
+
#{"info:".green}
|
67
|
+
This will read the local info.yaml of your project to find commands
|
68
|
+
then it will list out each command with a short preview of the contents of that command
|
69
|
+
HEREDOC
|
70
|
+
when 'initialize', 'init'
|
71
|
+
Info.init
|
72
|
+
when 'synchronize', 'sync'
|
73
|
+
# if there is an argument
|
74
|
+
git_folder_path = FS.dirname(Info.source_path)/".git"
|
75
|
+
if not FS.is_folder(git_folder_path)
|
76
|
+
raise <<-HEREDOC.remove_indent
|
77
|
+
|
78
|
+
|
79
|
+
The `project sync` command was called inside of #{FS.dirname(Info.source_path)}
|
80
|
+
However, there doesn't seem to be a git repository in this folder
|
81
|
+
(and changes can't be saved/synced without a git repository)
|
82
|
+
HEREDOC
|
83
|
+
end
|
84
|
+
message = args[1]
|
85
|
+
if message == nil
|
86
|
+
message = ""
|
87
|
+
else
|
88
|
+
if not message.start_with?('--message=')
|
89
|
+
raise "\n\nWhen giving arguments to the sync command, please give your message as:\n\n project sync --message='whatever you wanted to say'"
|
90
|
+
else
|
91
|
+
# remove the begining of the message
|
92
|
+
message = args[1].sub(/^--message=/,"")
|
93
|
+
# remove leading/trailing whitespace
|
94
|
+
message.strip!
|
95
|
+
end
|
96
|
+
end
|
97
|
+
if message.size == 0
|
98
|
+
message = '-'
|
99
|
+
end
|
100
|
+
|
101
|
+
# add everything
|
102
|
+
system('git add -A')
|
103
|
+
# commit everything
|
104
|
+
system('git', 'commit', '-m', message)
|
105
|
+
# pull down everything
|
106
|
+
system('git pull --no-edit')
|
107
|
+
# push up everything
|
108
|
+
system('git push')
|
109
|
+
|
110
|
+
when 'mix'
|
111
|
+
not_yet_implemented()
|
112
|
+
structure_name = args[1]
|
113
|
+
# use this to mix a structure into the project
|
114
|
+
# TODO:
|
115
|
+
# get the context
|
116
|
+
# if there is a --context='something' command line option, then use that
|
117
|
+
# otherwise use the default(--context) speficied in the info.yaml
|
118
|
+
# re-iterate through the info.yaml (advanced_setup) keys
|
119
|
+
# find all of the "when(--context = 'something')" keys
|
120
|
+
# find the (dependencies) sub-key for them, create one if the key doesn't exist
|
121
|
+
# add the project and version to the
|
122
|
+
when 'add'
|
123
|
+
not_yet_implemented()
|
124
|
+
package = args[1]
|
125
|
+
# check if there is an info.yaml
|
126
|
+
# check if there is an local_package_manager in the info.yaml
|
127
|
+
# if there is only 1, then use it
|
128
|
+
# if there is more than one, ask which one the user wants to use
|
129
|
+
when 'remove'
|
130
|
+
not_yet_implemented()
|
131
|
+
package = args[1]
|
132
|
+
# check if there is an local_package_manager in the info.yaml
|
133
|
+
# if it does use it to remove the package
|
134
|
+
when 'execute', 'exec'
|
135
|
+
# extract the (project_commands) section from the info.yaml,
|
136
|
+
# then find the command with the same name as args[1] and run it
|
137
|
+
# TODO: use https://github.com/piotrmurach/tty-markdown#ttymarkdown- to highlight the ruby code
|
138
|
+
_, command_name, *command_args = args
|
139
|
+
command = Info.project_commands[command_name]
|
140
|
+
# temporairly set the dir to be the same as the info.yaml
|
141
|
+
FS.in_dir(Info.folder()) do
|
142
|
+
if command.is_a?(String)
|
143
|
+
-(command+' '+command_args.join(' '))
|
144
|
+
elsif command.is_a?(Code)
|
145
|
+
command.run(*command_args)
|
146
|
+
elsif command == nil
|
147
|
+
puts "I don't think that command is in the info.yaml file"
|
148
|
+
end
|
149
|
+
end
|
150
|
+
when 'commands'
|
151
|
+
max_number_of_chars_to_show = 80
|
152
|
+
commands = Info.project_commands
|
153
|
+
if commands.keys.size == 0
|
154
|
+
puts "0 avalible commands".cyan
|
155
|
+
else
|
156
|
+
for each_key, each_value in commands
|
157
|
+
puts " #{each_key.to_s.yellow}: #{each_value.to_s.strip[0..max_number_of_chars_to_show].sub(/(.*)[\s\S]*/,'\1')}"
|
158
|
+
end
|
159
|
+
end
|
160
|
+
else
|
161
|
+
puts "I don't recognized that command\nhere's the `project --help` which might get you what you're looking for:"
|
162
|
+
ATK.project(["help"])
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
data/lib/atk/yaml_info_parser.rb
CHANGED
@@ -6,6 +6,8 @@ require_relative './extra_yaml'
|
|
6
6
|
require 'fileutils'
|
7
7
|
require_relative './remove_indent.rb'
|
8
8
|
|
9
|
+
# TODO: for efficiency, have the parser generate a parsed object, instead of only handling everything dynamically (allow for both)
|
10
|
+
|
9
11
|
#
|
10
12
|
# Create loaders for ruby code literal and console code literal
|
11
13
|
#
|
data/lib/atk_toolbox/version.rb
CHANGED
data/lib/atk_toolbox.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: atk_toolbox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.106
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Hykin
|
@@ -97,6 +97,7 @@ extensions: []
|
|
97
97
|
extra_rdoc_files: []
|
98
98
|
files:
|
99
99
|
- lib/atk/atk_info.rb
|
100
|
+
- lib/atk/commands/project.rb
|
100
101
|
- lib/atk/console.rb
|
101
102
|
- lib/atk/default_info.yaml
|
102
103
|
- lib/atk/extra_yaml.rb
|