fastlane-plugin-csv_translation 0.1.0 β†’ 1.0.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: cbf2f2914ddd1cd56ebd39354d174a20f85e9a44a8b874230883d5ad46eb03c3
4
- data.tar.gz: b5f7b4218341d49d2daf9cefd74ea05a2a29197bc27584e19ff54a611da84f61
3
+ metadata.gz: f657887f9c46ed4aeb2e942573de7c46ed0dae74a9b55e09d26f1c177e1f4a28
4
+ data.tar.gz: 29420529f6802248e6f37c50f3e90c13224eece572a455037d8ace715a27e3f4
5
5
  SHA512:
6
- metadata.gz: 9bf222fe9c83c702b1755cafd4ea8b023f6e65aa4366e8febd1e7f2442f5056af4a42b8f7be1da1bfb0f712af504429b58ea97b9ff6ad811602c923b334ad4e8
7
- data.tar.gz: 02bd4ee840f8800666bd92117684be256ee92a3e26cd032b3e40112b9874101f325550e10484cd950bbf14ac139842e0ff4afb8ba87ba5d905b6efab7abcc2a6
6
+ metadata.gz: d35379a205bebb7d6840b533dd26e127eb3b2c3f1414b9f373c76a6ec237dab062edb7fed4e208906d40be6cb46c75ad7837bf046f027d47fbd778d300df24da
7
+ data.tar.gz: b530f37c441e6616658486b142263d611dfc0e5f70306e4f689884a6576bd02e96141e28a133a5eec093606510f648845684323abccba23cf02ec3f4e98d368b
data/README.md CHANGED
@@ -10,6 +10,11 @@ This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To
10
10
  fastlane add_plugin csv_translation
11
11
  ```
12
12
 
13
+ If you are using fastlane using Gemfile in your project, add it to your project by running:
14
+ ```bash
15
+ bundle exec fastlane add_plugin csv_translation
16
+ ```
17
+
13
18
  ## About csv_translation
14
19
 
15
20
  A fastlane plugin to manage translation using a CSV file under git repository. πŸš€
@@ -23,7 +28,7 @@ This plugin opens up an opportunity to automate reading from/writing of any `CSV
23
28
  <img width="1476" alt="Example CSV" src="https://user-images.githubusercontent.com/5364500/81500222-fe912780-92d0-11ea-87a7-952a78b5cdf7.png">
24
29
 
25
30
  ## Actions
26
- `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).
27
32
 
28
33
  ### πŸ“‘ get_csv_translation_requests
29
34
  Get all the translation info as hash from the CSV file, **print** the `translation_status` if translation_requests found.
@@ -50,7 +55,7 @@ get_csv_translation_requests(
50
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.
51
56
 
52
57
  ``` ruby
53
- example_csv_payload = {Ticket: "PRJ-3030", Timeline: "30 April"}
58
+ example_csv_payload = { "Ticket" => "PRJ-3030", "Timeline" => "30 April" }
54
59
 
