restore_bundled_with 0.1.0 → 0.2.0

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
  SHA1:
3
- metadata.gz: 41b5d988c8c3575b8d890a093cc059a67269585f
4
- data.tar.gz: a88e716c17b3d8c30af065d95b399428b91dfbe7
3
+ metadata.gz: af8a858be7e0523b6a271185753b3d615e9a9189
4
+ data.tar.gz: 0de4d442d934795308181450bdd15b2f76dbe33c
5
5
  SHA512:
6
- metadata.gz: 2ff8e3a8bae902347bfb3fd6456e56adfdf353b7a1de245a5c027891a6518605baba8e932952fac67c028f0413b6a9dec6c1c59cb3cd84eadbd24fa38c09f61a
7
- data.tar.gz: 516c46004b15d944d2590d7f70b2117e5062d850371390f9deada594d2e39facafa19f4a7b5d60ae53619a822deb1058b43033596d7087576c3466af4be769a8
6
+ metadata.gz: 8c9d3785360cf8485a5536aa2f792aa1e81b8332ccf657f158d56fd7c4a13cc969b60aba5d6bae7035b90886b83bb2ff355ce36f7f3eebbaf2d73e34c3d2e8e3
7
+ data.tar.gz: 25b8d557fb2a1e51f3e35613a1167db1b1977060ad4e5ebca48adc662ded22524c70ce4bf2b8aa022956f6f4f1b2dde9715ee32fc72cd24ed980051969ab587a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ <a name"0.2.0"></a>
2
+ ## 0.2.0 (2015-06-21)
3
+
4
+
1
5
  <a name"0.1.0"></a>
2
6
  ## 0.1.0 (2015-06-20)
3
7
 
data/README.md CHANGED
@@ -102,10 +102,10 @@ There is no diff, because this restores `BUNDLED WITH` from git repository.
102
102
 
103
103
  ```text
104
104
  Commands:
105
- restore-bundled-with delete # Delete BUNDLED WITH
105
+ restore-bundled-with delete # Delete BUNDLED WITH section
106
106
  restore-bundled-with fetch # Fetch BUNDLED WITH section
107
107
  restore-bundled-with help [COMMAND] # Describe available commands or one specific command
108
- restore-bundled-with restore # Restore BUNDLED WITH on Gemfile.lock
108
+ restore-bundled-with restore # Restore BUNDLED WITH section in Gemfile.lock
109
109
  restore-bundled-with version # Show the RestoreBundledWith version
110
110
 
111
111
  Usage:
@@ -126,34 +126,7 @@ Options:
126
126
  [--debug], [--no-debug]
127
127
  [--verbose], [--no-verbose]
128
128
 
129
- Restore BUNDLED WITH on Gemfile.lock
130
-
131
- Usage:
132
- restore-bundled-with delete
133
-
134
- Options:
135
- [--data=DATA]
136
- [--file=FILE]
137
- [--debug], [--no-debug]
138
- [--verbose], [--no-verbose]
139
-
140
- Delete BUNDLED WITH
141
-
142
- Usage:
143
- restore-bundled-with fetch
144
-
145
- Options:
146
- [--lockfile=LOCKFILE]
147
- # Default: Gemfile.lock
148
- [--ref=REF]
149
- # Default: HEAD
150
- [--git-path=GIT_PATH]
151
- # Default: .
152
- [--git-options=key:value]
153
- [--debug], [--no-debug]
154
- [--verbose], [--no-verbose]
155
-
156
- Fetch BUNDLED WITH section
129
+ Restore BUNDLED WITH section in Gemfile.lock
157
130
  ```
158
131
 
159
132
  ## Installation
@@ -17,14 +17,14 @@ module RestoreBundledWith
17
17
  end
18
18
  end
19
19
 
20
- desc 'restore', 'Restore BUNDLED WITH on Gemfile.lock'
20
+ desc 'restore', 'Restore BUNDLED WITH section in Gemfile.lock'
21
21
  option :data
22
22
  option :file
