fastlane-plugin-npm 0.3.1 → 0.4.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: 957a46692ec557fc0ec7f63b73ad2005d41438e23d3e85745882fbfa671c5bcb
4
- data.tar.gz: 20128d2126774b881f89561b67c11acaa7d97c18ea580e3e750e3c679d17c5b5
3
+ metadata.gz: e7dfd78f976bdccb3f211411f1f2a4fd1a0a7164fa16df9d08c345827bfd8657
4
+ data.tar.gz: 2963aaa3f6614d7519bf7a87fb943b93364e889d22215ad1f9757206cad92907
5
5
  SHA512:
6
- metadata.gz: 05a7ac490c4b6940f98bbd0ddf005f9b7f4b286d243e964074ed045b61a7460ec88ca723db39ba18b7aa7f06e4da80b87a6721ff83cda186e6f419a67add19a4
7
- data.tar.gz: 6b861a9ee44c9c6490599f8840a96dd7f57c0c05d7e3a2fefe350a1f08e84c10790c54c5d9b9e1dd5bd7294b710baa6d5d0890c848e0f75e2f7ba419c9c4f347
6
+ metadata.gz: 509914010d6058f61803e8f970fe85c991bdb634a9d04f5e92fc69773144df3fe87b5bb44b47457c3d4de1fa781e23eb22f6818cae9a744f6f84582aa9cb4409
7
+ data.tar.gz: 479ec44e3309fc5df03ccc27f6ccd3299f69bb089e35c7c6ae2f29cb6866e18e966cb1a0656e9a0dad087fe3b0367a6d1fb514d52db6b9fe0075d968e4a0f1f3
data/README.md CHANGED
@@ -22,22 +22,57 @@ A very simple plugin to run npm scripts
22
22
 
23
23
 
24
24
 
25
- ## Example
26
-
27
- 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`.
28
-
29
-
30
-
25
+ ## Actions
26
+
27
+ ```ruby
28
+ lane :test do
29
+ npm_install(
30
+ fresh: true, # [Optional] Boolean: Defines if modules should be fresh instaled. Deletes node_modules folder (Default: false)
31
+ arguments: [], # [Optional] Array: List of arguments
32
+ step_name: 'Starting with reset cache' # [Optional] String: Text that will be printed into the console
33
+ )
34
+
35
+ npm_post_install(
36
+ arguments: [], # [Optional] Array: List of arguments
37
+ step_name: 'Starting with reset cache' # [Optional] String: Text that will be printed into the console
38
+ )
39
+
40
+ npm_lint(
41
+ script: 'lint', # [Optional] String: Overrides default lint script name (Default: lint)
42
+ fix: true, # [Optional] Boolean: Adds a --fix flag (Default: false)
43
+ arguments: [], # [Optional] Array: List of arguments
44
+ step_name: 'Starting with reset cache' # [Optional] String: Text that will be printed into the console
45
+ )
46
+
47
+ npm_test(
48
+ script: 'test', # [Optional] String: Overrides default test script name (Default: test)
49
+ coverage: true, # [Optional] Boolean: Adds a --coverage flag (Default: false)
50
+ arguments: [], # [Optional] Array: List of arguments
51
+ step_name: 'Starting with reset cache' # [Optional] String: Text that will be printed into the console
52
+ )
53
+
54
+ npm_run(
55
+ script: 'start', # [Required] String: Script to run
56
+ arguments: ['--reset-cache'], # [Optional] Array: List of arguments
57
+ step_name: 'Starting with reset cache' # [Optional] String: Text that will be printed into the console
58
+ )
59
+
60
+ upgrade_package_json_version(
61
+ new_version: "1.5.0", # [Required] String: Version to set
62
+ version_match: "(\d+\.\d+\.\d+)" # [Optional] String: Regex as a string to match the version in the package.json (Default: "(\d+\.\d+\.\d+)")
63
+ )
64
+ end
65
+ ```
31
66
  ## Run tests for this plugin
32
67
 
33
68
  To run both the tests, and code style validation, run
34
69
 
35
- ```
70
+ ```bash
36
71
  rake
37
72
  ```
38
73
 
39
74
  To automatically fix many of the styling issues, use
40
- ```
75
+ ```bash
41
76
  rubocop -a
