runecms 0.0.18 → 0.0.19

Sign up to get free protection for your applications and to get access to all the features.
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