phlexite-cli 0.1.0 → 0.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fef2e0e8f9b0a78d5084843ae4880dfbdca540848baa74c1db688d5e42249c71
4
- data.tar.gz: 0fabe535b18e62a44d296c3daf86538eacd08027d05817ed6cda426747e9a453
3
+ metadata.gz: 7291ac5e1c4dcddec9641e76be87de5ac09c6fdd3cc684738a860ea428d717ce
4
+ data.tar.gz: 1e68834f17a9ad646c740b1baa201883011ed1c2fbabfbf34da8471bdc9a0a29
5
5
  SHA512:
6
- metadata.gz: cf7447df9adf8193d97d5bb80bd1bdd4d0847b7e9e9061d3dbf94a3a72d128a518b823a9750b08b12b297319b31b349562ae0a3c45168fd6dfa49f12dadcbebf
7
- data.tar.gz: 4901c6588c9d1b4e7dabe81bdcdafd3cc09a8f30f51387b88adc9c3bd0f174c7bc7b8addfc548667dbfe223ad50ec4734f93423ce746c08c90f1a4368780cf72
6
+ metadata.gz: b9682d9841d40beb261a06d88f145fd4914951cdec3b4a8e1f89ae7f5941d140ac5860b1b2dbfc99c327d547e13d58703f7190c0a66bca99dab01be0fefa1182
7
+ data.tar.gz: 7b6f1ea957cc17231db62ecf84641b9b5247be796c485bb0a603b220508591d0f0474c1e5033743f18b02affe1dd39042fd2d86b805d306aaf699901544e1a8b
data/.build.yml CHANGED
@@ -3,6 +3,7 @@ image: alpine/edge
3
3
  packages:
4
4
  - ruby
5
5
  - ruby-dev
6
+ - musl-dev
6
7
  - yaml-dev
7
8
  - ruby-bundler
8
9
 
@@ -1,26 +1,38 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "thor"
4
- require "filewatcher"
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
+ no_commands do
19
+ def spin
20
+ Whirly.start status: "Building", stop: Paint["✓", :green] do
21
+ yield
22
+ end
23
+ end
24
+ end
25
+
13
26
  desc "build", "Build your site"
14
27
  option :script
15
28
  def build
16
- puts "\e[1m==> starting build\e[0m"
17
- file = options[:script] || "./build.rb"
18
- cmd = "#{RbConfig.ruby} #{file}"
19
- cmd = "bundle exec #{cmd}" if File.file? "Gemfile"
29
+ spin do
30
+ file = options[:script] || "./build.rb"
31
+ cmd = "#{RbConfig.ruby} #{file}"
32
+ cmd = "bundle exec #{cmd}" if File.file? "Gemfile"
20
33
 
21
- system(cmd)
22
-
23
- puts "\e[1m==> build finished\e[0m"
34
+ system(cmd)
35
+ end
24
36
  end
25
37
 
26
38
  desc "dev", "Run a development server to watch your files"
@@ -33,17 +45,19 @@ module Phlexite
33
45
  build
34
46
 
35
47
  port = options[:port] || 3000
36
- puts "\e[1m=> Starting server on port #{port}\e[0m"
37
- Server.start port, build_dir
38
-
39
- puts "\e[1m=> Starting watcher (excluding #{build_dir} and gitignored files)\e[0m"
40
- Filewatcher
41
- .new("**/*.*", exclude:
42
- [File.join(build_dir, "**", "*.*")] +
43
- (File.read(".gitignore") || "").split("\n"))
44
- .watch do
45
- build
46
- end
48
+ puts "\e[1m> Starting server on port #{port}\e[0m"
49
+ server = Server.start port, build_dir
50
+
51
+ puts "\e[1m> Starting watcher (excluding #{build_dir} and gitignored files)\e[0m"
52
+
53
+ excluded_paths = ([File.join(build_dir, "**", "*.*")] +
54
+ (File.read(".gitignore") || "").split("\n"))
55
+ .map { |p| Glob.new(p).to_regexp }
56
+ listener = Listen.to(".", ignore: excluded_paths) do |modified, added, removed|
57
+ build
58
+ end
59
+ listener.start
60
+ server.join
47
61
  end
48
62
  end
49
63
  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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Phlexite
4
4
  module Cli
5
- VERSION = "0.1.0"
5
+ VERSION = "0.1.3"
6
6
  end
7
7
  end
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.0
4
+ version: 0.1.3
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: filewatcher
27
+ name: listen
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '2.1'
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: '2.1'
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: 3.6.9
123
+ rubygems_version: 4.0.3
95
124
  specification_version: 4
96
125
  summary: A CLI for Phlexite
97
126
  test_files: []