fastlane-plugin-csv_translation 0.3.0 → 1.1.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
  SHA256:
3
- metadata.gz: bad9b02f320e313b6aadeccc265b8d96e6753b2d3750ddf04601cbcd2ef8611f
4
- data.tar.gz: 94690626575fd7853302aad9cad12d813619429550d484c23c09e09e558a1834
3
+ metadata.gz: 429b0130e18889c08894e5db31651595c12cceefe2422186e09e454474b6935f
4
+ data.tar.gz: d7ba4a687ab5f2ec3988e910746b340ca938a0982387504ec91350819c269414
5
5
  SHA512:
6
- metadata.gz: 0af2a8d700c7ed36c93e8faadeb0071c69d7bf715d182cf721d1108d6709c6e9e2c53e59169e917166fd0e54c739feffd70ef1a1e4a7e086cdb35bf7fd6d1d80
7
- data.tar.gz: a51ff28ce777a9a8e881e4309be443723d850e560e432f345c2f0a33c06d753c390af0e360296cef2b0f1d52a8ea0a9c2b2cd8291f3b9a3fd02b9de0c10e6aa4
6
+ metadata.gz: 66a16815bcbf0954501a4afc14532950326d5b550e38b0a2f1ce563abc2b0ad5820fb47441733ab271ef61e14ac55adef9a71ed3871d6ab70e3f46c85460b4f2
7
+ data.tar.gz: abf48d7ae57f9fe2d3276a4e64724e20d6a9d3560193bafabf3af589f3f74834a673156b7540d3b2af52c654aa18f89858130ecfe33234dd9f55741a220ec1f8
data/README.md CHANGED
@@ -28,7 +28,7 @@ This plugin opens up an opportunity to automate reading from/writing of any `CSV
28
28
  <img width="1476" alt="Example CSV" src="https://user-images.githubusercontent.com/5364500/81500222-fe912780-92d0-11ea-87a7-952a78b5cdf7.png">
29
29
 
30
30
  ## Actions
31
- `fastlane-plugin-csv_translation` consists of 3 actions enabling you to manipulate `CSV` file from [`fastlane`](https://fastlane.tools).
31
+ `fastlane-plugin-csv_translation` consists of 4 actions enabling you to manipulate `CSV` file from [`fastlane`](https://fastlane.tools).
32
32
 
33
33
  ### 📡 get_csv_translation_requests
34
34
  Get all the translation info as hash from the CSV file, **print** the `translation_status` if translation_requests found.
@@ -55,7 +55,7 @@ get_csv_translation_requests(
55
55
  Add a new translation request entry inside the CSV file. It will append a new row in CSV file and then git commit the CSV file changes.
56
56
 
57
57
  ``` ruby
58
- example_csv_payload = {Ticket: "PRJ-3030", Timeline: "30 April"}
58
+ example_csv_payload = { "Ticket" => "PRJ-3030", "Timeline" => "30 April" }
59
59
 
