runecms 0.0.18 → 0.0.19

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: dd0b1831820d58b58ba09e34add35923f6ba2fa67d5099f2b8ebf3ba420c3b80
4
- data.tar.gz: c9fc4e9c8b7e37b1e2bc567fcb299069849cefdd8c5ab374aec3cd2e086fb760
3
+ metadata.gz: 3c2da895c12dcc57b8c0067a4057c114a58692cac2d060b3c7db9cfd314f0590
4
+ data.tar.gz: 680b37e7c13955b437807781547063cf15d11febe6306f84a34c77daeafd432a
5
5
  SHA512:
6
- metadata.gz: 78b4c64c852f459b0218dcbc58e594e4cf002483456b392e801aee56a349f2162f92f243f72b56bfacd3fc0ccef03485b601e132419e6e705aa1b21af7d8788f
7
- data.tar.gz: fe09097bfa5aa0fc026095ccafd7b7ccf59db6a0035368f1587cb1bcb474ca54df543e93a4f53aace8ed131937eda4a2ee5c4e3d2f2608566d1aeb48b883ac48
6
+ metadata.gz: 9297774987910bf4b082a7f6d43b2b5bea78e904ab9391b4ef4466b520ee9e71d86ca4362e78ad47ede731ea14ed8894b14f3db72bf6c074021afa3d57d4ef0f
7
+ data.tar.gz: 1cfbbd802e8109597f193003250bdae995c66e23862f01775b0227a43f4e773a13724725120f95e17f8fa4b492e98f2a178d7c3536c1b983a28f1db64216f4c9
data/bin/r2 ADDED
@@ -0,0 +1,217 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH << "lib"
4
+
5
+ require 'runecms'
6
+ require_relative '../repl'
7
+
8
+ require 'rubytext'
9
+
10
+ class RcmsREPL < REPL
11
+ Intro = "RuneCMS v. #{RuneCMS::VERSION}"
12
+ Version = RuneCMS::VERSION
13
+
14
+ Commands["help"] = {}
15
+ Commands["h"] = {abbr: "h"}
16
+
17
+ Help = <<~EOS
18
+ {config } Initialize config.txt if necessary and edit with vi
19
+ {check } List stale files, but do nothing else
20
+ {generate} Find stale files under source/ and generate them under target/
21
+ {view } View the current state of target/ via browser (local files)
22
+ {publish } Publish target/ to the remote server
23
+ {update } Shortcut - Like a generate followed by a push
24
+ {browse } Browse the current state of the remote server
25
+
26
+ Run from a directory with a config.txt, a source/ dir, and a target/ dir.
27
+
28
+ Config file looks like:
29
+ {server: example.com}
30
+ {path: /some/arbitrary/path}
31
+ {user: myuser}
32
+ EOS
33
+
34
+ CONFIG = "config.txt"
35
+
36
+ def cmd_help
37
+ puts
38
+ Help.each_line do |line|
39
+ md = line.match(/(.*)\{(.*)\}(.*)/)
40
+ if md
41
+ md = md.to_a
42
+ print " " + md[1]
43
+ print fx(md[2], Blue, :bold)
44
+ puts md[3]
45
+ else
46
+ print " " + line
47
+ end
48
+ end
49
+ puts
50
+ end
51
+
52
+ def cmd_version
53
+ puts RuneCMS::VERSION
54
+ puts
55
+ end
56
+
57
+ def cmd_check
58
+ return unless check_current_site
59
+ stale = stale_files("source")
60
+ if stale.empty?
61
+ puts "\n No stale files\n "
62
+ else
63
+ puts "\n Stale files:"
64
+ stale.each {|x| puts fx(" " + x, Blue, :bold) }
65
+ puts
66
+ end
67
+ puts
68
+ end
69
+
70
+ def cmd_config
71
+ return unless check_current_site
72
+ unless read_config
73
+ File.open("config.txt", "w") do |f|
74
+ f.puts "server: "
75
+ f.puts "path: "
76
+ f.puts "user: "
77
+ end
78
+ end
79
+ system("vi config.txt")
80
+ puts
81
+ end
82
+
83
+ def cmd_generate
84
+ return unless check_current_site
85
+ verify_dirs # handle missing subdirectories
86
+ stale = stale_files("source")
87
+ if stale.empty?
88
+ puts "Nothing to do"
89
+ puts
90
+ return false
91
+ else
92
+ puts "Stale files:"
93
+ stale.each do |file|
94
+ puts " " + file
95
+ update_target(file)
96
+ end
97
+ puts
98
+ return true
99
+ end
100
+ end
101
+
102
+ def cmd_update
103
+ return unless check_current_site
104
+ needed = run_generate
105
+ run_publish if needed
106
+ puts
107
+ end
108
+
109
+ def cmd_view
110
+ return unless check_current_site
111
+ # FIXME index is hardcoded...
112
+ system("open target/index.html")
113
+ end
114
+
115
+ def cmd_publish
116
+ return unless check_current_site
117
+ cmd = "rsync -r -z target/ #@user@#@server:#@path/"
118
+ # puts "Running: #{cmd}"
119
+ system(cmd)
120
+ end
121
+
122
+ def cmd_browse
123
+ return unless check_current_site
124
+ system("open https://#@server")
125
+ end
126
+
127
+ def command?(cmd)
128
+ self.respond_to?("run_#{cmd}", true)
129
+ end
130
+
131
+ def execute(cmd)
132
+ send("run_#{cmd}")
133
+ end
134
+
135
+ instance_methods.each do |meth|
136
+ meth = meth.to_s
137
+ next unless meth =~ /^cmd_/
138
+ cmd = meth.sub(/cmd_/, "")
139
+ Patterns[cmd] = meth.to_sym
140
+ end
141
+
142
+ File.open("/tmp/foo", "w") {|f| f.puts Patterns.inspect }
143
+
144
+ def is_site?(dir)
145
+ Dir.exist?(dir + "/source") &&
146
+ Dir.exist?(dir + "/target") &&
147
+ File.exist?(dir + "/config.txt")
148
+ end
149
+
150
+ def sites_detected
151
+ Dir.chdir("/Users/Hal/Dropbox/topx/web")
152
+ list = Dir.entries(".")
153
+ list.select do |x|
154
+ File.directory?(x) && is_site?(x)
155
+ end
156
+ end
157
+
158
+ Commands["sites"] = {}
159
+ Commands["edit"] = {abbr: "e"}
160
+
161
+ def cmd_sites
162
+ num, name = ::STDSCR.menu(title: "Sites detected:", items: sites_detected)
163
+ Dir.chdir(name)
164
+ read_config
165
+ print "\n Switching to "
166
+ puts fx(name, Blue, :bold)
167
+ puts
168
+ end
169
+
170
+ def check_current_site
171
+ flag = is_site?(".")
172
+ if flag
173
+ read_config
174
+ return true
175
+ else
176
+ puts "\n No current site.\n "
177
+ return false
178
+ end
179
+ end
180
+
181
+ def cmd_edit
182
+ return unless check_current_site
183
+ Dir.chdir("source")
184
+ list = Dir.entries(".")
185
+ list.reject! {|fname| fname =~ /\.(ico|png|gif|jpg|mp4|mov|jpeg)$/i }
186
+ list.reject! {|fname| File.directory?(fname) }
187
+ num, name = ::STDSCR.menu(title: "Source files", items: list)
188
+ if name
189
+ system("vi #{name}")
190
+ else
191
+ puts "\n Canceled\n "
192
+ end
193
+ Dir.chdir("..")
194
+ end
195
+
196
+ def run
197
+ super
198
+ end
199
+
200
+ end
201
+
202
+ # "Main"
203
+
204
+
205
+ x = RcmsREPL.new
206
+ x.run
207
+
208
+ exit
209
+
210
+ usage_message if ARGV.empty?
211
+
212
+ cmd = ARGV.first
213
+
214
+ abort "Don't know #{cmd}" unless command?(cmd)
215
+
216
+ execute(cmd)
217
+
@@ -57,7 +57,7 @@ def run_view
57
57
  end
58
58
 
59
59
  def run_publish
60
- cmd = "rsync -r -z target/ #@user@#@server:#@path/"
60
+ cmd = "rsync -u -r -z target/ #@user@#@server:#@path/"
61
61
  # puts "Running: #{cmd}"
62
62
  system(cmd)
63
63
  end
@@ -1,3 +1,3 @@
1
1
  class RuneCMS
2
- VERSION = "0.0.18"
2
+ VERSION = "0.0.19"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runecms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.18
4
+ version: 0.0.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hal Fulton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-03 00:00:00.000000000 Z
11
+ date: 2023-02-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple static website manager based on Livetext (and Ruby)
14
14
  email: rubyhacker@gmail.com
@@ -19,6 +19,7 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - "./README.lt3"
21
21
  - "./README.md"
22
+ - bin/r2
22
23
  - bin/rcms
23
24
  - examples/ex1/config.txt
24
25
  - examples/ex1/source/file2.html