bootic_cli 0.9.2 → 0.9.4
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:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: a296e4252d391af00cccfff4af93d652c2daa29e4b8d65cd42202331bfc1b70d
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 2f485bdd0c668f84738a21d7872404180ebaf04f594d37b1e000bc5df1966f52
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 8d44a11d8d69d2bd619cd69b8f9e8cfcaf42eea3674f6281cc14c9d70f74c1660da618f4b07983a034ac2d23534e380d83f485946705c641032af12feaa4c835
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 6ad0e38e1b4274e68cc52c9d987f0b126af1d786707d2962d82b719bbc158ad4bb8bfba7efe3b1e63bf59ae05cd27e35753ccadea3c09deceeeceb0e735bb546
         
     | 
| 
         @@ -139,7 +139,7 @@ module BooticCli 
     | 
|
| 
       139 
139 
     | 
    
         
             
                      if options['force'].nil? && has_lockfile?
         
     | 
| 
       140 
140 
     | 
    
         
             
                        prompt.say("Looks like there's another process already watching this dir.")
         
     | 
| 
       141 
141 
     | 
    
         
             
                        prompt.say("If this is not the case, please run this command with --force (or -f)")
         
     | 
| 
       142 
     | 
    
         
            -
                         
     | 
| 
      
 142 
     | 
    
         
            +
                        exit
         
     | 
| 
       143 
143 
     | 
    
         
             
                      end
         
     | 
| 
       144 
144 
     | 
    
         | 
| 
       145 
145 
     | 
    
         
             
                      local_theme, remote_theme = theme_selector.select_theme_pair(default_subdomain, current_dir, options['public'])
         
     | 
| 
         @@ -220,7 +220,7 @@ module BooticCli 
     | 
|
| 
       220 
220 
     | 
    
         
             
                    within_theme do
         
     | 
| 
       221 
221 
     | 
    
         
             
                      unless File.directory?(dir) and contains_theme?(dir)
         
     | 
| 
       222 
222 
     | 
    
         
             
                        prompt.say("Path doesn't exist or doesn't contain theme: #{dir}")
         
     | 
| 
       223 
     | 
    
         
            -
                         
     | 
| 
      
 223 
     | 
    
         
            +
                        exit
         
     | 
| 
       224 
224 
     | 
    
         
             
                      end
         
     | 
| 
       225 
225 
     | 
    
         | 
| 
       226 
226 
     | 
    
         
             
                      dirname = File.dirname(dir)
         
     | 
| 
         @@ -254,14 +254,14 @@ module BooticCli 
     | 
|
| 
       254 
254 
     | 
    
         
             
                  def warn_about_public
         
     | 
| 
       255 
255 
     | 
    
         
             
                    unless prompt.yes_or_no?("You're pushing changes directly to your public theme. Are you sure?", true)
         
     | 
| 
       256 
256 
     | 
    
         
             
                      prompt.say("Ok, sure. You can skip the above warning prompt by passing a `--public` flag.")
         
     | 
| 
       257 
     | 
    
         
            -
                       
     | 
| 
      
 257 
     | 
    
         
            +
                      exit
         
     | 
| 
       258 
258 
     | 
    
         
             
                    end
         
     | 
| 
       259 
259 
     | 
    
         
             
                  end
         
     | 
| 
       260 
260 
     | 
    
         | 
| 
       261 
261 
     | 
    
         
             
                  def within_theme(&block)
         
     | 
| 
       262 
262 
     | 
    
         
             
                    unless is_within_theme?
         
     | 
| 
       263 
263 
     | 
    
         
             
                      prompt.say "This directory doesn't look like a Bootic theme! (#{current_expanded_dir})", :magenta
         
     | 
| 
       264 
     | 
    
         
            -
                       
     | 
| 
      
 264 
     | 
    
         
            +
                      exit
         
     | 
| 
       265 
265 
     | 
    
         
             
                    end
         
     | 
| 
       266 
266 
     | 
    
         | 
| 
       267 