55
60
  create_csv_translation_request(
56
61
  repository_name: "crazymanish/example-csv-repo", # Specify the CSV git file repo
@@ -59,6 +64,19 @@ create_csv_translation_request(
59
64
  )
60
65
  ```
61
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
+
62
80
  ### βœ‚οΈ delete_csv_translation_request
63
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.
64
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 master)",
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: "master",
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
@@ -10,22 +10,27 @@ module Fastlane
10
10
  class CreateCsvTranslationRequestAction < Action
11
11
  def self.run(params)
12
12
  # fetching csv file
13
- csv_file_folder = Helper::CsvTranslationHelper.fetch_csv_file(
13
+ csv_file_folder = Helper::CsvTranslationHelper.create_feature_branch(
14
14
  repository_name: params[:repository_name],
15
- branch_name: params[:branch_name]
15
+ branch_name: params[:branch_name],
16
+ feature_branch_name: params[:feature_branch_name]
16
17
  )
17
18
 
18
19
  csv_file_path = "#{csv_file_folder}/#{params[:file_path]}"
19
20
  csv_payload = params[:payload]
20
21
 
22
+ # add missing newline if not present, at the end of the file
23
+ Helper::CsvTranslationHelper.append_missing_eof(csv_file_path)
24
+
21
25
  # adding new entry into csv file
22
26
  require 'csv'
23
- CSV.open(csv_file_path, 'a+', headers: csv_payload.keys) do |csv|
24
- 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
25
30
  end
26
31
 
27
32
  # creating csv translation request
28
- git_message = "New translation request: #{csv_payload}"
33
+ git_message = "New translation request:\n#{csv_payload}"
29
34
  git_commit_info = ""
30
35
  Dir.chdir(csv_file_folder) do
31
36
  GitCommitAction.run(path: ".", message: git_message)
@@ -63,9 +68,14 @@ module Fastlane
63
68
  end),
64
69
  FastlaneCore::ConfigItem.new(key: :branch_name,
65
70
  env_name: "FL_CREATE_CSV_TRANSLATION_REQUEST_BRANCH_NAME",
66
- description: "The branch name to your repository, (default master)",
71
+ description: "The branch name to your repository, (default main)",
72
+ is_string: true,
73
+ default_value: "main"),
74
+ FastlaneCore::ConfigItem.new(key: :feature_branch_name,
75
+ env_name: "FL_CREATE_CSV_TRANSLATION_REQUEST_FEATURE_BRANCH_NAME",
76
+ description: "The feature branch name for new translation request (Useful if no direct commit allowed in main)",
67
77
  is_string: true,
68
- default_value: "master"),
78
+ optional: true),
69
79
  FastlaneCore::ConfigItem.new(key: :file_path,
70
80
  env_name: "FL_CREATE_CSV_TRANSLATION_REQUEST_FILE_PATH",
71
81
  description: "The file path to your csv file",
@@ -86,12 +96,12 @@ module Fastlane
86
96
  'create_csv_translation_request(
87
97
  repository_name: "fastlane/fastlane",
88
98
  file_path: "translation/some_csv_name.csv",
89
- payload: {header_name: "some_value"})',
99
+ payload: {"header_name" => "some_value"})',
90
100
  'create_csv_translation_request(
91
101
  repository_name: "fastlane/fastlane",
92
- branch_name: "master",
102
+ branch_name: "main",
93
103
  file_path: "translation/some_csv_name.csv",
94
- payload: {header_name: "some_value"})'
104
+ payload: {"header_name" => "some_value"})'
95
105
  ]
96
106
  end
97
107
 
@@ -10,9 +10,10 @@ module Fastlane
10
10
  class DeleteCsvTranslationRequestAction < Action
11
11
  def self.run(params)
12
12
  # fetching csv file
13
- csv_file_folder = Helper::CsvTranslationHelper.fetch_csv_file(
13
+ csv_file_folder = Helper::CsvTranslationHelper.create_feature_branch(
14
14
  repository_name: params[:repository_name],
15
- branch_name: params[:branch_name]
15
+ branch_name: params[:branch_name],
16
+ feature_branch_name: params[:feature_branch_name]
16
17
  )
17
18
 
18
19
  csv_file_path = "#{csv_file_folder}/#{params[:file_path]}"
@@ -25,7 +26,7 @@ module Fastlane
25
26
  translation_requests = CSV.table(csv_file_path, headers: true)
26
27
  translation_requests.delete_if { |row| row.map { |value| value.to_s }.join("").include?(csv_row_identifier) }
27
28
 
28
- 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|
29
30
  translation_requests.each { |translation_request| csv << translation_request }
30
31
  end
31
32
 
@@ -36,17 +37,17 @@ module Fastlane
36
37
  git_status = Actions::sh("git status --porcelain")
37
38
  is_git_status_clean = git_status.empty?
38
39
 
39
- # raise exception if translation request not found.
40
+ # log message if translation request not found.
40
41
  if is_git_status_clean
41
- UI.user_error!("Please check \"#{csv_row_identifier}\", not found the translation request. πŸ›‘")
42
+ UI.important("Please check \"#{csv_row_identifier}\", not found the translation request. ⁉️")
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
48
+
49
+ UI.success("Successfully #{git_message} πŸš€")
42
50
  end
43
-
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
48
-
49
- UI.success("Successfully #{git_message} πŸš€")
50
51
  end
51
52
 
52
53
  # building deleted translation request info
@@ -78,9 +79,14 @@ module Fastlane
78
79
  end),
79
80
  FastlaneCore::ConfigItem.new(key: :branch_name,
80
81
  env_name: "FL_DELETE_CSV_TRANSLATION_REQUEST_BRANCH_NAME",
81
- description: "The branch name to your repository, (default master)",
82
+ description: "The branch name to your repository, (default main)",
83
+ is_string: true,
84
+ default_value: "main"),
85
+ FastlaneCore::ConfigItem.new(key: :feature_branch_name,
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 main)",
82
88
  is_string: true,
83
- default_value: "master"),
89
+ optional: true),
84
90
  FastlaneCore::ConfigItem.new(key: :file_path,
85
91
  env_name: "FL_DELETE_CSV_TRANSLATION_REQUEST_FILE_PATH",
86
92
  description: "The file path to your csv file",
@@ -104,7 +110,7 @@ module Fastlane
104
110
  identifier: "some_identifier_value")',
105
111
  'delete_csv_translation_request(
106
112
  repository_name: "fastlane/fastlane",
107
- branch_name: "master",
113
+ branch_name: "main",
108
114
  file_path: "translation/some_csv_name.csv",
109
115
  identifier: "some_identifier_value")'
110
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
@@ -0,0 +1,148 @@
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
+
21
+ require 'csv'
22
+
23
+ # picking translation request-identifier entry from the feature_branch csv file
24
+ feature_branch_translation_requests = CSV.table(csv_file_path, headers: true)
25
+ feature_branch_translation_requests = feature_branch_translation_requests.select { |row| row.map { |value| value.to_s }.join("").include?(csv_row_identifier) }
26
+
27
+ # rebasing CSV file
28
+ git_commit_info = {}
29
+ Dir.chdir(csv_file_folder) do
30
+ # Step1: Checkout the target branch csv file
31
+ sh("git fetch --all")
32
+ sh("git checkout #{params[:branch_name]} -- #{params[:file_path]}")
33
+
34
+ # Validate: Do we really need to perfoem `rebase` ?
35
+ repo_status = Actions::sh("git status --porcelain")
36
+ repo_clean = repo_status.empty?
37
+
38
+ if repo_clean
39
+ UI.important("Rebase is not required, CSV file is up to date! πŸ’ͺ")
40
+ else
41
+ git_commit_info = self.perform_rebase(params, csv_file_path, feature_branch_translation_requests)
42
+ end
43
+ end
44
+
45
+ # building deleted translation request info
46
+ rebase_translation_request_info = {
47
+ identifier: csv_row_identifier,
48
+ git_commit_info: git_commit_info}
49
+
50
+ Actions.lane_context[SharedValues::REBASE_CSV_TRANSLATION_REQUEST_INFO] = rebase_translation_request_info
51
+ return rebase_translation_request_info
52
+ end
53
+
54
+ def self.perform_rebase(params, csv_file_path, feature_branch_translation_requests)
55
+ csv_row_identifier = params[:identifier]
56
+
57
+ # Step2: Commit csv file so rebase can be performed
58
+ git_message = "Rebase translation request: identifier:\n#{csv_row_identifier}"
59
+ GitCommitAction.run(path: ".", message: git_message)
60
+
61
+ # Step3: Perfoms rebasing, take all changes from target branch
62
+ sh("git rebase -X theirs " + params[:branch_name])
63
+
64
+ # Step4: Add missing newline if not present, at the end of the file
65
+ Helper::CsvTranslationHelper.append_missing_eof(csv_file_path)
66
+
67
+ # Step5: Append back feature branch translation_requests
68
+ all_translation_requests = CSV.table(csv_file_path, headers: true)
69
+ all_translation_requests.delete_if { |row| row.map { |value| value.to_s }.join("").include?(csv_row_identifier) }
70
+
71
+ headers = CSV.open(csv_file_path, &:readline)
72
+ CSV.open(csv_file_path, "w", write_headers: true, headers: headers, force_quotes: true) do |csv|
73
+ all_translation_requests.each { |translation_request| csv << translation_request }
74
+ feature_branch_translation_requests.each { |translation_request| csv << translation_request }
75
+ end
76
+
77
+ # Step6: Commit and push to remote
78
+ GitCommitAction.run(path: ".", message: git_message)
79
+ PushToGitRemoteAction.run(remote: "origin", force: true)
80
+
81
+ UI.success("Successfully #{git_message} πŸš€")
82
+ Actions.last_git_commit_dict
83
+ end
84
+
85
+ def self.description
86
+ "Rebase a translation request based on identifier value."
87
+ end
88
+
89
+ def self.output
90
+ [
91
+ ['REBASE_CSV_TRANSLATION_REQUEST_INFO', 'Rebased translation request info i.e identifier, git_commit info']
92
+ ]
93
+ end
94
+
95
+ def self.available_options
96
+ [
97
+ FastlaneCore::ConfigItem.new(key: :repository_name,
98
+ env_name: "FL_REBASE_CSV_TRANSLATION_REQUEST_REPOSITORY_NAME",
99
+ description: "The name to your repository, e.g. 'fastlane/fastlane'",
100
+ verify_block: proc do |value|
101
+ UI.user_error!("No repository_name given in input param") unless (value and not value.empty?)
102
+ end),
103
+ FastlaneCore::ConfigItem.new(key: :branch_name,
104
+ env_name: "FL_REBASE_CSV_TRANSLATION_REQUEST_BRANCH_NAME",
105
+ description: "The branch name to your repository, (default main)",
106
+ is_string: true,
107
+ default_value: "main"),
108
+ FastlaneCore::ConfigItem.new(key: :feature_branch_name,
109
+ env_name: "FL_REBASE_CSV_TRANSLATION_REQUEST_FEATURE_BRANCH_NAME",
110
+ description: "The feature branch name for new translation request (Useful if no direct commit allowed in main)",
111
+ is_string: true),
112
+ FastlaneCore::ConfigItem.new(key: :file_path,
113
+ env_name: "FL_REBASE_CSV_TRANSLATION_REQUEST_FILE_PATH",
114
+ description: "The file path to your csv file",
115
+ is_string: true),
116
+ FastlaneCore::ConfigItem.new(key: :identifier,
117
+ env_name: "FL_REBASE_CSV_TRANSLATION_REQUEST_IDENTIFIER",
118
+ description: "An identifier value of the CSV file row",
119
+ is_string: true)
120
+ ]
121
+ end
122
+
123
+ def self.authors
124
+ ["crazymanish"]
125
+ end
126
+
127
+ def self.example_code
128
+ [
129
+ 'rebase_csv_translation_request(
130
+ repository_name: "fastlane/fastlane",
131
+ feature_branch_name: "some_feature_branch",
132
+ file_path: "translation/some_csv_name.csv",
133
+ identifier: "some_identifier_value")',
134
+ 'rebase_csv_translation_request(
135
+ repository_name: "fastlane/fastlane",
136
+ branch_name: "main",
137
+ feature_branch_name: "some_feature_branch",
138
+ file_path: "translation/some_csv_name.csv",
139
+ identifier: "some_identifier_value")'
140
+ ]
141
+ end
142
+
143
+ def self.is_supported?(platform)
144
+ true
145
+ end
146
+ end
147
+ end
148
+ end
@@ -6,25 +6,56 @@ module Fastlane
6
6
  module Helper
7
7
  class CsvTranslationHelper
8
8
 
9
+ def self.csv_file_directory_name
10
+ return ".fl_clone_csv_file"
11
+ end
12
+
13
+ def self.csv_file_directory_path
14
+ return File.join(Dir.pwd, self.csv_file_directory_name)
15
+ end
16
+
9
17
  def self.fetch_csv_file(params)
10
18
  repository_name = params[:repository_name]
11
19
  branch_name = params[:branch_name]
12
20
 
13
21
  # Setup csv_file folder for fresh git clone.
14
- csv_file_folder_name = ".fl_clone_csv_file"
15
- git_clone_folder = File.join(Dir.pwd, csv_file_folder_name)
22
+ git_clone_folder = self.csv_file_directory_path
16
23
  FileUtils.rm_rf(git_clone_folder) if File.directory?(git_clone_folder)
17
- Dir.mkdir(csv_file_folder_name)
24
+ Dir.mkdir(self.csv_file_directory_name)
18
25
 
19
26
  UI.success("Fetching csv file from git repo... ⏳")
20
- branch_option = "--branch #{branch_name}" if branch_name != 'HEAD'
21
27
  git_url = "git@github.com:#{repository_name}"
22
- 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}")
23
29
  Fastlane::Actions::sh("cd #{git_clone_folder.shellescape} && git checkout #{branch_name}")
24
30
 
25
31
  return git_clone_folder
26
32
  end
27
33
 
34
+ def self.create_feature_branch(params)
35
+ git_clone_folder = self.fetch_csv_file(params)
36
+
37
+ # creating and checkout new branch
38
+ branch_name = params[:feature_branch_name]
39
+ Fastlane::Actions::sh("cd #{git_clone_folder.shellescape} && git checkout -b #{branch_name}")
40
+
41
+ # pushing newly created branch
42
+ Fastlane::Actions::sh("cd #{git_clone_folder.shellescape} && git push -u origin #{branch_name}")
43
+
44
+ return git_clone_folder
45
+ end
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
+
28
59
  end
29
60
  end
30
61
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module CsvTranslation
3
- VERSION = "0.1.0"
3
+ VERSION = "1.0.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.1.0
4
+ version: 1.0.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-10 00:00:00.000000000 Z
11
+ date: 2020-08-01 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.