phlexite-cli 0.1.0 → 0.1.2
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/.build.yml +1 -0
- data/lib/phlexite/cli/cli.rb +31 -19
- data/lib/phlexite/cli/glob.rb +85 -0
- data/lib/phlexite/cli/version.rb +1 -1
- metadata +34 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5b99dc0fc598467cf53962828a0109b18accd8a1fabc7e273691a1a67fe439e9
|
|
4
|
+
data.tar.gz: 8d380f4330ee4374fe9313ef4596f75332eaf1cc2c33f97a2be7374af293242d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e0d1a158a0d33ce9d31383474968ddac640971059a57a3ddd0eebf396636314dc9d290866f876860440ed5a29d31c485a47d1c77ff1ea3a6b7e6e00e53d72be8
|
|
7
|
+
data.tar.gz: f4d1f3848a0177b50c0d3b1bc7bb37779158a2382347d4cffa58ed69719c8ac19b754553b860fef8b016d00fe1272e9edbdf0ba478148777683568f920f39d74
|
data/.build.yml
CHANGED
data/lib/phlexite/cli/cli.rb
CHANGED
|
@@ -1,26 +1,36 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "thor"
|
|
4
|
-
require "
|
|
4
|
+
require "listen"
|
|
5
|
+
require "whirly"
|
|
6
|
+
require "paint"
|
|
5
7
|
require_relative "version"
|
|
6
8
|
require_relative "server"
|
|
9
|
+
require_relative "glob"
|
|
10
|
+
|
|
11
|
+
Whirly.configure spinner: "dots"
|
|
7
12
|
|
|
8
13
|
module Phlexite
|
|
9
14
|
module Cli
|
|
10
15
|
class Cli < Thor
|
|
11
16
|
class Error < StandardError; end
|
|
12
17
|
|
|
18
|
+
def spin
|
|
19
|
+
Whirly.start status: "Building", stop: Paint["✓", :green] do
|
|
20
|
+
yield
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
13
24
|
desc "build", "Build your site"
|
|
14
25
|
option :script
|
|
15
26
|
def build
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
system(cmd)
|
|
27
|
+
spin do
|
|
28
|
+
file = options[:script] || "./build.rb"
|
|
29
|
+
cmd = "#{RbConfig.ruby} #{file}"
|
|
30
|
+
cmd = "bundle exec #{cmd}" if File.file? "Gemfile"
|
|
22
31
|
|
|
23
|
-
|
|
32
|
+
system(cmd)
|
|
33
|
+
end
|
|
24
34
|
end
|
|
25
35
|
|
|
26
36
|
desc "dev", "Run a development server to watch your files"
|
|
@@ -33,17 +43,19 @@ module Phlexite
|
|
|
33
43
|
build
|
|
34
44
|
|
|
35
45
|
port = options[:port] || 3000
|
|
36
|
-
puts "\e[1m
|
|
37
|
-
Server.start port, build_dir
|
|
38
|
-
|
|
39
|
-
puts "\e[1m
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
puts "\e[1m> Starting server on port #{port}\e[0m"
|
|
47
|
+
server = Server.start port, build_dir
|
|
48
|
+
|
|
49
|
+
puts "\e[1m> Starting watcher (excluding #{build_dir} and gitignored files)\e[0m"
|
|
50
|
+
|
|
51
|
+
excluded_paths = ([File.join(build_dir, "**", "*.*")] +
|
|
52
|
+
(File.read(".gitignore") || "").split("\n"))
|
|
53
|
+
.map { |p| Glob.new(p).to_regexp }
|
|
54
|
+
listener = Listen.to(".", ignore: excluded_paths) do |modified, added, removed|
|
|
55
|
+
build
|
|
56
|
+
end
|
|
57
|
+
listener.start
|
|
58
|
+
server.join
|
|
47
59
|
end
|
|
48
60
|
end
|
|
49
61
|
end
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# https://github.com/alexch/rerun/blob/master/lib/rerun/glob.rb
|
|
2
|
+
|
|
3
|
+
module Phlexite
|
|
4
|
+
module Cli
|
|
5
|
+
class Glob
|
|
6
|
+
NO_LEADING_DOT = '(?=[^\.])' # todo
|
|
7
|
+
START_OF_FILENAME = '(\A|\/)' # beginning of string or a slash
|
|
8
|
+
END_OF_STRING = '\z'
|
|
9
|
+
|
|
10
|
+
def initialize glob_string
|
|
11
|
+
@glob_string = glob_string
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def to_regexp_string
|
|
15
|
+
chars = @glob_string.chars
|
|
16
|
+
|
|
17
|
+
chars = smoosh(chars)
|
|
18
|
+
|
|
19
|
+
curlies = 0
|
|
20
|
+
escaping = false
|
|
21
|
+
string = chars.map do |char|
|
|
22
|
+
if escaping
|
|
23
|
+
escaping = false
|
|
24
|
+
char
|
|
25
|
+
else
|
|
26
|
+
case char
|
|
27
|
+
when "**"
|
|
28
|
+
"([^/]+/)*"
|
|
29
|
+
when "*"
|
|
30
|
+
".*"
|
|
31
|
+
when "?"
|
|
32
|
+
"."
|
|
33
|
+
when "."
|
|
34
|
+
"\\."
|
|
35
|
+
|
|
36
|
+
when "{"
|
|
37
|
+
curlies += 1
|
|
38
|
+
"("
|
|
39
|
+
when "}"
|
|
40
|
+
if curlies > 0
|
|
41
|
+
curlies -= 1
|
|
42
|
+
")"
|
|
43
|
+
else
|
|
44
|
+
char
|
|
45
|
+
end
|
|
46
|
+
when ","
|
|
47
|
+
if curlies > 0
|
|
48
|
+
"|"
|
|
49
|
+
else
|
|
50
|
+
char
|
|
51
|
+
end
|
|
52
|
+
when "\\"
|
|
53
|
+
escaping = true
|
|
54
|
+
"\\"
|
|
55
|
+
|
|
56
|
+
else
|
|
57
|
+
char
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end.join
|
|
62
|
+
START_OF_FILENAME + string + END_OF_STRING
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def to_regexp
|
|
66
|
+
Regexp.new(to_regexp_string)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def smoosh chars
|
|
70
|
+
out = []
|
|
71
|
+
until chars.empty?
|
|
72
|
+
char = chars.shift
|
|
73
|
+
if char == "*" && chars.first == "*"
|
|
74
|
+
chars.shift
|
|
75
|
+
chars.shift if chars.first == "/"
|
|
76
|
+
out.push("**")
|
|
77
|
+
else
|
|
78
|
+
out.push(char)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
out
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
data/lib/phlexite/cli/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: phlexite-cli
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Aleks Rutins
|
|
@@ -24,19 +24,19 @@ dependencies:
|
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
25
|
version: '1.4'
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
|
-
name:
|
|
27
|
+
name: listen
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
29
29
|
requirements:
|
|
30
30
|
- - "~>"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
32
|
+
version: '3.10'
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '
|
|
39
|
+
version: '3.10'
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
41
|
name: webrick
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -51,6 +51,34 @@ dependencies:
|
|
|
51
51
|
- - "~>"
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
53
|
version: '1.9'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: whirly
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - ">="
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '0'
|
|
61
|
+
type: :runtime
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - ">="
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '0'
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: paint
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '0'
|
|
75
|
+
type: :runtime
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - ">="
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '0'
|
|
54
82
|
email:
|
|
55
83
|
- keeper@farthergate.com
|
|
56
84
|
executables:
|
|
@@ -66,6 +94,7 @@ files:
|
|
|
66
94
|
- exe/phlexite
|
|
67
95
|
- lib/phlexite/cli.rb
|
|
68
96
|
- lib/phlexite/cli/cli.rb
|
|
97
|
+
- lib/phlexite/cli/glob.rb
|
|
69
98
|
- lib/phlexite/cli/server.rb
|
|
70
99
|
- lib/phlexite/cli/version.rb
|
|
71
100
|
- sig/phlexite/cli.rbs
|
|
@@ -91,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
91
120
|
- !ruby/object:Gem::Version
|
|
92
121
|
version: '0'
|
|
93
122
|
requirements: []
|
|
94
|
-
rubygems_version:
|
|
123
|
+
rubygems_version: 4.0.3
|
|
95
124
|
specification_version: 4
|
|
96
125
|
summary: A CLI for Phlexite
|
|
97
126
|
test_files: []
|