licensed 2.3.2 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/release.yml +13 -5
- data/.github/workflows/test.yml +26 -1
- data/.gitignore +2 -0
- data/CHANGELOG.md +7 -1
- data/CONTRIBUTING.md +1 -1
- data/README.md +11 -10
- data/docs/sources/composer.md +14 -0
- data/lib/licensed/sources.rb +1 -0
- data/lib/licensed/sources/composer.rb +61 -0
- data/lib/licensed/version.rb +1 -1
- data/script/source-setup/cabal +3 -2
- data/script/source-setup/composer +38 -0
- metadata +5 -3
- data/.travis.yml +0 -126
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4578c64f9787f2894b6366165f1a1075f61ac7eb
|
4
|
+
data.tar.gz: 34ffddfaa1572948bce8bc116a5cfd093c685a13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c9861f9d076050e389843122baeb96501f9a53e5252309576512e102fdef4f1dc7196593c66254e30a793c734a0127b53942215366a78e6f7444e04bffe9e27
|
7
|
+
data.tar.gz: 51880d49fca93099ee44997b2878c29d7ed25bc88d221439fcf73039a9728ee6079d0843fd90a615ffb21f6871ce9dadd310765c3a98799e13e81138630bf7fd
|
@@ -86,25 +86,33 @@ jobs:
|
|
86
86
|
needs: [create_release]
|
87
87
|
|
88
88
|
steps:
|
89
|
-
-
|
89
|
+
- name: Download linux package
|
90
|
+
uses: actions/download-artifact@master
|
90
91
|
with:
|
91
92
|
name: licensed-${{github.event.ref}}-linux-x64.tar.gz
|
92
|
-
-
|
93
|
+
- name: Download macOS package
|
94
|
+
uses: actions/download-artifact@master
|
93
95
|
with:
|
94
96
|
name: licensed-${{github.event.ref}}-darwin-x64.tar.gz
|
95
97
|
|
96
|
-
- name: Publish to GitHub Release
|
98
|
+
- name: Publish packages to GitHub Release
|
97
99
|
uses: Roang-zero1/github-upload-release-artifacts-action@v2.0.0
|
98
100
|
with:
|
99
101
|
args: licensed-${{github.event.ref}}-linux-x64.tar.gz licensed-${{github.event.ref}}-darwin-x64.tar.gz
|
100
102
|
env:
|
101
103
|
GITHUB_TOKEN: ${{secrets.API_AUTH_TOKEN}}
|
102
104
|
|
103
|
-
-
|
105
|
+
- name: Download gem
|
106
|
+
uses: actions/download-artifact@master
|
104
107
|
with:
|
105
108
|
name: licensed-${{github.event.ref}}.gem
|
109
|
+
|
110
|
+
- name: Set up Ruby 2.6
|
111
|
+
uses: actions/setup-ruby@v1
|
112
|
+
with:
|
113
|
+
version: 2.6.x
|
106
114
|
|
107
|
-
- name: Publish to RubyGems
|
115
|
+
- name: Publish gem to RubyGems
|
108
116
|
run: |
|
109
117
|
mkdir -p $HOME/.gem
|
110
118
|
touch $HOME/.gem/credentials
|
data/.github/workflows/test.yml
CHANGED
@@ -2,7 +2,10 @@ name: Test
|
|
2
2
|
|
3
3
|
on:
|
4
4
|
push:
|
5
|
-
|
5
|
+
branches:
|
6
|
+
- "*"
|
7
|
+
tags:
|
8
|
+
- "!*"
|
6
9
|
|
7
10
|
jobs:
|
8
11
|
bower:
|
@@ -205,3 +208,25 @@ jobs:
|
|
205
208
|
run: script/source-setup/pipenv
|
206
209
|
- name: Run tests
|
207
210
|
run: script/test pipenv
|
211
|
+
|
212
|
+
composer:
|
213
|
+
runs-on: ubuntu-latest
|
214
|
+
strategy:
|
215
|
+
matrix:
|
216
|
+
php: [ '5.6', '7.1', '7.2', '7.3' ]
|
217
|
+
steps:
|
218
|
+
- uses: actions/checkout@master
|
219
|
+
- name: Setup php
|
220
|
+
uses: nanasess/setup-php@v1.0.2
|
221
|
+
with:
|
222
|
+
php-version: ${{ matrix.php }}
|
223
|
+
- name: Set up Ruby
|
224
|
+
uses: actions/setup-ruby@v1
|
225
|
+
with:
|
226
|
+
version: 2.6.x
|
227
|
+
- name: Bootstrap
|
228
|
+
run: script/bootstrap
|
229
|
+
- name: Set up fixtures
|
230
|
+
run: script/source-setup/composer
|
231
|
+
- name: Run tests
|
232
|
+
run: script/test composer
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## 2.4.0
|
10
|
+
2019-09-15
|
11
|
+
|
12
|
+
### Added
|
13
|
+
- Composer source for PHP (https://github.com/github/licensed/pull/182)
|
14
|
+
|
9
15
|
## 2.3.2
|
10
16
|
2019-08-26
|
11
17
|
|
@@ -208,4 +214,4 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
208
214
|
|
209
215
|
Initial release :tada:
|
210
216
|
|
211
|
-
[Unreleased]: https://github.com/github/licensed/compare/2.
|
217
|
+
[Unreleased]: https://github.com/github/licensed/compare/2.4.0...HEAD
|
data/CONTRIBUTING.md
CHANGED
@@ -34,7 +34,7 @@ Pull requests that include a new dependency source must also
|
|
34
34
|
- Include [documentation](docs/sources) for the new source and update the [documented source list](README.md#sources).
|
35
35
|
- Add a [setup script](script/source-setup) if needed.
|
36
36
|
- Include [tests](test/source) and [test fixtures](test/fixtures) needed to verify the source in CI.
|
37
|
-
- Add a CI job to [.
|
37
|
+
- Add a CI job to [.github/workflows/test.yml](.github/workflows/test.yml).
|
38
38
|
|
39
39
|
## Releasing
|
40
40
|
If you are the current maintainer of this gem:
|
data/README.md
CHANGED
@@ -79,16 +79,17 @@ See the [configuration file documentation](./docs/configuration.md) for more det
|
|
79
79
|
### Sources
|
80
80
|
|
81
81
|
Dependencies will be automatically detected for all of the following sources by default.
|
82
|
-
1. [Bower
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
82
|
+
1. [Bower](./docs/sources/bower.md)
|
83
|
+
1. [Bundler](./docs/sources/bundler.md)
|
84
|
+
1. [Cabal](./docs/sources/cabal.md)
|
85
|
+
1. [Composer](./docs/sources/composer.md)
|
86
|
+
1. [Go](./docs/sources/go.md)
|
87
|
+
1. [Go Dep (dep)](./docs/sources/dep.md)
|
88
|
+
1. [Manifest lists (manifests)](./docs/sources/manifests.md)
|
89
|
+
1. [NPM](./docs/sources/npm.md)
|
90
|
+
1. [Pip](./docs/sources/pip.md)
|
91
|
+
1. [Pipenv](./docs/sources/pipenv.md)
|
92
|
+
1. [Git Submodules (git_submodule)](./docs/sources/git_submodule.md)
|
92
93
|
|
93
94
|
You can disable any of them in the configuration file:
|
94
95
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Composer
|
2
|
+
|
3
|
+
The composer source will detect dependencies when php is available, a `composer.lock` file is found at an apps `source_path`, and a composer application file is found.
|
4
|
+
|
5
|
+
It enumerates dependencies and metadata by parsing `composer.lock` files for for dependency metadata and running `php <composer application file> show --format json --path` to obtain local dependency paths on disk.
|
6
|
+
|
7
|
+
### Composer application file
|
8
|
+
|
9
|
+
The default composer application file location is `<repository root>/composer.phar`. To specify a custom composer file location, use the `composer.application_path` configuration setting.
|
10
|
+
|
11
|
+
```yml
|
12
|
+
composer:
|
13
|
+
application_path: "/path/to/composer"
|
14
|
+
```
|
data/lib/licensed/sources.rb
CHANGED
@@ -5,6 +5,7 @@ module Licensed
|
|
5
5
|
require "licensed/sources/bower"
|
6
6
|
require "licensed/sources/bundler"
|
7
7
|
require "licensed/sources/cabal"
|
8
|
+
require "licensed/sources/composer"
|
8
9
|
require "licensed/sources/dep"
|
9
10
|
require "licensed/sources/git_submodule"
|
10
11
|
require "licensed/sources/go"
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "json"
|
3
|
+
|
4
|
+
module Licensed
|
5
|
+
module Sources
|
6
|
+
class Composer < Source
|
7
|
+
DEFAULT_COMPOSER_APPLICATON_PATH = "composer.phar"
|
8
|
+
|
9
|
+
def enabled?
|
10
|
+
return false unless Licensed::Shell.tool_available?("php")
|
11
|
+
File.exist?(composer_lock) && File.exist?(composer_application_path)
|
12
|
+
end
|
13
|
+
|
14
|
+
def enumerate_dependencies
|
15
|
+
packages.map do |package|
|
16
|
+
Dependency.new(
|
17
|
+
name: package["name"],
|
18
|
+
version: package["version"],
|
19
|
+
path: package_paths[package["name"]],
|
20
|
+
metadata: {
|
21
|
+
"type" => Composer.type,
|
22
|
+
"name" => package["name"],
|
23
|
+
"summary" => package["description"],
|
24
|
+
"homepage" => package["homepage"]
|
25
|
+
}
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def packages
|
31
|
+
JSON.parse(File.read(composer_lock))["packages"]
|
32
|
+
end
|
33
|
+
|
34
|
+
# Returns the output from running `php composer.phar` to get package metadata
|
35
|
+
def package_paths
|
36
|
+
return @package_paths if defined?(@package_paths)
|
37
|
+
|
38
|
+
@package_paths = begin
|
39
|
+
output = Licensed::Shell.execute("php", composer_application_path, "show", "--format", "json", "--path", allow_failure: true)
|
40
|
+
return {} if output.to_s.empty?
|
41
|
+
|
42
|
+
path_json = JSON.parse(output)
|
43
|
+
return {} unless path_json["installed"]
|
44
|
+
|
45
|
+
path_json["installed"].each_with_object({}) do |package, hsh|
|
46
|
+
hsh[package["name"]] = package["path"]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def composer_application_path
|
52
|
+
setting = @config.dig("composer", "application_path") || DEFAULT_COMPOSER_APPLICATON_PATH
|
53
|
+
File.expand_path(setting, @config.pwd)
|
54
|
+
end
|
55
|
+
|
56
|
+
def composer_lock
|
57
|
+
@config.pwd.join("composer.lock")
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/lib/licensed/version.rb
CHANGED
data/script/source-setup/cabal
CHANGED
@@ -6,6 +6,8 @@ if [ -z "$(which cabal)" ]; then
|
|
6
6
|
exit 127
|
7
7
|
fi
|
8
8
|
|
9
|
+
cabal --version
|
10
|
+
|
9
11
|
# setup test fixtures
|
10
12
|
BASE_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
11
13
|
cd $BASE_PATH/test/fixtures/cabal
|
@@ -14,5 +16,4 @@ if [ "$1" == "-f" ]; then
|
|
14
16
|
find . -not -regex "\.*" -and -not -path "*app*" -print0 | xargs -0 rm -rf
|
15
17
|
fi
|
16
18
|
|
17
|
-
cabal update
|
18
|
-
cabal new-build
|
19
|
+
cabal new-build || (cabal update && cabal install)
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -e
|
3
|
+
|
4
|
+
if [ -z "$(which php)" ]; then
|
5
|
+
echo "A local php installation is required for php development." >&2
|
6
|
+
exit 127
|
7
|
+
fi
|
8
|
+
|
9
|
+
# setup test fixtures
|
10
|
+
BASE_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
11
|
+
cd $BASE_PATH/test/fixtures/composer
|
12
|
+
|
13
|
+
if [ "$1" == "-f" ]; then
|
14
|
+
find . -not -regex "\.*" -and -not -name "composer\.json" -print0 | xargs -0 rm -rf
|
15
|
+
fi
|
16
|
+
|
17
|
+
if [ ! -f "composer.phar" ]; then
|
18
|
+
EXPECTED_SIGNATURE="$(curl -s https://composer.github.io/installer.sig)"
|
19
|
+
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
20
|
+
ACTUAL_SIGNATURE="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
|
21
|
+
|
22
|
+
if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]; then
|
23
|
+
>&2 echo 'ERROR: Invalid installer signature'
|
24
|
+
rm composer-setup.php
|
25
|
+
exit 1
|
26
|
+
fi
|
27
|
+
|
28
|
+
php composer-setup.php
|
29
|
+
RESULT=$?
|
30
|
+
rm composer-setup.php
|
31
|
+
|
32
|
+
if [ $RESULT -ne 0 ]; then
|
33
|
+
>&2 echo 'ERROR: composer.phar installation failed'
|
34
|
+
exit $RESULT
|
35
|
+
fi
|
36
|
+
fi
|
37
|
+
|
38
|
+
php composer.phar install
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: licensed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: licensee
|
@@ -198,7 +198,6 @@ files:
|
|
198
198
|
- ".licensed.yml"
|
199
199
|
- ".rubocop.yml"
|
200
200
|
- ".ruby-version"
|
201
|
-
- ".travis.yml"
|
202
201
|
- CHANGELOG.md
|
203
202
|
- CODE_OF_CONDUCT.md
|
204
203
|
- CONTRIBUTING.md
|
@@ -216,6 +215,7 @@ files:
|
|
216
215
|
- docs/sources/bower.md
|
217
216
|
- docs/sources/bundler.md
|
218
217
|
- docs/sources/cabal.md
|
218
|
+
- docs/sources/composer.md
|
219
219
|
- docs/sources/dep.md
|
220
220
|
- docs/sources/git_submodule.md
|
221
221
|
- docs/sources/go.md
|
@@ -249,6 +249,7 @@ files:
|
|
249
249
|
- lib/licensed/sources/bower.rb
|
250
250
|
- lib/licensed/sources/bundler.rb
|
251
251
|
- lib/licensed/sources/cabal.rb
|
252
|
+
- lib/licensed/sources/composer.rb
|
252
253
|
- lib/licensed/sources/dep.rb
|
253
254
|
- lib/licensed/sources/git_submodule.rb
|
254
255
|
- lib/licensed/sources/go.rb
|
@@ -273,6 +274,7 @@ files:
|
|
273
274
|
- script/source-setup/bower
|
274
275
|
- script/source-setup/bundler
|
275
276
|
- script/source-setup/cabal
|
277
|
+
- script/source-setup/composer
|
276
278
|
- script/source-setup/git_submodule
|
277
279
|
- script/source-setup/go
|
278
280
|
- script/source-setup/npm
|
data/.travis.yml
DELETED
@@ -1,126 +0,0 @@
|
|
1
|
-
install: ./script/bootstrap
|
2
|
-
|
3
|
-
matrix:
|
4
|
-
include:
|
5
|
-
# lint and build
|
6
|
-
- language: ruby
|
7
|
-
rvm: 2.4.0
|
8
|
-
script: bundle exec rake rubocop build
|
9
|
-
env: NAME="Lint and Build"
|
10
|
-
|
11
|
-
# non-source tests
|
12
|
-
- language: ruby
|
13
|
-
rvm: 2.4.0
|
14
|
-
script: ./script/test core
|
15
|
-
env: NAME="Core"
|
16
|
-
|
17
|
-
# go 1.7 tests
|
18
|
-
- language: go
|
19
|
-
go: "1.7.x"
|
20
|
-
before_script: ./script/source-setup/go
|
21
|
-
script: ./script/test go
|
22
|
-
env: NAME="go 1.7.x"
|
23
|
-
|
24
|
-
# go 1.10 tests
|
25
|
-
- language: go
|
26
|
-
go: "1.10.x"
|
27
|
-
before_script: ./script/source-setup/go
|
28
|
-
script: ./script/test go
|
29
|
-
env: NAME="go 1.10.x"
|
30
|
-
|
31
|
-
- language: go
|
32
|
-
go: "1.11.1"
|
33
|
-
before_script: ./script/source-setup/go
|
34
|
-
script: ./script/test go
|
35
|
-
env: NAME="go 1.11.1"
|
36
|
-
|
37
|
-
# dep tests
|
38
|
-
- language: go
|
39
|
-
go: "1.10.x"
|
40
|
-
before_script: ./script/source-setup/go
|
41
|
-
script: ./script/test dep
|
42
|
-
env: NAME="go dep"
|
43
|
-
|
44
|
-
# cabal tests
|
45
|
-
- language: haskell
|
46
|
-
ghc: "8.2"
|
47
|
-
before_script: ./script/source-setup/cabal
|
48
|
-
script: ./script/test cabal
|
49
|
-
env: NAME="cabal"
|
50
|
-
|
51
|
-
# npm tests
|
52
|
-
- language: node_js
|
53
|
-
node_js: "8"
|
54
|
-
before_script: ./script/source-setup/npm
|
55
|
-
script: ./script/test npm
|
56
|
-
env: NAME="npm 8"
|
57
|
-
|
58
|
-
- language: node_js
|
59
|
-
node_js: "10"
|
60
|
-
before_script: ./script/source-setup/npm
|
61
|
-
script: ./script/test npm
|
62
|
-
env: NAME="npm 10"
|
63
|
-
|
64
|
-
- language: node_js
|
65
|
-
node_js: "12"
|
66
|
-
before_script: ./script/source-setup/npm
|
67
|
-
script: ./script/test npm
|
68
|
-
env: NAME="npm 12"
|
69
|
-
|
70
|
-
# bower tests
|
71
|
-
- language: node_js
|
72
|
-
node_js: "8"
|
73
|
-
before_script:
|
74
|
-
- npm install -g bower
|
75
|
-
- ./script/source-setup/bower
|
76
|
-
script: ./script/test bower
|
77
|
-
env: NAME="bower"
|
78
|
-
|
79
|
-
# bundler tests
|
80
|
-
- language: ruby
|
81
|
-
rvm: 2.4.0
|
82
|
-
before_script: ./script/source-setup/bundler
|
83
|
-
script: ./script/test bundler
|
84
|
-
env: NAME="bundler"
|
85
|
-
|
86
|
-
# manifest tests
|
87
|
-
- language: ruby
|
88
|
-
rvm: 2.4.0
|
89
|
-
script: ./script/test manifest
|
90
|
-
env: NAME="manifest"
|
91
|
-
|
92
|
-
# python 2.7 tests
|
93
|
-
- language: python
|
94
|
-
python: 2.7
|
95
|
-
before_script: ./script/source-setup/pip
|
96
|
-
script: ./script/test pip
|
97
|
-
env: NAME="pip"
|
98
|
-
|
99
|
-
# python 3.6 tests
|
100
|
-
- language: python
|
101
|
-
python: 3.6
|
102
|
-
before_script: ./script/source-setup/pip
|
103
|
-
script: ./script/test pip
|
104
|
-
env: NAME="pip"
|
105
|
-
|
106
|
-
- language: python
|
107
|
-
python: 3.6
|
108
|
-
before_script:
|
109
|
-
- pip install pipenv
|
110
|
-
- ./script/source-setup/pipenv
|
111
|
-
script: ./script/test pipenv
|
112
|
-
env: NAME="pipenv"
|
113
|
-
|
114
|
-
- language: ruby
|
115
|
-
rvm: 2.4.0
|
116
|
-
before_script: ./script/source-setup/git_submodule
|
117
|
-
script: ./script/test git_submodule
|
118
|
-
env: NAME="git_submodule"
|
119
|
-
|
120
|
-
- language: java
|
121
|
-
before_script: ./test/fixtures/gradle/gradlew --quiet --version
|
122
|
-
script: ./script/test gradle
|
123
|
-
env: NAME="gradle"
|
124
|
-
|
125
|
-
notifications:
|
126
|
-
disable: true
|