fastlane-plugin-npm 0.2.0 → 0.4.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: fd934fcc7364a6ea35c25b152feb8e99b4fb31356991b4f541b7c344c973f7bc
4
- data.tar.gz: dd77a9c60180186ce5df50334ab25fccbc14adc456c78fd42267dc009c24f0a6
3
+ metadata.gz: e7dfd78f976bdccb3f211411f1f2a4fd1a0a7164fa16df9d08c345827bfd8657
4
+ data.tar.gz: 2963aaa3f6614d7519bf7a87fb943b93364e889d22215ad1f9757206cad92907
5
5
  SHA512:
6
- metadata.gz: aa002fba732679883ba2cb8414c059b80b1cc6fbee72eeeb839b93d057c4f7fb3932f795ce3c5ea659580570e3334e51c07a0928f55f687aa330c780fdec2278
7
- data.tar.gz: c59ab6c570d6f398b026891eaad20a3600973772084f95bb3eff930d82c4988fdb199e65e0fa71459733b3737b5c762a3baa0cb690b9fcefaf96009e526e860a
6
+ metadata.gz: 509914010d6058f61803e8f970fe85c991bdb634a9d04f5e92fc69773144df3fe87b5bb44b47457c3d4de1fa781e23eb22f6818cae9a744f6f84582aa9cb4409
7
+ data.tar.gz: 479ec44e3309fc5df03ccc27f6ccd3299f69bb089e35c7c6ae2f29cb6866e18e966cb1a0656e9a0dad087fe3b0367a6d1fb514d52db6b9fe0075d968e4a0f1f3
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  [![fastlane Plugin Badge](https://rawcdn.githack.com/fastlane/fastlane/master/fastlane/assets/plugin-badge.svg)](https://rubygems.org/gems/fastlane-plugin-npm)
4
4
 
5
+
6
+
5
7
  ## Getting Started
6
8
 
7
9
  This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To get started with `fastlane-plugin-npm`, add it to your project by running:
@@ -10,43 +12,90 @@ This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To
10
12
  fastlane add_plugin npm
11
13
  ```
12
14
 
15
+
16
+
13
17
  ## About npm
14
18
 
15
19
  A very simple plugin to run npm scripts
16
20
 
17
21
  **Note to author:** Add a more detailed description about this plugin here. If your plugin contains multiple actions, make sure to mention them here.
18
22
 
19
- ## Example
20
-
21
- 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`.
22
23
 
23
- **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)
24
24
 
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
+ ```
25
66
  ## Run tests for this plugin
26
67
 
27
68
  To run both the tests, and code style validation, run
28
69
 
29
- ```
70
+ ```bash
30
71
  rake
31
72
  ```
32
73
 
33
74
  To automatically fix many of the styling issues, use
34
- ```
75
+ ```bash
35
76
  rubocop -a
36
77
  ```
37
78
 
79
+
80
+
38
81
  ## Issues and Feedback
39
82
 
40
83
  For any other issues and feedback about this plugin, please submit it to this repository.
41
84
 
85
+
86
+
42
87
  ## Troubleshooting
43
88
 
44
89
  If you have trouble using plugins, check out the [Plugins Troubleshooting](https://docs.fastlane.tools/plugins/plugins-troubleshooting/) guide.
45
90
 
91
+
92
+
46
93
  ## Using _fastlane_ Plugins
47
94
 
48
95
  For more information about how the `fastlane` plugin system works, check out the [Plugins documentation](https://docs.fastlane.tools/plugins/create-plugin/).
49
96
 
97
+
98
+
50
99
  ## About _fastlane_
51
100
 
52
101
  _fastlane_ is the easiest way to automate beta deployments and releases for your iOS and Android apps. To learn more, check out [fastlane.tools](https://fastlane.tools).
@@ -6,17 +6,23 @@ module Fastlane
6
6
  class NpmInstallAction < Action
7
7
  def self.run(params)
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
- FastlaneCore::CommandExecutor.execute(command: 'rm -rf ../node_modules 2> /dev/null',
10
- print_command: FastlaneCore::Globals.verbose?,
11
- print_all: FastlaneCore::Globals.verbose?)
12
-
9
+ if params[:fresh]
10
+ UI.important('Deleting node modules and installing packages')
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",
16
+ print_command: FastlaneCore::Globals.verbose?,
17
+ print_all: FastlaneCore::Globals.verbose?)
18
+ end
19
+
20
+
13
21
  other_action.npm_run(
14
22
  script: 'install',
15
23
  step_name: params[:step_name],
16
24
  arguments: params[:arguments]
17
25
  )
18
-
19
- other_action.npm_post_install if params[:post_install_after]
20
26
  end
21
27
 
22
28
  def self.description
@@ -44,7 +50,7 @@ module Fastlane
44
50
  optional: true,
45
51
  type: String),
46
52
 
47
- FastlaneCore::ConfigItem.new(key: :clean,
53
+ FastlaneCore::ConfigItem.new(key: :fresh,
48
54
  default_value: false,
49
55
  description: "Deletes node_modules folder",
50
56
  optional: true,
@@ -55,12 +61,6 @@ module Fastlane
55
61
  description: "Script arguments",
56
62
  optional: true,
57
63
  type: Array),
58
-
59
- FastlaneCore::ConfigItem.new(key: :post_install_after,
60
- default_value: false,
61
- description: "Run postinstall script right after",
62
- optional: true,
63
- type: Boolean),
64
64
  ]
65
65
  end
66
66
 
@@ -5,15 +5,19 @@ module Fastlane
5
5
  module Actions
6
6
  class NpmLintAction < Action
7
7
  def self.run(params)
8
+ arguments = []
9
+ arguments = ['--fix'] if params[:fix]
10
+ arguments.concat params[:arguments]
11
+
8
12
  other_action.npm_run(
9
13
  script: 'lint',
10
14
  step_name: params[:step_name],
11
- arguments: params[:arguments]
15
+ arguments: arguments
12
16
  )
13
17
  end
14
18
 
15
19
  def self.description
16
- "A very simple plugin to run npm scripts"
20
+ "Runs lint script"
17
21
  end
18
22
 
19
23
  def self.authors
@@ -37,6 +41,12 @@ module Fastlane
37
41
  optional: true,
38
42
  type: String),
39
43
 
44
+ FastlaneCore::ConfigItem.new(key: :fix,
45
+ default_value: false,
46
+ description: "Run postinstall script right after",
47
+ optional: true,
48
+ type: Boolean),
49
+
40
50
  FastlaneCore::ConfigItem.new(key: :arguments,
41
51
  default_value: [],
42
52
  description: "Script arguments",
@@ -5,8 +5,10 @@ module Fastlane
5
5
  module Actions
6
6
  class NpmRunAction < Action
7
7
  def self.run(params)
8
+ UI.message(params[:step_name])
9
+
8
10
  command = ['npm', 'run', params[:script]]
9
- command = ['npm', params[:script]] if ['install', 'test'].include? params[:script]
11
+ command = ['npm', params[:script]] if ['install', 'test', 'start'].include? params[:script]
10
12
 
11
13
  command.concat params[:arguments]
12
14
 
@@ -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.2.0"
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.2.0
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