23
- option :lockfile, type: :string, default: Fetch::LOCK_FILE
24
- option :ref, type: :string, default: Fetch::REF
25
- option :git_path, type: :string, default: Fetch::GIT_PATH
26
- option :git_options, type: :hash, default: Fetch::GIT_OPTIONS
27
- option :new_line, type: :string, default: Insert::NEW_LINE
23
+ option :lockfile, type: :string, default: Repository::LOCK_FILE
24
+ option :ref, type: :string, default: Repository::REF
25
+ option :git_path, type: :string, default: Repository::GIT_PATH
26
+ option :git_options, type: :hash, default: Repository::GIT_OPTIONS
27
+ option :new_line, type: :string, default: Repository::NEW_LINE
28
28
  option :debug, type: :boolean, default: false
29
29
  option :verbose, type: :boolean, default: false
30
30
  def restore
@@ -33,7 +33,7 @@ module RestoreBundledWith
33
33
  params = options.dup
34
34
  params[:file] = options[:lockfile] if !options[:data] && !options[:file]
35
35
  data = read_data(params)
36
- lockfile = Restore.new(
36
+ lock_file = Lock.restore(
37
37
  data,
38
38
  options[:lockfile],
39
39
  options[:ref],
@@ -41,15 +41,14 @@ module RestoreBundledWith
41
41
  options[:git_options],
42
42
  options[:new_line]
43
43
  )
44
- lockfile.restore
45
- lockfile.write
44
+ lock_file.write_to(options[:lockfile])
46
45
  rescue StandardError => e
47
46
  suggest_messages(options)
48
47
  raise e
49
48
  end
50
49
  default_command :restore
51
50
 
52
- desc 'delete', 'Delete BUNDLED WITH'
51
+ desc 'delete', 'Delete BUNDLED WITH section'
53
52
  option :data
54
53
  option :file
55
54
  option :debug, type: :boolean, default: false
@@ -58,28 +57,30 @@ module RestoreBundledWith
58
57
  setup_logger(options)
59
58
 
60
59
  data = read_data(options)
61
- puts Delete.new(data).delete
60
+ puts Lock.new(data).delete_bundled_with
62
61
  rescue StandardError => e
63
62
  suggest_messages(options)
64
63
  raise e
65
64
  end
66
65
 
67
66
  desc 'fetch', 'Fetch BUNDLED WITH section'
68
- option :lockfile, type: :string, default: Fetch::LOCK_FILE
69
- option :ref, type: :string, default: Fetch::REF
70
- option :git_path, type: :string, default: Fetch::GIT_PATH
71
- option :git_options, type: :hash, default: Fetch::GIT_OPTIONS
67
+ option :lockfile, type: :string, default: Repository::LOCK_FILE
68
+ option :ref, type: :string, default: Repository::REF
69
+ option :git_path, type: :string, default: Repository::GIT_PATH
70
+ option :git_options, type: :hash, default: Repository::GIT_OPTIONS
71
+ option :new_line, type: :string, default: Repository::NEW_LINE
72
72
  option :debug, type: :boolean, default: false
73
73
  option :verbose, type: :boolean, default: false
74
74
  def fetch
75
75
  setup_logger(options)
76
-
77
- puts Fetch
78
- .new(
79
- options[:lockfile],
80
- options[:ref],
81
- options[:git_path],
82
- options[:git_options])
76
+ lock_file = Repository
77
+ .new(options[:git_path], options[:git_options])
78
+ .fetch_file(
79
+ options[:lockfile],
80
+ options[:ref],
81
+ options[:new_line])
82
+ puts Lock
83
+ .new(lock_file)
83
84
  .pick
84
85
  rescue StandardError => e
85
86
  suggest_messages(options)
@@ -0,0 +1,62 @@
1
+ module RestoreBundledWith
2
+ class Lock
3
+ attr_reader :body
4
+
5
+ REGEX_BUNDLED_WITH = /^(?<pick>(?:\r\n|\r|\n)^BUNDLED WITH.*(?:\r\n|\r|\n).+(?:\r\n|\r|\n))/
6
+
7
+ def self.insert(text, section)
8
+ if section && !section.empty?
9
+ new(text + section)
10
+ else
11
+ new(text)
12
+ end
13
+ end
14
+
15
+ def self.restore(
16
+ data,
17
+ lockfile = Repository::LOCK_FILE,
18
+ ref = Repository::REF,
19
+ git_path = Repository::GIT_PATH,
20
+ git_options = Repository::GIT_OPTIONS,
21
+ new_line = Repository::NEW_LINE
22
+ )
23
+ trimmed = new(data).delete_bundled_with
24
+ lock_file_data = Repository
25
+ .new(git_path, git_options)
26
+ .fetch_file(lockfile, ref, new_line)
27
+ section = new(lock_file_data)
28
+ .pick
29
+ insert(trimmed.body, section)
30
+ end
31
+
32
+ def initialize(text)
33
+ @body = text
34
+ end
35
+
36
+ # "\n\nBUNDLED WITH\n 1.10.4\n" => "\n"
37
+ def delete_bundled_with
38
+ self.class.new(body.sub(REGEX_BUNDLED_WITH) { '' })
39
+ end
40
+
41
+ def pick
42
+ match = REGEX_BUNDLED_WITH.match(body)
43
+ if match
44
+ match[:pick]
45
+ else
46
+ ''
47
+ end
48
+ end
49
+
50
+ def to_s
51
+ body
52
+ end
53
+
54
+ def ==(other)
55
+ body == other.body
56
+ end
57
+
58
+ def write_to(path)
59
+ File.write(path, body)
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,24 @@
1
+ module RestoreBundledWith
2
+ class Repository
3
+ LOCK_FILE = 'Gemfile.lock'
4
+ REF = 'HEAD'
5
+ GIT_PATH = '.'
6
+ GIT_OPTIONS = {}
7
+ NEW_LINE = "\n"
8
+
9
+ def initialize(git_path = GIT_PATH, git_options = GIT_OPTIONS)
10
+ @git_path = git_path
11
+ @git_options = git_options
12
+ end
13
+
14
+ def git
15
+ @git ||= Git.open(@git_path, @git_options)
16
+ end
17
+
18
+ def fetch_file(file = LOCK_FILE, ref = REF, new_line = NEW_LINE)
19
+ # NOTE: git.cat_file trims last \n?
20
+ text = git.cat_file("#{ref}:#{file}")
21
+ text + new_line
22
+ end
23
+ end
24
+ end
@@ -1,3 +1,3 @@
1
1
  module RestoreBundledWith
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -2,10 +2,8 @@ require 'git'
2
2
  require 'logger'
3
3
 
4
4
  require 'restore_bundled_with/error'
5
- require 'restore_bundled_with/fetch'
6
- require 'restore_bundled_with/delete'
7
- require 'restore_bundled_with/insert'
8
- require 'restore_bundled_with/restore'
5
+ require 'restore_bundled_with/lock'
6
+ require 'restore_bundled_with/repository'
9
7
  require 'restore_bundled_with/version'
10
8
 
11
9
  module RestoreBundledWith
@@ -25,6 +25,8 @@ RestoreBundledWith solves these conflicts.
25
25
  .reject { |f| f.match(%r{^(test|spec|features)/}) }
26
26
  .reject do |f|
27
27
  [
28
+ '.rubocop.yml',
29
+ '.rubocop_todo.yml',
28
30
  '.travis.yml',
29
31
  'circle.yml',
30
32
  '.tachikoma.yml',
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restore_bundled_with
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sanemat
@@ -104,8 +104,6 @@ extensions: []
104
104
  extra_rdoc_files: []
105
105
  files:
106
106
  - ".gitignore"
107
- - ".rubocop.yml"
108
- - ".rubocop_todo.yml"
109
107
  - CHANGELOG.md
110
108
  - CODE_OF_CONDUCT.md
111
109
  - Gemfile
@@ -120,11 +118,9 @@ files:
120
118
  - exe/restore-bundled-with
121
119
  - lib/restore_bundled_with.rb
122
120
  - lib/restore_bundled_with/cli.rb
123
- - lib/restore_bundled_with/delete.rb
124
121
  - lib/restore_bundled_with/error.rb
125
- - lib/restore_bundled_with/fetch.rb
126
- - lib/restore_bundled_with/insert.rb
127
- - lib/restore_bundled_with/restore.rb
122
+ - lib/restore_bundled_with/lock.rb
123
+ - lib/restore_bundled_with/repository.rb
128
124
  - lib/restore_bundled_with/version.rb
129
125
  - restore_bundled_with.gemspec
130
126
  homepage: https://github.com/packsaddle/ruby-restore_bundled_with
data/.rubocop.yml DELETED
@@ -1,8 +0,0 @@
1
- inherit_from: .rubocop_todo.yml
2
-
3
- Style/Documentation:
4
- Enabled: false
5
- Style/FileName:
6
- Exclude:
7
- - bin/*
8
- - exe/*
data/.rubocop_todo.yml DELETED
@@ -1,15 +0,0 @@
1
- # This configuration was generated by `rubocop --auto-gen-config`
2
- # on 2015-06-20 02:51:10 +0900 using RuboCop version 0.32.0.
3
- # The point is for the user to remove these configuration records
4
- # one by one as the offenses are removed from the code base.
5
- # Note that changes in the inspected code, or installation of new
6
- # versions of RuboCop, may require this file to be generated again.
7
-
8
- Metrics/AbcSize:
9
- Exclude:
10
- - lib/restore_bundled_with/cli.rb
11
-
12
- # Configuration parameters: CountComments.
13
- Metrics/MethodLength:
14
- Exclude:
15
- - lib/restore_bundled_with/cli.rb
@@ -1,13 +0,0 @@
1
- module RestoreBundledWith
2
- class Delete
3
- REGEX_BUNDLED_WITH = /^\n^BUNDLED WITH.*\n.+\n/
4
- def initialize(text)
5
- @text = text
6
- end
7
-
8
- # "\n\nBUNDLED WITH\n 1.10.4\n" => "\n"
9
- def delete
10
- @text.sub(REGEX_BUNDLED_WITH) { '' }
11
- end
12
- end
13
- end
@@ -1,38 +0,0 @@
1
- module RestoreBundledWith
2
- class Fetch
3
- LOCK_FILE = 'Gemfile.lock'
4
- REF = 'HEAD'
5
- GIT_PATH = '.'
6
- GIT_OPTIONS = {}
7
- # REGEX_PICK = /^(?<pick>\n^BUNDLED WITH.*\n.+\n)/
8
- # git.cat_file trims last \n?
9
- REGEX_PICK = /^(?<pick>\n^BUNDLED WITH.*\n.+)/
10
- def initialize(
11
- file = LOCK_FILE,
12
- ref = REF,
13
- git_path = GIT_PATH,
14
- git_options = GIT_OPTIONS)
15
- @file = file
16
- @ref = ref
17
- @git_path = git_path
18
- @git_options = git_options
19
- end
20
-
21
- def pick
22
- match = REGEX_PICK.match(target_file_contents)
23
- if match
24
- match[:pick]
25
- else
26
- ''
27
- end
28
- end
29
-
30
- def target_file_contents
31
- git.cat_file("#{@ref}:#{@file}")
32
- end
33
-
34
- def git
35
- @git ||= ::Git.open(@git_path, @git_options)
36
- end
37
- end
38
- end
@@ -1,18 +0,0 @@
1
- module RestoreBundledWith
2
- class Insert
3
- NEW_LINE = "\n"
4
- def initialize(body, section, new_line = NEW_LINE)
5
- @body = body
6
- @section = section
7
- @new_line = new_line
8
- end
9
-
10
- def insert
11
- if @section && !@section.empty?
12
- @body + @section + @new_line
13
- else
14
- @body
15
- end
16
- end
17
- end
18
- end
@@ -1,39 +0,0 @@
1
- module RestoreBundledWith
2
- class Restore
3
- def initialize(
4
- data,
5
- lockfile = Fetch::LOCK_FILE,
6
- ref = Fetch::REF,
7
- git_path = Fetch::GIT_PATH,
8
- git_options = Fetch::GIT_OPTIONS,
9
- new_line = Insert::NEW_LINE
10
- )
11
- @data = data
12
- @lockfile = lockfile
13
- @ref = ref
14
- @git_path = git_path
15
- @git_options = git_options
16
- @new_line = new_line
17
- end
18
-
19
- def restore
20
- data = Delete.new(@data).delete
21
- section = Fetch
22
- .new(
23
- @lockfile,
24
- @ref,
25
- @git_path,
26
- @git_options)
27
- .pick
28
- @data = Insert.new(data, section, @new_line).insert
29
- end
30
-
31
- def write
32
- File.write(@lockfile, @data)
33
- end
34
-
35
- def to_s
36
- @data
37
- end
38
- end
39
- end