267 
     | 
    
         
             
                    logged_in_action do
         
     | 
| 
         @@ -313,7 +313,7 @@ module BooticCli 
     | 
|
| 
       313 
313 
     | 
    
         
             
                        input = shell.ask("#{question} [#{default_char}]").strip
         
     | 
| 
       314 
314 
     | 
    
         
             
                      rescue Interrupt
         
     | 
| 
       315 
315 
     | 
    
         
             
                        say "\nCtrl-C received. Bailing out!", :magenta
         
     | 
| 
       316 
     | 
    
         
            -
                         
     | 
| 
      
 316 
     | 
    
         
            +
                        exit
         
     | 
| 
       317 
317 
     | 
    
         
             
                      end
         
     | 
| 
       318 
318 
     | 
    
         | 
| 
       319 
319 
     | 
    
         
             
                      return default_answer if input == '' || input.downcase == default_char
         
     | 
| 
         @@ -19,12 +19,12 @@ module BooticCli 
     | 
|
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
                    def ==(other)
         
     | 
| 
       21 
21 
     | 
    
         
             
                      if other.digest.to_s == '' # api theme asset without a digest set
         
     | 
| 
       22 
     | 
    
         
            -
                        # puts "Other has no digest, so comparing dates: #{self.updated_on} vs #{other.updated_on}"
         
     | 
| 
      
 22 
     | 
    
         
            +
                        # puts "Other has no digest, so comparing dates: #{self.updated_on.to_i} vs #{other.updated_on.to_i}"
         
     | 
| 
       23 
23 
     | 
    
         
             
                        return self.updated_on.to_i == other.updated_on.to_i
         
     | 
| 
       24 
24 
     | 
    
         
             
                      end
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
                      # file sizes may differ as they are served by CDN (that shrinks them)
         
     | 
| 
       27 
     | 
    
         
            -
                      # puts "Comparing  
     | 
| 
      
 27 
     | 
    
         
            +
                      # puts "Comparing FSTheme vs other digest:\n#{digest}\n#{other.digest}"
         
     | 
| 
       28 
28 
     | 
    
         
             
                      self.digest == other.digest # self.file_size == other.file_size
         
     | 
| 
       29 
29 
     | 
    
         
             
                    end
         
     | 
| 
       30 
30 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -33,22 +33,34 @@ module BooticCli 
     | 
|
| 
       33 
33 
     | 
    
         
             
                  TEMPLATE_PATTERNS = ['sections/*.html', '*.html', '*.css', '*.js', '*.json', 'theme.yml'].freeze
         
     | 
| 
       34 
34 
     | 
    
         
             
                  ASSET_PATTERNS = [File.join(ASSETS_DIR, '*')].freeze
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
      
 36 
     | 
    
         
            +
                  ASSET_PATH_REGEX = /^assets\/[^\/]+$/.freeze
         
     | 
| 
      
 37 
     | 
    
         
            +
                  TEMPLATE_PATH_REGEX = /^[^\/]+\.(html|css|scss|js|json|yml)$/.freeze
         
     | 
| 
      
 38 
     | 
    
         
            +
                  SECTION_PATH_REGEX = /^sections\/[^\/]+.html$/.freeze
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
       36 
40 
     | 
    
         
             
                  def self.resolve_path(path, dir)
         
     | 
| 
       37 
41 
     | 
    
         
             
                    File.expand_path(path).sub(File.expand_path(dir) + '/', '')
         
     | 
| 
       38 
42 
     | 
    
         
             
                  end
         
     | 
| 
       39 
43 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
                  # 
     | 
| 
      
 44 
     | 
    
         
            +
                  # helper to resolve the right type (Template or Asset) from a local path
         
     | 
| 
       41 
45 
     | 
    
         
             
                  # this is not part of the generic Theme interface
         
     | 
| 
       42 
     | 
    
         
            -
                  def self.resolve_type(path)
         
     | 
| 
       43 
     | 
    
         
            -
                     
     | 
