example_file 0.2.0 → 0.4.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 +4 -4
- data/CHANGELOG.md +28 -1
- data/README.md +5 -4
- data/lib/example_file/version.rb +1 -1
- data/lib/example_file.rb +32 -15
- metadata +38 -20
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: dd44dec5c2bf7075656ebdd405b0960221dcba6dad77e376e23015bdabebd3b8
         | 
| 4 | 
            +
              data.tar.gz: 1c1e5659cea072d168309c0b0e30feaca6ada071f7e9517342a23851346f5ae7
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 2ad40a576dd715a6b4e30c239bc1ccde7872b0cbdd7deec4fe308073711188640af0d3fbab410db104e0fea2c97f5613208980ac3f2c92d309c41733e66196bb
         | 
| 7 | 
            +
              data.tar.gz: 376ff78bf8f127348e0dc68f22c83f5031cbec931b525d1ee8df2379303170241b1ec0c67ffff9d4ee216cd601f98d3bd971a57a60c5a928015adcf82614a839
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,9 +1,36 @@ | |
| 1 1 | 
             
            # Changelog
         | 
| 2 2 |  | 
| 3 | 
            -
            ##  | 
| 3 | 
            +
            ## Unreleased
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            ## 0.4.0 (2022-09-29)
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            *   Drop Ruby 2.5 support.
         | 
| 8 | 
            +
            *   Add Ruby 3.1 support.
         | 
| 9 | 
            +
            *   Add `#initialize_regular_file` method.
         | 
| 10 | 
            +
            *   Update development dependencies.
         | 
| 11 | 
            +
            *   Resolve new RuboCop offenses.
         | 
| 12 | 
            +
            *   Add `bundle-audit` CI task.
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            ## 0.3.1 (2021-04-16)
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            *   Fix Ruby warnings (and specs fails).
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            ## 0.3.0 (2021-04-16)
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            *   Remake the question from "Do you want to edit?" to "What to do?".
         | 
| 21 | 
            +
            *   Add `replace-and-edit` answer.
         | 
| 22 | 
            +
            *   Change menu layout from inline to rows with numbers.
         | 
| 23 | 
            +
                I have no idea how to make easier shortcut for `replace-and-edit`.
         | 
| 24 | 
            +
            *   Add Ruby 3 support and CI.
         | 
| 25 | 
            +
            *   Update development dependencies.
         | 
| 4 26 |  | 
| 5 27 | 
             
            ## 0.2.0 (2020-09-30)
         | 
| 6 28 |  | 
| 29 | 
            +
            *   Abort program on try to edit file without `$EDITOR` environment variable.
         | 
| 30 | 
            +
                Don't rely on external code, also abort only on try to edit.
         | 
| 31 | 
            +
            *   Update dependencies.
         | 
| 32 | 
            +
            *   Improve Cirrus CI config.
         | 
| 33 | 
            +
             | 
| 7 34 | 
             
            ## 0.1.0 (2020-06-02)
         | 
| 8 35 |  | 
| 9 36 | 
             
            *   Initial release.
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,11 +1,11 @@ | |
| 1 1 | 
             
            # Example File
         | 
| 2 2 |  | 
| 3 3 | 
             
            
         | 
