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 +4 -4
- data/README.md +78 -7
- data/lib/fastlane/plugin/json/actions/download_json_action.rb +3 -2
- data/lib/fastlane/plugin/json/actions/merge_jsons_action.rb +100 -0
- data/lib/fastlane/plugin/json/actions/read_json_action.rb +22 -9
- data/lib/fastlane/plugin/json/actions/write_json_action.rb +8 -14
- data/lib/fastlane/plugin/json/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 171f876162ae4aa8045970d6375243fcb2a4f05c8effb677806ca5634e3ca359
|
4
|
+
data.tar.gz: 499dea3eb82ee7cd6390260d13d0218eb347c467f9c6f0544b36aa5b8a12e0be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
##
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
-
|
15
|
-
|
16
|
-
|
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:
|
45
|
-
|
46
|
-
|
47
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|
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
|
-
|
62
|
+
type: Boolean)
|
69
63
|
]
|
70
64
|
end
|
71
65
|
|
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:
|
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:
|
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
|