| 
      
 46 
     | 
    
         
            +
                  def self.resolve_type(path, dir)
         
     | 
| 
      
 47 
     | 
    
         
            +
                    relative_path = resolve_path(path, dir)
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                    if relative_path[ASSET_PATH_REGEX]
         
     | 
| 
      
 50 
     | 
    
         
            +
                      :asset
         
     | 
| 
      
 51 
     | 
    
         
            +
                    elsif relative_path[TEMPLATE_PATH_REGEX] || relative_path[SECTION_PATH_REGEX]
         
     | 
| 
      
 52 
     | 
    
         
            +
                      :template
         
     | 
| 
      
 53 
     | 
    
         
            +
                    end
         
     | 
| 
       44 
54 
     | 
    
         
             
                  end
         
     | 
| 
       45 
55 
     | 
    
         | 
| 
       46 
56 
     | 
    
         
             
                  def self.resolve_file(path, workdir)
         
     | 
| 
       47 
     | 
    
         
            -
                     
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
      
 57 
     | 
    
         
            +
                    unless type = resolve_type(path, workdir)
         
     | 
| 
      
 58 
     | 
    
         
            +
                      return # neither an asset or template
         
     | 
| 
      
 59 
     | 
    
         
            +
                    end
         
     | 
| 
       49 
60 
     | 
    
         | 
| 
       50 
61 
     | 
    
         
             
                    # initialize a new asset or template as it might be a new file
         
     | 
| 
       51 
     | 
    
         
            -
                     
     | 
| 
      
 62 
     | 
    
         
            +
                    file = File.new(path)
         
     | 
| 
      
 63 
     | 
    
         
            +
                    item = if type == :asset
         
     | 
| 
       52 
64 
     | 
    
         
             
                      file_name = File.basename(path)
         
     | 
| 
       53 
65 
     | 
    
         
             
                      ThemeAsset.new(file_name, file, file.mtime.utc)
         
     | 
| 
       54 
66 
     | 
    
         
             
                    else
         
     | 
| 
         @@ -326,6 +326,11 @@ module BooticCli 
     | 
|
| 
       326 
326 
     | 
    
         
             
                    return if File.basename(path)[0] == '.' # filter out .lock and .state
         
     | 
| 
       327 
327 
     | 
    
         | 
| 
       328 
328 
     | 
    
         
             
                    item, type = FSTheme.resolve_file(path, dir)
         
     | 
| 
      
 329 
     | 
    
         
            +
                    unless item
         
     | 
| 
      
 330 
     | 
    
         
            +
                      # puts "Not a template or asset: #{path}"
         
     | 
| 
      
 331 
     | 
    
         
            +
                      return
         
     | 
| 
      
 332 
     | 
    
         
            +
                    end
         
     | 
| 
      
 333 
     | 
    
         
            +
             
     | 
| 
       329 
334 
     | 
    
         
             
                    success = handle_file_errors(type, item) do
         
     | 
| 
       330 
335 
     | 
    
         
             
                      case type
         
     | 
| 
       331 
336 
     | 
    
         
             
                      when :template
         
     | 
| 
         @@ -338,7 +343,11 @@ module BooticCli 
     | 
|
| 
       338 
343 
     | 
    
         
             
                  end
         
     | 
| 
       339 
344 
     | 
    
         | 
| 
       340 
345 
     | 
    
         
             
                  def delete_file(theme, path, dir)
         
     | 
| 
       341 
     | 
    
         
            -
                    type = FSTheme.resolve_type(path)
         
     | 
| 
      
 346 
     | 
    
         
            +
                    unless type = FSTheme.resolve_type(path, dir)
         
     | 
| 
      
 347 
     | 
    
         
            +
                      # puts "Not a template or asset: #{path}"
         
     | 
| 
      
 348 
     | 
    
         
            +
                      return
         
     | 
| 
      
 349 
     | 
    
         
            +
                    end
         
     | 
| 
      
 350 
     | 
    
         
            +
             
     | 
| 
       342 
