bootic_cli 0.6.7 → 0.7.0

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
- SHA256:
3
- metadata.gz: 6d8b35e5dbac7b46fc56dc3e05386fd08234fdca802a1a677d5245f5eb54028e
4
- data.tar.gz: '05488c11d71bfe841474f0ff88e7c1ca018069e3e5b3d71d4dd0a7ac789fa970'
2
+ SHA1:
3
+ metadata.gz: 346b8d30dccaeeb709f98d6a1666150e7f0f07d5
4
+ data.tar.gz: 106a59cc10fde05fc9ac522c22b0d0e53aaa83a6
5
5
  SHA512:
6
- metadata.gz: 75c2cb138d038891fb8a4dae8d750d94192db93536c03b627265d18f706a61a49a76ef0500597de06b0910f23e3f97c245c042bad548be7e641b8a4069eab999
7
- data.tar.gz: 15daa18cbd6fa5ac2edc87bf57ee201b7e827b981ac5c8ff8d6043f67999c7511cdffe2a3a3dd7a852f6ec2cd535517a45437a8f9f732a70d09ae87d2537c98f
6
+ metadata.gz: f38c5c0ed18e56f998ffbebe171f775ca4275ccb5b630851df266391fabf16d6204bf316ab1162f0ccfc16da916d578a746c4261728e1acc9707dda689dc0341
7
+ data.tar.gz: 35aab050d28d1d51c4494743c372687665dbb9f5f2ce182670bb72d2a83992ef6366bd042457625040d23a35d8eae7db8d606a468ce6d33d8a00d6199a778fcd
data/GUIA.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Guía para usar la línea de comandos de Bootic (Bootic CLI)
2
2
 
3
- El CLI de Bootic es una herramienta para diseñadores y desarrolladores que
3
+ El [CLI de Bootic](https://github.com/bootic/bootic_cli) es una herramienta para diseñadores y desarrolladores que
4
4
  quieran realizan tareas con la API de Bootic en forma local, ya sea para ver
5
5
  o modificar datos, o bien para realizar cambios en la plantilla de la tienda.
6
6
 
@@ -161,8 +161,7 @@ module BooticCli
161
161
  require 'irb'
162
162
  require 'irb/completion'
163
163
  IRB.setup nil
164
- IRB.conf[:MAIN_CONTEXT] = IRB::Irb.new.context
165
- require 'irb/ext/multi-irb'
164
+
166
165
  require 'bootic_cli/console'
167
166
  context = Console.new(session)
168
167
  prompt = "/#{shop.subdomain} (#{root.user_name}|#{root.scopes}) $ "
@@ -174,14 +173,22 @@ module BooticCli
174
173
  :PROMPT_N => prompt,
175
174
  :RETURN => "=> %s\n"
176
175
  }
176
+
177
177
  IRB.conf[:PROMPT_MODE] = :CUSTOM
178
178
  IRB.conf[:AUTO_INDENT] = false
179
+ irb = IRB::Irb.new(IRB::WorkSpace.new(context))
180
+ IRB.conf[:MAIN_CONTEXT] = irb.context
181
+
182
+ trap('SIGINT') do
183
+ irb.signal_handle
184
+ end
179
185
 
180
186
  begin
181
- IRB.irb nil, context
182
- rescue ThreadError => e
183
- # puts "#{e.class} -> #{e.message}"
184
- exit(1)
187
+ catch(:IRB_EXIT) do
188
+ irb.eval_input
189
+ end
190
+ ensure
191
+ IRB.irb_at_exit
185
192
  end
186
193
  end
187
194
  end
@@ -133,8 +133,15 @@ module BooticCli
133
133
 
134
134
  desc 'watch', 'Watch local theme dir and update remote when any file changes'
135
135
  option :public, banner: '<true|false>', type: :boolean, aliases: '-p', desc: 'Pushes any changes to public theme, even if dev theme exists'
136
+ option :force, banner: '<true|false>', type: :boolean, aliases: '-f', desc: 'Force watch to run even if lockfile is found'
136
137
  def watch
137
138
  within_theme do
139
+ if options['force'].nil? && has_lockfile?
140
+ prompt.say("Looks like there's another process already watching this dir.")
141
+ prompt.say("If this is not the case, please run this command with --force (or -f)")
142
+ abort
143
+ end
144
+
138
145
  local_theme, remote_theme = theme_selector.select_theme_pair(default_subdomain, current_dir, options['public'])
139
146
  warn_about_public if remote_theme.public? and options['public'].nil?
140
147
 
@@ -146,6 +153,8 @@ module BooticCli
146
153
  end
147
154
  end
148
155
 
156
+ write_lockfile
157
+ at_exit { remove_lockfile }
149
158
  workflows.watch(current_dir, remote_theme)
150
159
  end
151
160
  end
@@ -228,6 +237,20 @@ module BooticCli
228
237
 
229
238
  private
230
239
 
240
+ DEFAULT_LOCKFILE = '.lock'.freeze
241
+
242
+ def has_lockfile?(dir = current_dir, filename = DEFAULT_LOCKFILE)
243
+ File.exist?(File.join(dir, filename))
244
+ end
245
+
246
+ def write_lockfile(dir = current_dir, filename = DEFAULT_LOCKFILE)
247
+ File.open(File.join(dir, filename), 'w') { |f| f.write($$) }
248
+ end
249
+
250
+ def remove_lockfile(dir = current_dir, filename = DEFAULT_LOCKFILE)
251
+ FileUtils.rm_f(File.join(dir, filename))
252
+ end
253
+
231
254
  def warn_about_public
232
255
  unless prompt.yes_or_no?("You're pushing changes directly to your public theme. Are you sure?", true)
233
256
  prompt.say("Ok, sure. You can skip the above warning prompt by passing a `--public` flag.")
@@ -216,8 +216,12 @@ module BooticCli
216
216
 
217
217
  # ctrl-c
218
218
  Signal.trap('INT') {
219
- listener.stop
220
- puts 'See you in another lifetime, brother.'
219
+ begin
220
+ listener.stop
221
+ rescue ThreadError => e # cant be called from trap context
222
+ # nil
223
+ end
224
+ puts "\nSee you in another lifetime, brother."
221
225
  exit
222
226
  }
223
227
 
@@ -318,6 +322,7 @@ module BooticCli
318
322
  end
319
323
 
320
324
  def upsert_file(theme, path)
325
+ return if File.basename(path)[0] == '.' # filter out .lock and .state
321
326
  item, type = FSTheme.resolve_file(path)
322
327
  handle_file_errors(type, item) do
323
328
  case type
@@ -1,3 +1,3 @@
1
1
  module BooticCli
2
- VERSION = '0.6.7'
2
+ VERSION = '0.7.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootic_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.7
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ismael Celis
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-10-17 00:00:00.000000000 Z
12
+ date: 2020-01-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
@@ -201,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
201
201
  version: '0'
202
202
  requirements: []
203
203
  rubyforge_project:
204
- rubygems_version: 2.7.3
204
+ rubygems_version: 2.6.13
205
205
  signing_key:
206
206
  specification_version: 4
207
207
  summary: Bootic command-line client.