fastlane-plugin-json 0.1.2 → 1.1.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 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