351 
     | 
    
         
             
                    success = case type
         
     | 
| 
       343 
352 
     | 
    
         
             
                    when :template
         
     | 
| 
       344 
353 
     | 
    
         
             
                      file_name = FSTheme.resolve_path(path, dir)
         
     | 
| 
         @@ -346,8 +355,6 @@ module BooticCli 
     | 
|
| 
       346 
355 
     | 
    
         
             
                    when :asset
         
     | 
| 
       347 
356 
     | 
    
         
             
                      file_name = File.basename(path)
         
     | 
| 
       348 
357 
     | 
    
         
             
                      theme.remove_asset(file_name)
         
     | 
| 
       349 
     | 
    
         
            -
                    else
         
     | 
| 
       350 
     | 
    
         
            -
                      raise "Invalid type: #{type}"
         
     | 
| 
       351 
358 
     | 
    
         
             
                    end
         
     | 
| 
       352 
359 
     | 
    
         
             
                    puts "Deleted remote #{type}: #{highlight(file_name)}" if success
         
     | 
| 
       353 
360 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -361,7 +368,7 @@ module BooticCli 
     | 
|
| 
       361 
368 
     | 
    
         | 
| 
       362 
369 
     | 
    
         
             
                      if fields.include?('$.updated_on') || fields.include?('updated_on')
         
     | 
| 
       363 
370 
     | 
    
         
             
                        prompt.say("#{file.file_name} timestamp #{e.errors.first.messages.first}", :red)
         
     | 
| 
       364 
     | 
    
         
            -
                         
     | 
| 
      
 371 
     | 
    
         
            +
                        exit
         
     | 
| 
       365 
372 
     | 
    
         
             
                      end
         
     | 
| 
       366 
373 
     | 
    
         | 
| 
       367 
374 
     | 
    
         
             
                      error_msg = if fields.include?('file_content_type') or fields.include?('content_type')
         
     | 
| 
         @@ -389,15 +396,15 @@ module BooticCli 
     | 
|
| 
       389 
396 
     | 
    
         | 
| 
       390 
397 
     | 
    
         
             
                    rescue APITheme::UnknownResponse => e # 502s, 503s, etc
         
     | 
| 
       391 
398 
     | 
    
         
             
                      prompt.say("Got an unknown response from server: #{e.message}. Please try again in a minute.", :red)
         
     | 
| 
       392 
     | 
    
         
            -
                       
     | 
| 
      
 399 
     | 
    
         
            +
                      exit
         
     | 
| 
       393 
400 
     | 
    
         | 
| 
       394 
     | 
    
         
            -
                    rescue Net::OpenTimeout, Net::ReadTimeout => e
         
     | 
| 
      
 401 
     | 
    
         
            +
                    rescue SocketError, Net::OpenTimeout, Net::ReadTimeout => e
         
     | 
| 
       395 
402 
     | 
    
         
             
                      prompt.say("I'm having trouble connecting to the server. Please try again in a minute.", :red)
         
     | 
| 
       396 
     | 
    
         
            -
                       
     | 
| 
      
 403 
     | 
    
         
            +
                      exit
         
     | 
| 
       397 
404 
     | 
    
         | 
| 
       398 
405 
     | 
    
         
             
                    rescue BooticClient::ServerError => e
         
     | 
| 
       399 
406 
     | 
    
         
             
                      prompt.say("Couldn't save #{file.file_name}. Please try again in a few minutes.", :red)
         
     | 
| 
       400 
     | 
    
         
            -
                       
     | 
| 
      
 407 
     | 
    
         
            +
                      exit
         
     | 
| 
       401 
408 
     | 
    
         
             
                    end
         
     | 
| 
       402 
409 
     | 
    
         
             
                  end
         
     | 
| 
       403 
410 
     | 
    
         
             
                end
         
     | 
    
        data/lib/bootic_cli/version.rb
    CHANGED
    
    
    
        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.9. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.9.4
         
     | 
| 
       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: 2023- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2023-05-05 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: thor
         
     |