60
60
  create_csv_translation_request(
61
61
  repository_name: "crazymanish/example-csv-repo", # Specify the CSV git file repo
@@ -64,6 +64,19 @@ create_csv_translation_request(
64
64
  )
65
65
  ```
66
66
 
67
+ ### 🔝rebase_csv_translation_request
68
+ Rebase a translation request entry inside the CSV file. It will append a new row top of target branch in CSV file and then git commit the CSV file changes. Very useful in case of resolving conflicts.
69
+
70
+ ``` ruby
71
+ rebase_csv_translation_request(
72
+ repository_name: "crazymanish/example-csv-repo", # Specify the CSV git file repo
73
+ branch_name: "master", #Specify the target branch (default: master)
74
+ feature_branch_name: "some_feature_branch", #Specify the feature branch name
75
+ file_path: "example.csv", # Specify the CSV file path under the git repo
76
+ identifier: "PRJ-3030" # Specify the CSV row identifier
77
+ )
78
+ ```
79
+
67
80
  ### ✂️ delete_csv_translation_request
68
81
  Delete a new translation request entry from the CSV file based on CSV row Identifier. It will delete the matched row from the CSV file and then git commit the CSV file changes.
69
82
 
@@ -0,0 +1,75 @@
1
+ require 'fastlane/action'
2
+ require_relative '../helper/csv_translation_helper'
3
+
4
+ module Fastlane
5
+ module Actions
6
+ module SharedValues
7
+ CREATE_CSV_FEATURE_BRANCH_INFO = :CREATE_CSV_FEATURE_BRANCH_INFO
8
+ end
9
+
10
+ class CreateCsvFeatureBranchAction < Action
11
+ def self.run(params)
12
+ # fetching csv file
13
+ csv_file_folder = Helper::CsvTranslationHelper.create_feature_branch(
14
+ repository_name: params[:repository_name],
15
+ branch_name: params[:branch_name],
16
+ feature_branch_name: params[:feature_branch_name]
17
+ )
18
+
19
+ Actions.lane_context[SharedValues::CREATE_CSV_FEATURE_BRANCH_INFO] = csv_file_folder
20
+ return csv_file_folder
21
+ end
22
+
23
+ def self.description
24
+ "Create a csv feature branch."
25
+ end
26
+
27
+ def self.output
28
+ [
29
+ ['CREATE_CSV_FEATURE_BRANCH_INFO', 'Created feature branch info']
30
+ ]
31
+ end
32
+
33
+ def self.available_options
34
+ [
35
+ FastlaneCore::ConfigItem.new(key: :repository_name,
36
+ env_name: "FL_CREATE_CSV_FEATURE_BRANCH_REPOSITORY_NAME",
37
+ description: "The name to your repository, e.g. 'fastlane/fastlane'",
38
+ verify_block: proc do |value|
39
+ UI.user_error!("No repository_name given in input param") unless (value and not value.empty?)
40
+ end),
41
+ FastlaneCore::ConfigItem.new(key: :branch_name,
42
+ env_name: "FL_CREATE_CSV_BASE_BRANCH_NAME",
43
+ description: "The branch name to your repository, (default main)",
44
+ is_string: true,
45
+ default_value: "main"),
46
+ FastlaneCore::ConfigItem.new(key: :feature_branch_name,
47
+ env_name: "FL_CREATE_CSV_FEATURE_BRANCH_NAME",
48
+ description: "The feature branch name for new translation request (Useful if no direct commit allowed in main)",
49
+ is_string: true,
50
+ optional: true)
51
+ ]
52
+ end
53
+
54
+ def self.authors
55
+ ["crazymanish"]
56
+ end
57
+
58
+ def self.example_code
59
+ [
60
+ 'create_csv_feature_branch(
61
+ repository_name: "fastlane/fastlane",
62
+ feature_branch_name: "some_feature_branch_name")',
63
+ 'create_csv_feature_branch(
64
+ repository_name: "fastlane/fastlane",
65
+ branch_name: "main",
66
+ feature_branch_name: "some_feature_branch_name")'
67
+ ]
68
+ end
69
+
70
+ def self.is_supported?(platform)
71
+ true
72
+ end
73
+ end
74
+ end
75
+ end
@@ -19,14 +19,18 @@ module Fastlane
19
19
  csv_file_path = "#{csv_file_folder}/#{params[:file_path]}"
20
20
  csv_payload = params[:payload]
21
21
 
22
+ # add missing newline if not present, at the end of the file
23
+ Helper::CsvTranslationHelper.append_missing_eof(csv_file_path)
24
+
22
25
  # adding new entry into csv file
23
26
  require 'csv'
24
- CSV.open(csv_file_path, 'a+', headers: csv_payload.keys) do |csv|
25
- csv << csv_payload.values
27
+ headers = CSV.open(csv_file_path, &:readline)
28
+ CSV.open(csv_file_path, 'a', headers: headers, force_quotes: true) do |csv|
29
+ csv << csv_payload
26
30
  end
27
31
 
28
32
  # creating csv translation request
29
- git_message = "New translation request: #{csv_payload}"
33
+ git_message = "New translation request:\n#{csv_payload}"
30
34
  git_commit_info = ""
31
35
  Dir.chdir(csv_file_folder) do
32
36
  GitCommitAction.run(path: ".", message: git_message)
@@ -64,12 +68,12 @@ module Fastlane
64
68
  end),
65
69
  FastlaneCore::ConfigItem.new(key: :branch_name,
66
70
  env_name: "FL_CREATE_CSV_TRANSLATION_REQUEST_BRANCH_NAME",
67
- description: "The branch name to your repository, (default master)",
71
+ description: "The branch name to your repository, (default main)",
68
72
  is_string: true,
69
- default_value: "master"),
73
+ default_value: "main"),
70
74
  FastlaneCore::ConfigItem.new(key: :feature_branch_name,
71
75
  env_name: "FL_CREATE_CSV_TRANSLATION_REQUEST_FEATURE_BRANCH_NAME",
72
- description: "The feature branch name for new translation request (Useful if no direct commit allowed in master)",
76
+ description: "The feature branch name for new translation request (Useful if no direct commit allowed in main)",
73
77
  is_string: true,
74
78
  optional: true),
75
79
  FastlaneCore::ConfigItem.new(key: :file_path,
@@ -92,12 +96,12 @@ module Fastlane
92
96
  'create_csv_translation_request(
93
97
  repository_name: "fastlane/fastlane",
94
98
  file_path: "translation/some_csv_name.csv",
95
- payload: {header_name: "some_value"})',
99
+ payload: {"header_name" => "some_value"})',
96
100
  'create_csv_translation_request(
97
101
  repository_name: "fastlane/fastlane",
98
- branch_name: "master",
102
+ branch_name: "main",
99
103
  file_path: "translation/some_csv_name.csv",
100
- payload: {header_name: "some_value"})'
104
+ payload: {"header_name" => "some_value"})'
101
105
  ]
102
106
  end
103
107
 
@@ -26,7 +26,7 @@ module Fastlane
26
26
  translation_requests = CSV.table(csv_file_path, headers: true)
27
27
  translation_requests.delete_if { |row| row.map { |value| value.to_s }.join("").include?(csv_row_identifier) }
28
28
 
29
- CSV.open(csv_file_path, "w", write_headers: true, headers: headers) do |csv|
29
+ CSV.open(csv_file_path, "w", write_headers: true, headers: headers, force_quotes: true) do |csv|
30
30
  translation_requests.each { |translation_request| csv << translation_request }
31
31
  end
32
32
 
@@ -40,14 +40,14 @@ module Fastlane
40
40
  # log message if translation request not found.
41
41
  if is_git_status_clean
42
42
  UI.important("Please check \"#{csv_row_identifier}\", not found the translation request. ⁉️")
43
- end
44
-
45
- git_message = "Deleted translation request: identifier: #{csv_row_identifier}"
46
- GitCommitAction.run(path: ".", message: git_message)
47
- PushToGitRemoteAction.run(remote: "origin")
48
- git_commit_info = Actions.last_git_commit_dict
43
+ else
44
+ git_message = "Deleted translation request: identifier: #{csv_row_identifier}"
45
+ GitCommitAction.run(path: ".", message: git_message)
46
+ PushToGitRemoteAction.run(remote: "origin")
47
+ git_commit_info = Actions.last_git_commit_dict
49
48
 
50
- UI.success("Successfully #{git_message} 🚀")
49
+ UI.success("Successfully #{git_message} 🚀")
50
+ end
51
51
  end
52
52
 
53
53
  # building deleted translation request info
@@ -79,12 +79,12 @@ module Fastlane
79
79
  end),
80
80
  FastlaneCore::ConfigItem.new(key: :branch_name,
81
81
  env_name: "FL_DELETE_CSV_TRANSLATION_REQUEST_BRANCH_NAME",
82
- description: "The branch name to your repository, (default master)",
82
+ description: "The branch name to your repository, (default main)",
83
83
  is_string: true,
84
- default_value: "master"),
84
+ default_value: "main"),
85
85
  FastlaneCore::ConfigItem.new(key: :feature_branch_name,
86
86
  env_name: "FL_DELETE_CSV_TRANSLATION_REQUEST_FEATURE_BRANCH_NAME",
87
- description: "The feature branch name for new translation request (Useful if no direct commit allowed in master)",
87
+ description: "The feature branch name for new translation request (Useful if no direct commit allowed in main)",
88
88
  is_string: true,
89
89
  optional: true),
90
90
  FastlaneCore::ConfigItem.new(key: :file_path,
@@ -110,7 +110,7 @@ module Fastlane
110
110
  identifier: "some_identifier_value")',
111
111
  'delete_csv_translation_request(
112
112
  repository_name: "fastlane/fastlane",
113
- branch_name: "master",
113
+ branch_name: "main",
114
114
  file_path: "translation/some_csv_name.csv",
115
115
  identifier: "some_identifier_value")'
116
116
  ]
@@ -0,0 +1,66 @@
1
+ require 'fastlane/action'
2
+ require_relative '../helper/csv_translation_helper'
3
+
4
+ module Fastlane
5
+ module Actions
6
+ module SharedValues
7
+ FETCH_CSV_BRANCH_INFO = :FETCH_CSV_BRANCH_INFO
8
+ end
9
+
10
+ class FetchCsvBranchAction < Action
11
+ def self.run(params)
12
+ # fetching csv file
13
+ csv_file_folder = Helper::CsvTranslationHelper.fetch_csv_file(
14
+ repository_name: repository_name,
15
+ branch_name: branch_name
16
+ )
17
+
18
+ Actions.lane_context[SharedValues::CREATE_CSV_FEATURE_BRANCH_INFO] = csv_file_folder
19
+ return csv_file_folder
20
+ end
21
+
22
+ def self.description
23
+ "Fetch a csv file branch."
24
+ end
25
+
26
+ def self.output
27
+ [
28
+ ['FETCH_CSV_BRANCH_INFO', 'Fetched CSV file branch info']
29
+ ]
30
+ end
31
+
32
+ def self.available_options
33
+ [
34
+ FastlaneCore::ConfigItem.new(key: :repository_name,
35
+ env_name: "FL_FETCH_CSV_REPOSITORY_NAME",
36
+ description: "The name to your repository, e.g. 'fastlane/fastlane'",
37
+ verify_block: proc do |value|
38
+ UI.user_error!("No repository_name given in input param") unless (value and not value.empty?)
39
+ end),
40
+ FastlaneCore::ConfigItem.new(key: :branch_name,
41
+ env_name: "FL_FETCH_CSV_BRANCH_NAME",
42
+ description: "The branch name to your repository, (default main)",
43
+ is_string: true,
44
+ default_value: "main")
45
+ ]
46
+ end
47
+
48
+ def self.authors
49
+ ["crazymanish"]
50
+ end
51
+
52
+ def self.example_code
53
+ [
54
+ 'fetch_csv_branch(repository_name: "fastlane/fastlane")',
55
+ 'fetch_csv_branch(
56
+ repository_name: "fastlane/fastlane",
57
+ branch_name: "some_feature_branch_name")'
58
+ ]
59
+ end
60
+
61
+ def self.is_supported?(platform)
62
+ true
63
+ end
64
+ end
65
+ end
66
+ end
@@ -66,9 +66,9 @@ module Fastlane
66
66
  end),
67
67
  FastlaneCore::ConfigItem.new(key: :branch_name,
68
68
  env_name: "FL_GET_CSV_TRANSLATION_REQUESTS_BRANCH_NAME",
69
- description: "The branch name to your repository, (default master)",
69
+ description: "The branch name to your repository, (default main)",
70
70
  is_string: true,
71
- default_value: "master"),
71
+ default_value: "main"),
72
72
  FastlaneCore::ConfigItem.new(key: :file_path,
73
73
  env_name: "FL_GET_CSV_TRANSLATION_REQUESTS_FILE_PATH",
74
74
  description: "The file path to your csv file",
@@ -104,7 +104,7 @@ module Fastlane
104
104
  file_path: "translation/some_csv_name.csv")',
105
105
  'get_csv_translation_requests(
106
106
  repository_name: "fastlane/fastlane",
107
- branch_name: "master",
107
+ branch_name: "main",
108
108
  file_path: "translation/some_csv_name.csv")'
109
109
  ]
110
110
  end
@@ -0,0 +1,156 @@
1
+ require 'fastlane/action'
2
+ require_relative '../helper/csv_translation_helper'
3
+
4
+ module Fastlane
5
+ module Actions
6
+ module SharedValues
7
+ REBASE_CSV_TRANSLATION_REQUEST_INFO = :REBASE_CSV_TRANSLATION_REQUEST_INFO
8
+ end
9
+
10
+ class RebaseCsvTranslationRequestAction < Action
11
+ def self.run(params)
12
+ # fetching csv file
13
+ csv_file_folder = Helper::CsvTranslationHelper.fetch_csv_file(
14
+ repository_name: params[:repository_name],
15
+ branch_name: params[:feature_branch_name]
16
+ )
17
+
18
+ csv_file_path = "#{csv_file_folder}/#{params[:file_path]}"
19
+ csv_row_identifier = params[:identifier]
20
+ csv_row_identifier_header = params[:identifier_header]
21
+
22
+ require 'csv'
23
+
24
+ # picking translation request-identifier entry from the feature_branch csv file
25
+ feature_branch_translation_requests = CSV.foreach(csv_file_path, headers: true).map { |row| row.to_h }
26
+ feature_branch_translation_requests = feature_branch_translation_requests.select do |translation_request|
27
+ translation_request[csv_row_identifier_header].eql?(csv_row_identifier)
28
+ end
29
+
30
+ # rebasing CSV file
31
+ git_commit_info = {}
32
+ Dir.chdir(csv_file_folder) do
33
+ # Step1: Checkout the target branch csv file
34
+ sh("git fetch --all")
35
+ sh("git checkout #{params[:branch_name]} -- #{params[:file_path]}")
36
+
37
+ # Validate: Do we really need to perfoem `rebase` ?
38
+ repo_status = Actions::sh("git status --porcelain")
39
+ repo_clean = repo_status.empty?
40
+
41
+ if repo_clean
42
+ UI.important("Rebase is not required, CSV file is up to date! 💪")
43
+ else
44
+ git_commit_info = self.perform_rebase(params, csv_file_path, feature_branch_translation_requests)
45
+ end
46
+ end
47
+
48
+ # building deleted translation request info
49
+ rebase_translation_request_info = {
50
+ identifier: csv_row_identifier,
51
+ git_commit_info: git_commit_info}
52
+
53
+ Actions.lane_context[SharedValues::REBASE_CSV_TRANSLATION_REQUEST_INFO] = rebase_translation_request_info
54
+ return rebase_translation_request_info
55
+ end
56
+
57
+ def self.perform_rebase(params, csv_file_path, feature_branch_translation_requests)
58
+ csv_row_identifier = params[:identifier]
59
+
60
+ # Step2: Commit csv file so rebase can be performed
61
+ git_message = "Rebase translation request: identifier:\n#{csv_row_identifier}"
62
+ GitCommitAction.run(path: ".", message: git_message)
63
+
64
+ # Step3: Perfoms rebasing, take all changes from target branch
65
+ sh("git rebase -X theirs " + params[:branch_name])
66
+
67
+ # Step4: Add missing newline if not present, at the end of the file
68
+ Helper::CsvTranslationHelper.append_missing_eof(csv_file_path)
69
+
70
+ # Step5: Append back feature branch translation_requests
71
+ all_translation_requests = CSV.table(csv_file_path, headers: true)
72
+
73
+ headers = CSV.open(csv_file_path, &:readline)
74
+ CSV.open(csv_file_path, "w", write_headers: true, headers: headers, force_quotes: true) do |csv|
75
+ all_translation_requests.each { |translation_request| csv << translation_request }
76
+ feature_branch_translation_requests.each { |translation_request| csv << translation_request }
77
+ end
78
+
79
+ # Step6: Commit and push to remote
80
+ GitCommitAction.run(path: ".", message: git_message)
81
+ PushToGitRemoteAction.run(remote: "origin", force: true)
82
+
83
+ UI.success("Successfully #{git_message} 🚀")
84
+ Actions.last_git_commit_dict
85
+ end
86
+
87
+ def self.description
88
+ "Rebase a translation request based on identifier value."
89
+ end
90
+
91
+ def self.output
92
+ [
93
+ ['REBASE_CSV_TRANSLATION_REQUEST_INFO', 'Rebased translation request info i.e identifier, git_commit info']
94
+ ]
95
+ end
96
+
97
+ def self.available_options
98
+ [
99
+ FastlaneCore::ConfigItem.new(key: :repository_name,
100
+ env_name: "FL_REBASE_CSV_TRANSLATION_REQUEST_REPOSITORY_NAME",
101
+ description: "The name to your repository, e.g. 'fastlane/fastlane'",
102
+ verify_block: proc do |value|
103
+ UI.user_error!("No repository_name given in input param") unless (value and not value.empty?)
104
+ end),
105
+ FastlaneCore::ConfigItem.new(key: :branch_name,
106
+ env_name: "FL_REBASE_CSV_TRANSLATION_REQUEST_BRANCH_NAME",
107
+ description: "The branch name to your repository, (default main)",
108
+ is_string: true,
109
+ default_value: "main"),
110
+ FastlaneCore::ConfigItem.new(key: :feature_branch_name,
111
+ env_name: "FL_REBASE_CSV_TRANSLATION_REQUEST_FEATURE_BRANCH_NAME",
112
+ description: "The feature branch name for new translation request (Useful if no direct commit allowed in main)",
113
+ is_string: true),
114
+ FastlaneCore::ConfigItem.new(key: :file_path,
115
+ env_name: "FL_REBASE_CSV_TRANSLATION_REQUEST_FILE_PATH",
116
+ description: "The file path to your csv file",
117
+ is_string: true),
118
+ FastlaneCore::ConfigItem.new(key: :identifier_header,
119
+ env_name: "FL_REBASE_CSV_TRANSLATION_REQUEST_IDENTIFIER_HEADER",
120
+ description: "An identifier header(column name) of the CSV file",
121
+ is_string: true,
122
+ optional: true,
123
+ default_value: "Ticket"),
124
+ FastlaneCore::ConfigItem.new(key: :identifier,
125
+ env_name: "FL_REBASE_CSV_TRANSLATION_REQUEST_IDENTIFIER",
126
+ description: "An identifier value of the CSV file row",
127
+ is_string: true)
128
+ ]
129
+ end
130
+
131
+ def self.authors
132
+ ["crazymanish"]
133
+ end
134
+
135
+ def self.example_code
136
+ [
137
+ 'rebase_csv_translation_request(
138
+ repository_name: "fastlane/fastlane",
139
+ feature_branch_name: "some_feature_branch",
140
+ file_path: "translation/some_csv_name.csv",
141
+ identifier: "some_identifier_value")',
142
+ 'rebase_csv_translation_request(
143
+ repository_name: "fastlane/fastlane",
144
+ branch_name: "main",
145
+ feature_branch_name: "some_feature_branch",
146
+ file_path: "translation/some_csv_name.csv",
147
+ identifier: "some_identifier_value")'
148
+ ]
149
+ end
150
+
151
+ def self.is_supported?(platform)
152
+ true
153
+ end
154
+ end
155
+ end
156
+ end
@@ -6,12 +6,12 @@ module Fastlane
6
6
  module Helper
7
7
  class CsvTranslationHelper
8
8
 
9
- def self.csv_file_folder_name
9
+ def self.csv_file_directory_name
10
10
  return ".fl_clone_csv_file"
11
11
  end
12
12
 
13
- def self.csv_file_folder_path
14
- return File.join(Dir.pwd, self.csv_file_folder_name)
13
+ def self.csv_file_directory_path
14
+ return File.join(Dir.pwd, self.csv_file_directory_name)
15
15
  end
16
16
 
17
17
  def self.fetch_csv_file(params)
@@ -19,22 +19,20 @@ module Fastlane
19
19
  branch_name = params[:branch_name]
20
20
 
21
21
  # Setup csv_file folder for fresh git clone.
22
- git_clone_folder = self.csv_file_folder_path
22
+ git_clone_folder = self.csv_file_directory_path
23
23
  FileUtils.rm_rf(git_clone_folder) if File.directory?(git_clone_folder)
24
- Dir.mkdir(self.csv_file_folder_name)
24
+ Dir.mkdir(self.csv_file_directory_name)
25
25
 
26
26
  UI.success("Fetching csv file from git repo... ⏳")
27
- branch_option = "--branch #{branch_name}" if branch_name != 'HEAD'
28
27
  git_url = "git@github.com:#{repository_name}"
29
- Fastlane::Actions::sh("git clone #{git_url.shellescape} #{git_clone_folder.shellescape} --depth 1 -n #{branch_option}")
28
+ Fastlane::Actions::sh("git clone #{git_url.shellescape} #{git_clone_folder.shellescape}")
30
29
  Fastlane::Actions::sh("cd #{git_clone_folder.shellescape} && git checkout #{branch_name}")
31
30
 
32
31
  return git_clone_folder
33
32
  end
34
33
 
35
34
  def self.create_feature_branch(params)
36
- self.fetch_csv_file(params)
37
- git_clone_folder = self.csv_file_folder_path
35
+ git_clone_folder = self.fetch_csv_file(params)
38
36
 
39
37
  # creating and checkout new branch
40
38
  branch_name = params[:feature_branch_name]
@@ -46,6 +44,18 @@ module Fastlane
46
44
  return git_clone_folder
47
45
  end
48
46
 
47
+ # add missing newline if not present, at the end of the file
48
+ def self.append_missing_eof(file_path)
49
+ File.open(file_path, "r+") do |file|
50
+ file.seek(-1, 2)
51
+
52
+ if file.read(1) != "\n"
53
+ file.write("\n")
54
+ file.seek(0)
55
+ end
56
+ end
57
+ end
58
+
49
59
  end
50
60
  end
51
61
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module CsvTranslation
3
- VERSION = "0.3.0"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-csv_translation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manish Rathi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-19 00:00:00.000000000 Z
11
+ date: 2020-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -145,9 +145,12 @@ files:
145
145
  - LICENSE
146
146
  - README.md
147
147
  - lib/fastlane/plugin/csv_translation.rb
148
+ - lib/fastlane/plugin/csv_translation/actions/create_csv_feature_branch.rb
148
149
  - lib/fastlane/plugin/csv_translation/actions/create_csv_translation_request.rb
149
150
  - lib/fastlane/plugin/csv_translation/actions/delete_csv_translation_request.rb
151
+ - lib/fastlane/plugin/csv_translation/actions/fetch_csv_branch.rb
150
152
  - lib/fastlane/plugin/csv_translation/actions/get_csv_translation_requests.rb
153
+ - lib/fastlane/plugin/csv_translation/actions/rebase_csv_translation_request.rb
151
154
  - lib/fastlane/plugin/csv_translation/helper/csv_translation_helper.rb
152
155
  - lib/fastlane/plugin/csv_translation/version.rb
153
156
  homepage: https://github.com/crazymanish/fastlane-plugin-csv_translation
@@ -169,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
172
  - !ruby/object:Gem::Version
170
173
  version: '0'
171
174
  requirements: []
172
- rubygems_version: 3.0.3
175
+ rubygems_version: 3.1.4
173
176
  signing_key:
174
177
  specification_version: 4
175
178
  summary: "A fastlane plugin to manage translation using a CSV file under git repository.