runecms 0.0.17 → 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: ef24d51477b964773f8fc6c40f938132d08c95bbaa15d78eabdd6a598e3e89e8
4
- data.tar.gz: 87e5b57bce9f6eaefd5e3499188633f05a3d85f6963d5b5b44c00eef894eff1b
3
+ metadata.gz: 3c2da895c12dcc57b8c0067a4057c114a58692cac2d060b3c7db9cfd314f0590
4
+ data.tar.gz: 680b37e7c13955b437807781547063cf15d11febe6306f84a34c77daeafd432a
5
5
  SHA512:
6
- metadata.gz: c87ff4db3ccb7f14560b1da004bbc4452b1d663d5e716d05afbadb24437f762d909e34538e098322e8a065b68c41d19155d39a5b7e8f74acc86399af71ef859e
7
- data.tar.gz: 9d02b920e272d6a1082d4b79f916bd10471df2960cf0d304023b584a1a46b4def2a9fe1462d632c41d53873ed63bc90263069fa57189787394583277f9730b5a
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.17"
2
+ VERSION = "0.0.19"
3
3
  end
data/runecms.gemspec CHANGED
@@ -1,23 +1,9 @@
1
1
  require 'date'
2
- require 'find'
2
+ require_relative 'gemhelper'
3
3
 
4
4
  require_relative "lib/runecms"
5
5
 
6
6
  Gem::Specification.new do |s|
7
- def s.file_trees(*dirs)
8
- list = []
9
- dirs.each do |dir|
10
- stuff = Find.find(dir).to_a
11
- list += stuff
12
- end
13
- list
14
- end
15
-
16
- # ^ save this somewhere
17
- # Also: bump version, new gem, ...
18
- # Maybe base entire thing on livetext?? Meaning a
19
- # single .lt3 file to specify the entire project??
20
-
21
7
  system("rm -f *.gem")
22
8
  s.name = 'runecms'
23
9
  s.version = RuneCMS::VERSION
@@ -29,7 +15,7 @@ Gem::Specification.new do |s|
29
15
  s.executables << "rcms"
30
16
 
31
17
  # Files...
32
- main = s.file_trees("bin", "lib", "examples", "test")
18
+ main = GemHelper.file_trees("bin", "lib", "examples", "test")
33
19
  misc = %w[./README.lt3 ./README.md runecms.gemspec]
34
20
 
35
21
  s.files = main + misc
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.17
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-02 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