instructions_list 1.0.2.beta → 1.0.3.beta
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/.gitignore +1 -0
- data/.instructions/cache/install:redis.rb +8 -0
- data/.instructions/key +1 -0
- data/.ruby-version +1 -0
- data/exe/il +89 -44
- data/lib/instructions_list/version.rb +1 -1
- data/lib/instructions_list.rb +26 -15
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 01f435854efca5c2ef03dbdf2e55b340ee4a000c
|
4
|
+
data.tar.gz: 53c3a4202faedec87e6a7e40ae9f1c036c1edb71
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef66f23557dc6ff795a28fbbb63ec3468f7167b77e20ac986ddab7f9f245d7216f63606c8312f75f89cf0f2dcdcdcfca87f1c618afb7c2a677025d6ae062af42
|
7
|
+
data.tar.gz: 7e98d832553bd63cc803651ad38ff8fc7ee7736732184e8afcca40ea2adddfdf6f415e18c669e4197293e75ad24a05fc92bafcaba2ea8a879eecf82dcf9d5f62
|
data/.gitignore
CHANGED
data/.instructions/key
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ILSIKXHMNCF
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
system
|
data/exe/il
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
#!/usr/bin/env ruby
|
2
2
|
require "thor"
|
3
3
|
require 'pry'
|
4
4
|
require_relative "../lib/instructions_list/version"
|
@@ -27,63 +27,83 @@ module InstructionsList
|
|
27
27
|
end
|
28
28
|
desc "init KEY", "initialize a il directory with list key"
|
29
29
|
def init key
|
30
|
-
`
|
31
|
-
`
|
32
|
-
`touch ./.instructions/key`
|
33
|
-
`echo #{key} > ./.instructions/key`
|
30
|
+
`touch #{KEY_PATH}`
|
31
|
+
`echo #{key} > #{KEY_PATH}`
|
34
32
|
connect key
|
35
33
|
end
|
36
34
|
desc "reset", "reset state"
|
37
35
|
def reset name=:all
|
38
36
|
instructable do
|
39
|
-
`rm
|
40
|
-
`ex +g/#{name}/d -cwq
|
37
|
+
`rm #{STATE}` if name == :all
|
38
|
+
`ex +g/#{name}/d -cwq #{STATE}`
|
41
39
|
end
|
42
40
|
end
|
43
41
|
desc "sync", "synchronize the instructions"
|
44
42
|
option :reset
|
45
43
|
def sync
|
46
|
-
|
47
|
-
|
44
|
+
if instructable?
|
45
|
+
|
46
|
+
puts "is instructable!"
|
47
|
+
|
48
|
+
`mkdir -p #{PROJECT_CACHE}`
|
49
|
+
puts "created the project cache"
|
50
|
+
`mkdir -p #{PROJECT_CACHE_ARTIFACTS}`
|
51
|
+
puts "created the project cache artifacts"
|
52
|
+
|
48
53
|
if options[:reset]
|
49
|
-
`rm -rf #{
|
54
|
+
`rm -rf #{PROJECT_CACHE}` if Dir.exists? PROJECT_CACHE
|
50
55
|
return
|
51
56
|
end
|
52
57
|
|
53
58
|
instructable do
|
54
59
|
begin
|
55
|
-
|
60
|
+
CacheBuilder.new(get_key,HOST,cache=PROJECT_CACHE,artifact_cache=PROJECT_CACHE_ARTIFACTS).build
|
61
|
+
puts "built cache"
|
56
62
|
rescue SocketError
|
57
|
-
|
58
63
|
end
|
59
64
|
end
|
65
|
+
|
66
|
+
else
|
67
|
+
return sync_home_instructions
|
60
68
|
end
|
61
69
|
end
|
62
70
|
|
71
|
+
|
63
72
|
desc "instructions", "list all instructions"
|
64
73
|
def instructions
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
74
|
+
|
75
|
+
if home?
|
76
|
+
|
77
|
+
list_from "Instructions", HOME_CACHE << "/" do |path|
|
78
|
+
say show_command_for path
|
79
|
+
end
|
80
|
+
|
81
|
+
return
|
82
|
+
end
|
83
|
+
|
84
|
+
if instructable?
|
85
|
+
unless home?
|
86
|
+
|
87
|
+
list_from "Project", PROJECT_CACHE << "/" do |path|
|
88
|
+
say show_command_for path
|
89
|
+
end
|
90
|
+
puts ""
|
91
|
+
list_from "Home Directory", HOME_CACHE << "/" do |path|
|
92
|
+
say show_command_for path
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
else
|
97
|
+
Dir.chdir (ENV['HOME']) do
|
98
|
+
list_from "Instructions", HOME_CACHE << "/" do |path|
|
99
|
+
say show_command_for path
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
|
105
|
+
|
106
|
+
|
87
107
|
end
|
88
108
|
|
89
109
|
desc "info" , "display information"
|
@@ -96,7 +116,7 @@ module InstructionsList
|
|
96
116
|
def connect key
|
97
117
|
instructable do
|
98
118
|
disconnect
|
99
|
-
`echo #{key} >
|
119
|
+
`echo #{key} > #{KEY_PATH}`
|
100
120
|
`il sync`
|
101
121
|
end
|
102
122
|
|
@@ -106,7 +126,7 @@ module InstructionsList
|
|
106
126
|
def disconnect
|
107
127
|
instructable do
|
108
128
|
`il sync --reset`
|
109
|
-
`rm
|
129
|
+
`rm #{KEY_PATH}`
|
110
130
|
end
|
111
131
|
end
|
112
132
|
|
@@ -119,7 +139,7 @@ module InstructionsList
|
|
119
139
|
#load_from "Defaults","#{File.join(File.dirname(__FILE__), "../instructions/")}"
|
120
140
|
#load_from "User","#{ENV['HOME']}/instructions/"
|
121
141
|
#load_from "Project","./instructions/"
|
122
|
-
load_from "Instructions",
|
142
|
+
load_from "Instructions", HOME_CACHE << "/"
|
123
143
|
handle_instruction name,STACK,options[:force]
|
124
144
|
end
|
125
145
|
end
|
@@ -127,25 +147,50 @@ module InstructionsList
|
|
127
147
|
map list: :instructions
|
128
148
|
|
129
149
|
no_tasks do
|
150
|
+
def sync_home_instructions
|
151
|
+
`mkdir -p /tmp/il/cache`
|
152
|
+
Dir.chdir ENV['HOME'] do
|
153
|
+
|
154
|
+
if options[:reset]
|
155
|
+
`rm -rf #{HOME_CACHE}` if Dir.exists? HOME_CACHE
|
156
|
+
return
|
157
|
+
end
|
158
|
+
|
159
|
+
instructable do
|
160
|
+
begin
|
161
|
+
CacheBuilder.new(get_key).build
|
162
|
+
rescue SocketError
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
|
169
|
+
|
130
170
|
def get_key
|
131
|
-
|
171
|
+
return "Not connected!" unless File.exists? KEY_PATH
|
132
172
|
File.read(KEY_PATH).chomp
|
133
173
|
end
|
134
|
-
def instructable
|
135
|
-
|
136
|
-
return false unless home?
|
137
174
|
|
175
|
+
def instructable?
|
138
176
|
if Dir.exists? "./instructions"
|
139
177
|
if Dir.exists? "./.instructions"
|
140
178
|
if File.exists? "./.instructions/key"
|
141
|
-
|
142
|
-
return
|
179
|
+
return true
|
143
180
|
end
|
144
181
|
end
|
145
182
|
end
|
183
|
+
false
|
184
|
+
end
|
146
185
|
|
186
|
+
def instructable
|
187
|
+
if instructable?
|
188
|
+
yield
|
189
|
+
return
|
190
|
+
else
|
191
|
+
return false unless home?
|
192
|
+
end
|
147
193
|
say "Ooops! Not a instruction list directory"
|
148
|
-
|
149
194
|
end
|
150
195
|
|
151
196
|
def home?
|
data/lib/instructions_list.rb
CHANGED
@@ -7,8 +7,13 @@ module InstructionsList
|
|
7
7
|
INSTRUCTIONS=[]
|
8
8
|
STACK=[]
|
9
9
|
CHECKED=[]
|
10
|
-
|
11
|
-
|
10
|
+
|
11
|
+
HOME_CACHE = "/tmp/il/cache"
|
12
|
+
HOME_CACHE_ARTIFACTS="#{HOME_CACHE}/artifacts"
|
13
|
+
|
14
|
+
PROJECT_CACHE = "./.instructions/cache"
|
15
|
+
PROJECT_CACHE_ARTIFACTS="#{PROJECT_CACHE}/artifacts"
|
16
|
+
|
12
17
|
KEY_PATH="./.instructions/key"
|
13
18
|
HOST= ENV.fetch('INSTRUCTIONS_LIST_HOST',"instructionslist.com")
|
14
19
|
class It
|
@@ -17,8 +22,8 @@ module InstructionsList
|
|
17
22
|
end
|
18
23
|
class Is
|
19
24
|
def self.done? name
|
20
|
-
return false unless File.exists?
|
21
|
-
File.readlines(
|
25
|
+
return false unless File.exists? STATE
|
26
|
+
File.readlines(STATE).include? "#{name}\n"
|
22
27
|
end
|
23
28
|
def self.running? name
|
24
29
|
!`ps aux | grep #{name} | grep -v grep`.empty?
|
@@ -73,8 +78,8 @@ module InstructionsList
|
|
73
78
|
|
74
79
|
def done(name)
|
75
80
|
`mkdir -p './.instructions/'`
|
76
|
-
`touch
|
77
|
-
`echo #{name} >>
|
81
|
+
`touch #{STATE}`
|
82
|
+
`echo #{name} >> #{STATE}`
|
78
83
|
check name
|
79
84
|
end
|
80
85
|
|
@@ -86,47 +91,53 @@ module InstructionsList
|
|
86
91
|
|
87
92
|
|
88
93
|
class CacheItem
|
89
|
-
def initialize(file_name)
|
94
|
+
def initialize(file_name,cache=HOME_CACHE)
|
90
95
|
@file_name = file_name
|
96
|
+
@cache = cache
|
91
97
|
end
|
92
98
|
def write content
|
93
|
-
File.open("#{
|
99
|
+
File.open("#{@cache}/#{@file_name}", "w") do |file|
|
94
100
|
file.puts content
|
95
101
|
end
|
96
102
|
end
|
97
103
|
end
|
98
104
|
|
99
105
|
class CacheArtifactItem
|
100
|
-
def initialize(file_name)
|
106
|
+
def initialize(file_name,cache=HOME_CACHE_ARTIFACTS)
|
101
107
|
@file_name = file_name
|
108
|
+
@cache = cache
|
102
109
|
end
|
103
110
|
def write content,directory
|
104
|
-
`mkdir -p #{
|
105
|
-
File.open("#{
|
111
|
+
`mkdir -p #{@cache}/#{directory}`
|
112
|
+
File.open("#{@cache}/#{directory}/#{@file_name}", "w") do |file|
|
106
113
|
file.puts content
|
107
114
|
end
|
108
115
|
end
|
109
116
|
end
|
110
117
|
|
111
118
|
class CacheBuilder
|
112
|
-
def initialize(key,host=HOST)
|
119
|
+
def initialize(key,host=HOST,cache=HOME_CACHE,artifact_cache=HOME_CACHE_ARTIFACTS)
|
113
120
|
@key = key
|
114
121
|
@host = host
|
122
|
+
@cache = cache
|
123
|
+
@artifact_cache =artifact_cache
|
115
124
|
end
|
116
125
|
def build
|
117
126
|
begin
|
127
|
+
puts "http://#{@host}/lists/#{@key}.json"
|
128
|
+
|
118
129
|
content = JSON.parse open("http://#{@host}/lists/#{@key}.json").read
|
119
|
-
`mkdir -p #{
|
130
|
+
`mkdir -p #{@cache}`
|
120
131
|
content["instructions"].each do |instruction|
|
121
132
|
|
122
133
|
CacheItem
|
123
|
-
.new(instruction["file_name"])
|
134
|
+
.new(instruction["file_name"],@cache)
|
124
135
|
.write(instruction["file_contents"])
|
125
136
|
|
126
137
|
instruction["artifacts"].each do |artifact|
|
127
138
|
|
128
139
|
CacheArtifactItem
|
129
|
-
.new(artifact["file_name"])
|
140
|
+
.new(artifact["file_name"],cache=@artifact_cache)
|
130
141
|
.write(artifact["contents"],content["key"])
|
131
142
|
|
132
143
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: instructions_list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3.beta
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Coco Coder (aka Delaney Burke)
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -119,6 +119,9 @@ extra_rdoc_files: []
|
|
119
119
|
files:
|
120
120
|
- ".byebug_history"
|
121
121
|
- ".gitignore"
|
122
|
+
- ".instructions/cache/install:redis.rb"
|
123
|
+
- ".instructions/key"
|
124
|
+
- ".ruby-version"
|
122
125
|
- CODE_OF_CONDUCT.md
|
123
126
|
- Gemfile
|
124
127
|
- LICENSE.txt
|
@@ -155,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
158
|
version: 1.3.1
|
156
159
|
requirements: []
|
157
160
|
rubyforge_project:
|
158
|
-
rubygems_version: 2.
|
161
|
+
rubygems_version: 2.6.14
|
159
162
|
signing_key:
|
160
163
|
specification_version: 4
|
161
164
|
summary: Instruction List , an automated configuration management tool
|