42
77
  ```
43
78
 
@@ -8,7 +8,11 @@ module Fastlane
8
8
  # rm may exit with non zero in the case where there is no node_modules and that's what we want anyway
9
9
  if params[:fresh]
10
10
  UI.important('Deleting node modules and installing packages')
11
- FastlaneCore::CommandExecutor.execute(command: 'rm -rf ../node_modules 2> /dev/null',
11
+
12
+ root_dir = Helper::NpmHelper.find_root_dir
13
+ node_module_dir = File.join(root_dir, 'node_modules')
14
+
15
+ FastlaneCore::CommandExecutor.execute(command: "rm -rf \"#{node_module_dir}\" 2> /dev/null",
12
16
  print_command: FastlaneCore::Globals.verbose?,
13
17
  print_all: FastlaneCore::Globals.verbose?)
14
18
  end
@@ -0,0 +1,66 @@
1
+ require 'fastlane/action'
2
+ require_relative '../helper/npm_helper'
3
+
4
+ module Fastlane
5
+ module Actions
6
+ class UpgradePackageJsonVersionAction < Action
7
+ def self.run(params)
8
+ UI.message "Changing package.json version to #{params[:new_version]}"
9
+ root_dir = Helper::NpmHelper.find_root_dir
10
+
11
+ UI.user_error! "apparently it's not running inside a node project. package.json cannot be found" unless root_dir
12
+
13
+ package_json_path = File.join(root_dir, 'package.json')
14
+
15
+ regex = Regexp.new("\"version\": \"#{params[:version_match]}\"")
16
+
17
+ Helper::NpmHelper.update_file_content(
18
+ file_name: package_json_path,
19
+ search: regex,
20
+ replace: "\"version\": \"#{params[:new_version]}\""
21
+ )
22
+ end
23
+
24
+ def self.description
25
+ "A very simple plugin to run npm scripts"
26
+ end
27
+
28
+ def self.authors
29
+ ["Erick Martins"]
30
+ end
31
+
32
+ def self.return_value
33
+ # If your method provides a return value, you can describe here what it does
34
+ end
35
+
36
+ def self.details
37
+ # Optional:
38
+ "A very simple plugin to run npm scripts"
39
+ end
40
+
41
+ def self.available_options
42
+ [
43
+ FastlaneCore::ConfigItem.new(key: :new_version,
44
+ default_value: "Installing dependencies",
45
+ description: "Name for this step",
46
+ optional: true,
47
+ type: String),
48
+
49
+ FastlaneCore::ConfigItem.new(key: :version_match,
50
+ default_value: '(\d+\.\d+\.\d+)',
51
+ description: "Regex to match the version",
52
+ optional: true,
53
+ type: String),
54
+ ]
55
+ end
56
+
57
+ def self.is_supported?(platform)
58
+ # Adjust this if your plugin only works for a particular platform (iOS vs. Android, for example)
59
+ # See: https://docs.fastlane.tools/advanced/#control-configuration-by-lane-and-by-platform
60
+ #
61
+ # [:ios, :mac, :android].include?(platform)
62
+ true
63
+ end
64
+ end
65
+ end
66
+ end
@@ -5,12 +5,22 @@ module Fastlane
5
5
 
6
6
  module Helper
7
7
  class NpmHelper
8
- # class methods that you define here become available in your action
9
- # as `Helper::NpmHelper.your_method`
10
- #
11
- def self.show_message
12
- UI.message("Hello from the npm plugin helper!")
8
+ def self.find_root_dir(dir = Dir.pwd)
9
+ return dir if File.file?(File.join(dir, 'package.json'))
10
+
11
+ parent_dir = File.expand_path("..", dir)
12
+ return nil unless parent_dir != '/'
13
+
14
+ find_root_dir parent_dir
13
15
  end
16
+
17
+ def self.update_file_content(file_name:, search:, replace:)
18
+ text = File.read(file_name)
19
+ new_contents = text.gsub(search, replace)
20
+
21
+ # To write changes to the file, use:
22
+ File.open(file_name, "w") {|file| file.puts new_contents }
23
+ end
14
24
  end
15
25
  end
16
26
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module Npm
3
- VERSION = "0.3.1"
3
+ VERSION = "0.4.0"
4
4
  end
5
- end
5
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-npm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erick Martins
@@ -150,6 +150,7 @@ files:
150
150
  - lib/fastlane/plugin/npm/actions/npm_post_install_action.rb
151
151
  - lib/fastlane/plugin/npm/actions/npm_run_action.rb
152
152
  - lib/fastlane/plugin/npm/actions/npm_test_action.rb
153
+ - lib/fastlane/plugin/npm/actions/upgrade_package_json_version_action.rb
153
154
  - lib/fastlane/plugin/npm/helper/npm_helper.rb
154
155
  - lib/fastlane/plugin/npm/version.rb
155
156
  homepage: https://github.com/erick-martins/fastlane-plugin-npm