| 4 | 
            -
            [](https://codecov.io/gh/AlexWayfer/example_file)
         | 
| 5 5 | 
             
            [](https://codeclimate.com/github/AlexWayfer/example_file)
         | 
| 6 6 | 
             
            
         | 
| 7 | 
            -
            [](https://github.com/AlexWayfer/example_file/blob/ | 
| 7 | 
            +
            [](https://inch-ci.org/github/AlexWayfer/example_file)
         | 
| 8 | 
            +
            [](https://github.com/AlexWayfer/example_file/blob/main/LICENSE.txt)
         | 
| 9 9 | 
             
            [](https://rubygems.org/gems/example_file)
         | 
| 10 10 |  | 
| 11 11 | 
             
            Class helper for example files. Usually it's the alternative
         | 
| @@ -61,7 +61,8 @@ It'll act in these ways: | |
| 61 61 | 
             
                    *   ask for a further action:
         | 
| 62 62 | 
             
                        *   open the editor;
         | 
| 63 63 | 
             
                        *   just update regular without changes;
         | 
| 64 | 
            -
                        *    | 
| 64 | 
            +
                        *   replace regular file with a content from new example file;
         | 
| 65 | 
            +
                        *   or replace and then open the editor.
         | 
| 65 66 | 
             
            *   If there is regular file with file modified time after example file:
         | 
| 66 67 | 
             
                *   do nothing.
         | 
| 67 68 |  | 
    
        data/lib/example_file/version.rb
    CHANGED
    
    
    
        data/lib/example_file.rb
    CHANGED
    
    | @@ -18,29 +18,41 @@ class ExampleFile | |
| 18 18 | 
             
            		end
         | 
| 19 19 | 
             
            	end
         | 
| 20 20 |  | 
| 21 | 
            +
            	attr_reader :choices
         | 
| 22 | 
            +
            	attr_writer :question_prefix
         | 
| 23 | 
            +
             | 
| 21 24 | 
             
            	def initialize(file_name)
         | 
| 22 25 | 
             
            		@file_name = file_name
         | 
| 23 26 | 
             
            		@regular_file_name = @file_name.sub SUFFIX, ''
         | 
| 24 27 |  | 
| 25 | 
            -
            		@basename =
         | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 28 | 
            +
            		@basename = Paint[File.basename(@file_name), :green, :bold]
         | 
| 29 | 
            +
            		@regular_basename = Paint[File.basename(@regular_file_name), :red, :bold]
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            		@choices = DEFAULT_CHOICES.dup
         | 
| 32 | 
            +
            		@question_prefix = nil
         | 
| 29 33 | 
             
            	end
         | 
| 30 34 |  | 
| 31 35 | 
             
            	def actualize_regular_file
         | 
| 32 36 | 
             
            		return create_regular_file unless regular_file_exist?
         | 
| 33 37 |  | 
| 34 | 
            -
            		return unless  | 
| 38 | 
            +
            		return unless updated?
         | 
| 35 39 |  | 
| 36 40 | 
             
            		return update_regular_file if diff.chomp.empty?
         | 
| 37 41 |  | 
| 38 42 | 
             
            		ask_question_and_make_actions
         | 
| 39 43 | 
             
            	end
         | 
| 40 44 |  | 
| 45 | 
            +
            	def initialize_regular_file
         | 
| 46 | 
            +
            		if File.exist? @regular_file_name
         | 
| 47 | 
            +
            			raise "File `#{File.basename(@regular_file_name)}` already exists"
         | 
| 48 | 
            +
            		end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            		FileUtils.cp @file_name, @regular_file_name
         | 
| 51 | 
            +
            	end
         | 
| 52 | 
            +
             | 
| 41 53 | 
             
            	private
         | 
| 42 54 |  | 
| 43 | 
            -
            	def  | 
| 55 | 
            +
            	def updated?
         | 
| 44 56 | 
             
            		File.mtime(@file_name) > File.mtime(@regular_file_name)
         | 
| 45 57 | 
             
            	end
         | 
| 46 58 |  | 
| @@ -49,7 +61,7 @@ class ExampleFile | |
| 49 61 | 
             
            	end
         | 
| 50 62 |  | 
| 51 63 | 
             
            	def create_regular_file
         | 
| 52 | 
            -
            		 | 
| 64 | 
            +
            		initialize_regular_file
         | 
| 53 65 | 
             
            		edit_file @regular_file_name
         | 
| 54 66 | 
             
            	end
         | 
| 55 67 |  | 
| @@ -63,26 +75,31 @@ class ExampleFile | |
| 63 75 | 
             
            			.to_s(:color)
         | 
| 64 76 | 
             
            	end
         | 
| 65 77 |  | 
| 66 | 
            -
            	 | 
| 67 | 
            -
            		 | 
| 78 | 
            +
            	DEFAULT_CHOICES = {
         | 
| 79 | 
            +
            		edit: proc { edit_file @regular_file_name },
         | 
| 68 80 | 
             
            		replace: proc { rewrite_regular_file },
         | 
| 69 | 
            -
            		 | 
| 81 | 
            +
            		'replace-and-edit': proc do
         | 
| 82 | 
            +
            			rewrite_regular_file
         | 
| 83 | 
            +
            			edit_file @regular_file_name
         | 
| 84 | 
            +
            		end,
         | 
| 85 | 
            +
            		keep: proc do
         | 
| 70 86 | 
             
            			update_regular_file
         | 
| 71 87 | 
             
            			puts 'File modified time updated'
         | 
| 72 88 | 
             
            		end
         | 
| 73 89 | 
             
            	}.freeze
         | 
| 74 90 |  | 
| 75 | 
            -
            	private_constant : | 
| 91 | 
            +
            	private_constant :DEFAULT_CHOICES
         | 
| 76 92 |  | 
| 77 93 | 
             
            	def ask_question_and_make_actions
         | 
| 78 94 | 
             
            		puts warning_with_diff
         | 
| 79 95 |  | 
| 80 96 | 
             
            		HIGHLINE.choose do |menu|
         | 
| 81 | 
            -
            			 | 
| 97 | 
            +
            			## I don't know how to catch complex options like `replace-and-edit`, via shortcut like `rae`
         | 
| 98 | 
            +
            			# menu.layout = :one_line
         | 
| 82 99 |  | 
| 83 | 
            -
            			menu. | 
| 100 | 
            +
            			menu.header = "What to do with #{@regular_basename} "
         | 
| 84 101 |  | 
| 85 | 
            -
            			 | 
| 102 | 
            +
            			choices.each do |answer, block|
         | 
| 86 103 | 
             
            				menu.choice(answer) { instance_exec(&block) }
         | 
| 87 104 | 
             
            			end
         | 
| 88 105 | 
             
            		end
         | 
| @@ -90,7 +107,7 @@ class ExampleFile | |
| 90 107 |  | 
| 91 108 | 
             
            	def warning_with_diff
         | 
| 92 109 | 
             
            		<<~WARN
         | 
| 93 | 
            -
            			#{@basename} was modified after #{@regular_basename}.
         | 
| 110 | 
            +
            			#{@question_prefix}#{@basename} was modified after #{@regular_basename}.
         | 
| 94 111 |  | 
| 95 112 | 
             
            			```diff
         | 
| 96 113 | 
             
            			#{diff}
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: example_file
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Alexander Popov
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2022-09-28 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: diffy
         | 
| @@ -81,47 +81,47 @@ dependencies: | |
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 82 | 
             
                    version: '2.0'
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            -
              name:  | 
| 84 | 
            +
              name: bundler-audit
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 86 | 
             
                requirements:
         | 
| 87 87 | 
             
                - - "~>"
         | 
| 88 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: 0. | 
| 89 | 
            +
                    version: 0.9.0
         | 
| 90 90 | 
             
              type: :development
         | 
| 91 91 | 
             
              prerelease: false
         | 
| 92 92 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 93 | 
             
                requirements:
         | 
| 94 94 | 
             
                - - "~>"
         | 
| 95 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: 0. | 
| 96 | 
            +
                    version: 0.9.0
         | 
| 97 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            -
              name:  | 
| 98 | 
            +
              name: gem_toys
         | 
| 99 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 100 | 
             
                requirements:
         | 
| 101 101 | 
             
                - - "~>"
         | 
| 102 102 | 
             
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            -
                    version: 0. | 
| 103 | 
            +
                    version: 0.12.1
         | 
| 104 104 | 
             
              type: :development
         | 
| 105 105 | 
             
              prerelease: false
         | 
| 106 106 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 107 | 
             
                requirements:
         | 
| 108 108 | 
             
                - - "~>"
         | 
| 109 109 | 
             
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            -
                    version: 0. | 
| 110 | 
            +
                    version: 0.12.1
         | 
| 111 111 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 112 | 
            -
              name:  | 
| 112 | 
            +
              name: toys
         | 
| 113 113 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 114 114 | 
             
                requirements:
         | 
| 115 115 | 
             
                - - "~>"
         | 
| 116 116 | 
             
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            -
                    version: 0. | 
| 117 | 
            +
                    version: 0.13.0
         | 
| 118 118 | 
             
              type: :development
         | 
| 119 119 | 
             
              prerelease: false
         | 
| 120 120 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 121 121 | 
             
                requirements:
         | 
| 122 122 | 
             
                - - "~>"
         | 
| 123 123 | 
             
                  - !ruby/object:Gem::Version
         | 
| 124 | 
            -
                    version: 0. | 
| 124 | 
            +
                    version: 0.13.0
         | 
| 125 125 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 126 126 | 
             
              name: rspec
         | 
| 127 127 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -142,28 +142,42 @@ dependencies: | |
| 142 142 | 
             
                requirements:
         | 
| 143 143 | 
             
                - - "~>"
         | 
| 144 144 | 
             
                  - !ruby/object:Gem::Version
         | 
| 145 | 
            -
                    version: 0. | 
| 145 | 
            +
                    version: 0.21.2
         | 
| 146 | 
            +
              type: :development
         | 
| 147 | 
            +
              prerelease: false
         | 
| 148 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 149 | 
            +
                requirements:
         | 
| 150 | 
            +
                - - "~>"
         | 
| 151 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 152 | 
            +
                    version: 0.21.2
         | 
| 153 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 154 | 
            +
              name: simplecov-cobertura
         | 
| 155 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 156 | 
            +
                requirements:
         | 
| 157 | 
            +
                - - "~>"
         | 
| 158 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 159 | 
            +
                    version: '2.1'
         | 
| 146 160 | 
             
              type: :development
         | 
| 147 161 | 
             
              prerelease: false
         | 
| 148 162 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 149 163 | 
             
                requirements:
         | 
| 150 164 | 
             
                - - "~>"
         | 
| 151 165 | 
             
                  - !ruby/object:Gem::Version
         | 
| 152 | 
            -
                    version:  | 
| 166 | 
            +
                    version: '2.1'
         | 
| 153 167 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 154 168 | 
             
              name: rubocop
         | 
| 155 169 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 156 170 | 
             
                requirements:
         | 
| 157 171 | 
             
                - - "~>"
         | 
| 158 172 | 
             
                  - !ruby/object:Gem::Version
         | 
| 159 | 
            -
                    version:  | 
| 173 | 
            +
                    version: 1.36.0
         | 
| 160 174 | 
             
              type: :development
         | 
| 161 175 | 
             
              prerelease: false
         | 
| 162 176 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 163 177 | 
             
                requirements:
         | 
| 164 178 | 
             
                - - "~>"
         | 
| 165 179 | 
             
                  - !ruby/object:Gem::Version
         | 
| 166 | 
            -
                    version:  | 
| 180 | 
            +
                    version: 1.36.0
         | 
| 167 181 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 168 182 | 
             
              name: rubocop-performance
         | 
| 169 183 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -184,14 +198,14 @@ dependencies: | |
| 184 198 | 
             
                requirements:
         | 
| 185 199 | 
             
                - - "~>"
         | 
| 186 200 | 
             
                  - !ruby/object:Gem::Version
         | 
| 187 | 
            -
                    version: ' | 
| 201 | 
            +
                    version: '2.0'
         | 
| 188 202 | 
             
              type: :development
         | 
| 189 203 | 
             
              prerelease: false
         | 
| 190 204 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 191 205 | 
             
                requirements:
         | 
| 192 206 | 
             
                - - "~>"
         | 
| 193 207 | 
             
                  - !ruby/object:Gem::Version
         | 
| 194 | 
            -
                    version: ' | 
| 208 | 
            +
                    version: '2.0'
         | 
| 195 209 | 
             
            description: |
         | 
| 196 210 | 
             
              Class helper for example files.
         | 
| 197 211 | 
             
              Usualy it's the alternative to environment variables (and `.env` files).
         | 
| @@ -214,7 +228,8 @@ licenses: | |
| 214 228 | 
             
            metadata:
         | 
| 215 229 | 
             
              source_code_uri: https://github.com/AlexWayfer/example_file
         | 
| 216 230 | 
             
              homepage_uri: https://github.com/AlexWayfer/example_file
         | 
| 217 | 
            -
              changelog_uri: https://github.com/AlexWayfer/example_file/blob/ | 
| 231 | 
            +
              changelog_uri: https://github.com/AlexWayfer/example_file/blob/main/CHANGELOG.md
         | 
| 232 | 
            +
              rubygems_mfa_required: 'true'
         | 
| 218 233 | 
             
            post_install_message:
         | 
| 219 234 | 
             
            rdoc_options: []
         | 
| 220 235 | 
             
            require_paths:
         | 
| @@ -223,14 +238,17 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 223 238 | 
             
              requirements:
         | 
| 224 239 | 
             
              - - ">="
         | 
| 225 240 | 
             
                - !ruby/object:Gem::Version
         | 
| 226 | 
            -
                  version: '2. | 
| 241 | 
            +
                  version: '2.6'
         | 
| 242 | 
            +
              - - "<"
         | 
| 243 | 
            +
                - !ruby/object:Gem::Version
         | 
| 244 | 
            +
                  version: '4'
         | 
| 227 245 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 228 246 | 
             
              requirements:
         | 
| 229 247 | 
             
              - - ">="
         | 
| 230 248 | 
             
                - !ruby/object:Gem::Version
         | 
| 231 249 | 
             
                  version: '0'
         | 
| 232 250 | 
             
            requirements: []
         | 
| 233 | 
            -
            rubygems_version: 3. | 
| 251 | 
            +
            rubygems_version: 3.3.7
         | 
| 234 252 | 
             
            signing_key:
         | 
| 235 253 | 
             
            specification_version: 4
         | 
| 236 254 | 
             
            summary: Class helper for example files
         |