fastlane-plugin-json 0.1.2 → 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: 7a322af1714b480f2e163f6b1fbd7cc1ed54e07852e0db684abffb526a888cdc
4
- data.tar.gz: bff1e8ed76220e6a7e4ce6ae5eedaf91973ac8d52d5dbe6b42f787184b29e25c
3
+ metadata.gz: 171f876162ae4aa8045970d6375243fcb2a4f05c8effb677806ca5634e3ca359
4
+ data.tar.gz: 499dea3eb82ee7cd6390260d13d0218eb347c467f9c6f0544b36aa5b8a12e0be
5
5
  SHA512:
6
- metadata.gz: 65df970c792ec75c1e41baaa9a3f3a815e6138c96e2ad8dd0f9f79d690c8473b40967f5b112bd337cebc0ff5164f4452e9a19b9f5912a7b5ba2b0dab613a3017
7
- data.tar.gz: 33b204d134516933c17c1318ebcb9bc32938933b92b2c066e78d18876c1d2757c3e92097ad65b1fe2eb77ce3bad3f156cbdf4d7479a3eef8b062682503daf338
6
+ metadata.gz: bc2c2ac056904781c571dbdd3f5c92bc0d50d0f6d46556efd3e8d4491b5fb86148debee6400fbd7df3c9a26e1d8250e15588d193054e0cc0bba04e757b209ba9
7
+ data.tar.gz: 84c7f37783ee3933209c546ff64df6e08df0517879813c199895899fbb93a30d48c9067edfcb252fbad74ef7aa19cd0b7eb9ed61ed1e3b18d4826361386b52fe
data/README.md CHANGED
@@ -1,6 +1,19 @@
1
- # Fastlane Json plugin
2
-
3
- [![fastlane Plugin Badge](https://rawcdn.githack.com/fastlane/fastlane/master/fastlane/assets/plugin-badge.svg)](https://rubygems.org/gems/fastlane-plugin-json)
1
+ # Fastlane Json plugin <!-- omit in toc -->
2
+
3
+ [![fastlane Plugin Badge](https://rawcdn.githack.com/fastlane/fastlane/master/fastlane/assets/plugin-badge.svg)](https://rubygems.org/gems/fastlane-plugin-json) ![Gem Version](https://badge.fury.io/rb/fastlane-plugin-json.svg) ![](https://ruby-gem-downloads-badge.herokuapp.com/fastlane-plugin-json) [![YourActionName Actions Status](https://github.com/MartinGonzalez/fastlane-plugin-json/workflows/Test-Build-Publish/badge.svg)](https://github.com/MartinGonzalez/fastlane-plugin-json/actions)
4
+
5
+ - [Getting Started](#getting-started)
6
+ - [Actions](#actions)
7
+ - [read_json](#read_json)
8
+ - [download_json](#download_json)
9
+ - [write_json](#write_json)
10
+ - [merge_jsons](#merge_jsons)
11
+ - [Example](#example)
12
+ - [Run tests for this plugin](#run-tests-for-this-plugin)
13
+ - [Issues and Feedback](#issues-and-feedback)
14
+ - [Troubleshooting](#troubleshooting)
15
+ - [Using _fastlane_ Plugins](#using-fastlane-plugins)
16
+ - [About _fastlane_](#about-fastlane)
4
17
 
5
18
  ## Getting Started
6
19
 
@@ -10,12 +23,17 @@ This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To
10
23
  fastlane add_plugin json
11
24
  ```
12
25
 
13
- ## About json
26
+ ## Actions
14
27
 
15
28
  This plugin provide several actions that will allow you to manipulate and create json files.
16
29
 
17
30
  ### read_json
18
31
 
32
+ | Key | Description | Env Var | Default |
33
+ |-----------|-------------------|---------|---------|
34
+ | json_path | Path to json file | | |
35
+ | verbose | verbose | | false |
36
+
19
37
  Read a json file at specific path as a hash object.
20
38
 
21
39
  _Having a json file at `path/to/my.json` with the following content:_
@@ -40,6 +58,11 @@ puts my_json[:age]
40
58
 
41
59
  ### download_json
42
60
 
61
+ | Key | Description | Env Var | Default |
62
+ |-----------|-------------------|---------|---------|
63
+ | json_url | Url to json file | | |
64
+ | verbose | verbose | | false |
65
+
43
66
  Downloads a json file from server and convert it to a hash object.
44
67
 
45
68
  ```ruby
@@ -57,6 +80,12 @@ puts my_json[:isDev]
57
80
 
58
81
  ### write_json
59
82
 
83
+ | Key | Description | Env Var | Default |
84
+ |-----------|-------------------------------------------|---------|---------|
85
+ | hash | Hash that you want to save as a json file | | |
86
+ | file_path | Path where you want to save your json | | |
87
+ | verbose | verbose | | false |
88
+
60
89
  Creates a json file from a hash.
61
90
 
62
91
  ```ruby
@@ -88,11 +117,53 @@ Will create a my_json.json file with the following content:
88
117
  }
89
118
  ```
90
119
 
91
- ## Example
120
+ ### merge_jsons
121
+
122
+ | Key | Description | Env Var | Default |
123
+ |-------------|-------------------------------------------|---------|---------|
124
+ | jsons_paths | Array of json files paths | | |
125
+ | output_path | Output path where result will be saved | | |
126
+ | verbose | verbose | | false |
127
+
128
+ Merges several json files into one hash as output. Also you can set the `output_path` to save the merged hash into a json file.
129
+
130
+ Having this files:
131
+
132
+ `example.json`
133
+ ```json
134
+ {
135
+ "name": "Martin",
136
+ "age": 30
137
+ }
138
+ ```
92
139
 
93
- Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane test`.
140
+ `example2.json`
141
+ ```json
142
+ {
143
+ "lastName": "Gonzalez",
144
+ "age": 40,
145
+ "isDev": true
146
+ }
147
+ ```
148
+
149
+ ```ruby
150
+ output_path = "#{__dir__}/tmp/merged.json"
151
+
152
+ merged_hash = merge_jsons(
153
+ jsons_paths: [
154
+ "path/to/example.json",
155
+ "path/to/example2.json"
156
+ ],
157
+ output_path: output_path
158
+ )
159
+
160
+ # {:name=>"Martin", :age=>40, :lastName=>"Gonzalez", :isDev=>true}
161
+ ```
162
+
163
+
164
+ ## Example
94
165
 
95
- **Note to author:** Please set up a sample project to make it easy for users to explore what your plugin does. Provide everything that is necessary to try out the plugin in this project (including a sample Xcode/Android project if necessary)
166
+ Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane all`.
96
167
 
97
168
  ## Run tests for this plugin
98
169
 
@@ -25,6 +25,7 @@ module Fastlane
25
25
 
26
26
  def self.puts_error!(message)
27
27
  UI.user_error!(message)
28
+ raise StandardError, message
28
29
  end
29
30
 
30
31
  def self.description
@@ -47,14 +48,14 @@ module Fastlane
47
48
  FastlaneCore::ConfigItem.new(key: :verbose,
48
49
  description: "verbose",
49
50
  optional: true,
50
- data_type: Boolean,
51
+ type: Boolean,
51
52
  default_value: false)
52
53
 
53
54
  ]
54
55
  end
55
56
 
56
57
  def self.print_params(options)
57
- table_title = "Params for read_json #{Fastlane::Json::VERSION}"
58
+ table_title = "Params for download_json #{Fastlane::Json::VERSION}"
58
59
  FastlaneCore::PrintTable.print_values(config: options,
59
60
  hide_keys: [],
60
61
  title: table_title)
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+
5
+ module Fastlane
6
+ module Actions
7
+ class MergeJsonsAction < Action
8
+ def self.run(params)
9
+ jsons_paths = params[:jsons_paths]
10
+ output_path = params[:output_path]
11
+ @is_verbose = params[:verbose]
12
+
13
+ print_params(params) if @is_verbose
14
+ put_error!("jsons_path cannot be empty ❌") if jsons_paths.empty?
15
+
16
+ hashes = jsons_paths.map do |json_path|
17
+ put_error!("json_path: #{json_path} is not valid ❌") unless File.exist?(json_path)
18
+ json_content = File.read(File.expand_path(json_path))
19
+ begin
20
+ JSON.parse(json_content, symbolize_names: true)
21
+ rescue
22
+ put_error!("File at path #{json_path} has invalid content. ❌")
23
+ end
24
+ end
25
+
26
+ merged_hash = hashes.reduce({}, :merge)
27
+
28
+ write_hash_at(output_path, merged_hash) unless output_path.to_s.empty?
29
+
30
+ merged_hash
31
+ end
32
+
33
+ def self.write_hash_at(output_path, hash)
34
+ file_path_expanded = File.expand_path(output_path)
35
+ file_dir = File.dirname(file_path_expanded)
36
+ Dir.mkdir(file_dir) unless File.directory?(file_dir)
37
+
38
+ begin
39
+ File.open(output_path, "w") { |f| f.write(JSON.pretty_generate(hash)) }
40
+ rescue
41
+ put_error!("Failed to write json at #{output_path}. ❌")
42
+ end
43
+ end
44
+
45
+ def self.put_error!(message)
46
+ UI.user_error!(message)
47
+ raise StandardError, message
48
+ end
49
+
50
+ def self.description
51
+ "Merge a group of jsons files and expose a hash with symbolized names as result. Last json predominate over the rest"
52
+ end
53
+
54
+ def self.details
55
+ "Use this action to merge jsons files and access to it as Hash with symbolized names. Also you can set the output_path to save the result"
56
+ end
57
+
58
+ def self.available_options
59
+ [
60
+ FastlaneCore::ConfigItem.new(key: :jsons_paths,
61
+ description: "Array of json files paths",
62
+ type: Array,
63
+ optional: false,
64
+ verify_block: proc do |value|
65
+ UI.user_error!("You must set jsons_paths") unless value && !value.empty?
66
+ end),
67
+ FastlaneCore::ConfigItem.new(key: :output_path,
68
+ description: "Output path where result will be saved",
69
+ type: String,
70
+ optional: true),
71
+ FastlaneCore::ConfigItem.new(key: :verbose,
72
+ description: "verbose",
73
+ optional: true,
74
+ default_value: false,
75
+ type: Boolean)
76
+
77
+ ]
78
+ end
79
+
80
+ def self.print_params(options)
81
+ table_title = "Params for merge_json #{Fastlane::Json::VERSION}"
82
+ FastlaneCore::PrintTable.print_values(config: options,
83
+ hide_keys: [],
84
+ title: table_title)
85
+ end
86
+
87
+ def self.return_value
88
+ "Hash"
89
+ end
90
+
91
+ def self.authors
92
+ ["Martin Gonzalez"]
93
+ end
94
+
95
+ def self.is_supported?(_platform)
96
+ true
97
+ end
98
+ end
99
+ end
100
+ end
@@ -7,16 +7,27 @@ module Fastlane
7
7
  class ReadJsonAction < Action
8
8
  def self.run(params)
9
9
  json_path = params[:json_path]
10
+ json_string = params[:json_string]
10
11
  @is_verbose = params[:verbose]
11
12
 
13
+ if json_path.nil? && json_string.nil?
14
+ put_error!("You need to provide a json_path (file to path) or json_string (json as string) ❌")
15
+ return nil
16
+ end
17
+
12
18
  print_params(params) if @is_verbose
13
19
 
14
- unless File.file?(json_path)
15
- put_error!("File at path #{json_path} does not exist. Verify that the path is correct ❌")
16
- return nil
20
+ json_content = json_string
21
+
22
+ unless json_path.nil?
23
+ unless File.file?(json_path)
24
+ put_error!("File at path #{json_path} does not exist. Verify that the path is correct ❌")
25
+ return nil
26
+ end
27
+
28
+ json_content = File.read(json_path)
17
29
  end
18
30
 
19
- json_content = File.read(json_path)
20
31
  begin
21
32
  JSON.parse(json_content, symbolize_names: true)
22
33
  rescue
@@ -26,6 +37,7 @@ module Fastlane
26
37
 
27
38
  def self.put_error!(message)
28
39
  UI.user_error!(message)
40
+ raise StandardError, message
29
41
  end
30
42
 
31
43
  def self.description
@@ -41,14 +53,15 @@ module Fastlane
41
53
  FastlaneCore::ConfigItem.new(key: :json_path,
42
54
  description: "Path to json file",
43
55
  is_string: true,
44
- optional: false,
45
- verify_block: proc do |value|
46
- UI.user_error!("You must set json_path pointing to a json file") unless value && !value.empty?
47
- end),
56
+ optional: true),
57
+ FastlaneCore::ConfigItem.new(key: :json_string,
58
+ description: "A json as string",
59
+ is_string: true,
60
+ optional: true),
48
61
  FastlaneCore::ConfigItem.new(key: :verbose,
49
62
  description: "verbose",
50
63
  optional: true,
51
- data_type: Boolean)
64
+ type: Boolean)
52
65
 
53
66
  ]
54
67
  end
@@ -11,19 +11,12 @@ module Fastlane
11
11
  @is_verbose = params[:verbose]
12
12
  print_params(params) if @is_verbose
13
13
 
14
- if file_path.nil? || file_path.empty?
15
- put_error!("file_path: value cannot be nil or empty")
16
- return
17
- end
18
-
19
- if hash.nil?
20
- put_error!("hash: value cannot be nil")
21
- return
22
- end
14
+ put_error!("file_path: value cannot be nil or empty") if file_path.nil? || file_path.empty?
15
+ put_error!("hash: value cannot be nil") if hash.nil?
23
16
 
24
- file_dir = File.dirname(file_path)
17
+ file_path_expanded = File.expand_path(file_path)
18
+ file_dir = File.dirname(file_path_expanded)
25
19
  Dir.mkdir(file_dir) unless File.directory?(file_dir)
26
- print_params(params) if @is_verbose
27
20
 
28
21
  begin
29
22
  File.open(file_path, "w") do |f|
@@ -36,6 +29,7 @@ module Fastlane
36
29
 
37
30
  def self.put_error!(message)
38
31
  UI.user_error!(message)
32
+ raise StandardError, message
39
33
  end
40
34
 
41
35
  def self.description
@@ -51,7 +45,7 @@ module Fastlane
51
45
  FastlaneCore::ConfigItem.new(key: :hash,
52
46
  description: "Hash that you want to save as a json file",
53
47
  optional: false,
54
- data_type: Hash,
48
+ type: Hash,
55
49
  verify_block: proc do |value|
56
50
  UI.user_error!("You must set hash: parameter") unless value && !value.empty?
57
51
  end),
@@ -60,12 +54,12 @@ module Fastlane
60
54
  is_string: true,
61
55
  optional: false,
62
56
  verify_block: proc do |value|
63
- UI.user_error!("You must set file_path: parameter") unless value.nil?
57
+ UI.user_error!("You must set file_path: parameter") unless value && !value.empty?
64
58
  end),
65
59
  FastlaneCore::ConfigItem.new(key: :verbose,
66
60
  description: "verbose",
67
61
  optional: true,
68
- data_type: Boolean)
62
+ type: Boolean)
69
63
  ]
70
64
  end
71
65
 
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module Json
3
- VERSION = "0.1.2"
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-json
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Gonzalez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-20 00:00:00.000000000 Z
11
+ date: 2022-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -146,11 +146,12 @@ files:
146
146
  - README.md
147
147
  - lib/fastlane/plugin/json.rb
148
148
  - lib/fastlane/plugin/json/actions/download_json_action.rb
149
+ - lib/fastlane/plugin/json/actions/merge_jsons_action.rb
149
150
  - lib/fastlane/plugin/json/actions/read_json_action.rb
150
151
  - lib/fastlane/plugin/json/actions/write_json_action.rb
151
152
  - lib/fastlane/plugin/json/helper/json_helper.rb
152
153
  - lib/fastlane/plugin/json/version.rb
153
- homepage:
154
+ homepage: https://github.com/martingonzalez/fastlane-plugin-json
154
155
  licenses:
155
156
  - MIT
156
157
  metadata: {}
@@ -169,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
170
  - !ruby/object:Gem::Version
170
171
  version: '0'
171
172
  requirements: []
172
- rubygems_version: 3.0.3
173
+ rubygems_version: 3.0.3.1
173
174
  signing_key:
174
175
  specification_version: 4
175
176
  summary: actions related to json files