squared 0.6.5 → 0.6.7
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 +4 -4
- data/CHANGELOG.md +98 -0
- data/README.md +81 -27
- data/lib/squared/common/format.rb +5 -1
- data/lib/squared/common/shell.rb +7 -2
- data/lib/squared/config.rb +12 -8
- data/lib/squared/version.rb +1 -1
- data/lib/squared/workspace/application.rb +16 -22
- data/lib/squared/workspace/project/base.rb +49 -35
- data/lib/squared/workspace/project/docker.rb +53 -58
- data/lib/squared/workspace/project/git.rb +60 -44
- data/lib/squared/workspace/project/node.rb +42 -37
- data/lib/squared/workspace/project/python.rb +118 -103
- data/lib/squared/workspace/project/ruby.rb +203 -126
- data/lib/squared/workspace/project/support/class.rb +26 -8
- data/lib/squared/workspace/project/support/optionpartition.rb +93 -42
- data/lib/squared/workspace/series.rb +9 -5
- data/lib/squared/workspace.rb +4 -3
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 73203f27b80dac94c1a96127b27afeb60d939e27adc578724264c9db26380ac0
|
|
4
|
+
data.tar.gz: 308784d8e94aefcb5b2da4b75e6614bb94e6d1a5d66fc4754d7e72072655e588
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1f477ca8a24e892a052a2375283fbbf08af5cfc4714eaadba8c9465d59ad20e5d9bc6ae6cd624ff09780d62831cf2355918f01a851bbe09c52861d45479b1b6b
|
|
7
|
+
data.tar.gz: 289b353519bd3d5d7b13eb6f190428c74d9f4975e176094e65ba052a1febf28b2d719210efae09768cf0c3729d03b944bfd2344bde2025705cf2b0627d6bdfeb
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,95 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.6.7] - 2025-12-07
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Docker command options were updated to 29.1.
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Bundler did not recognize sub-commands options.
|
|
12
|
+
- Project graph did not use built-in comparison method.
|
|
13
|
+
|
|
14
|
+
## [0.5.19] - 2025-12-07
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- See `0.4.33`.
|
|
19
|
+
|
|
20
|
+
## [0.4.33] - 2025-12-07
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
|
|
24
|
+
- Ruby attribute setter gemdir for copy method was created.
|
|
25
|
+
- Project inline run executables binary path are replaced with global alias.
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
|
|
29
|
+
- Workspace class Series created non-existent keys when queried.
|
|
30
|
+
- Application class did not support changing base Project class.
|
|
31
|
+
- Git command rev action build did not check build? method.
|
|
32
|
+
- Python command build action python did not use outdir option.
|
|
33
|
+
|
|
34
|
+
## [0.6.6] - 2025-11-30
|
|
35
|
+
|
|
36
|
+
### Added
|
|
37
|
+
|
|
38
|
+
- Python application method with stored command options was created.
|
|
39
|
+
- Ruby task depend can install binstubs through ENV.
|
|
40
|
+
- Project application methods can throw exceptions to halt processing.
|
|
41
|
+
- Project application methods can read multiple files from STDIN.
|
|
42
|
+
- Ruby attribute setter gemdir for copy method was created.
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- Project base method semgte? optional argument compares with RUBY_VERSION.
|
|
47
|
+
- Project task branch in a single workspace displays all branches.
|
|
48
|
+
- Ruby application method first argument can be used as a symbol flag.
|
|
49
|
+
- Ruby task copy does not write into protected system directories.
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
|
|
53
|
+
- RuboCop did not include config file when default was not found.
|
|
54
|
+
- RuboCop path globs are not expanded except for choice selections.
|
|
55
|
+
- Ruby target application file appeared before the delimiter.
|
|
56
|
+
- JoinSet can keep arguments with a duplicate value.
|
|
57
|
+
- OptionPartition did not quarantine options added from extras.
|
|
58
|
+
- Python method pyprojectfile did not always return nil.
|
|
59
|
+
|
|
60
|
+
## [0.5.18] - 2025-11-25
|
|
61
|
+
|
|
62
|
+
### Fixed
|
|
63
|
+
|
|
64
|
+
- See `0.5.18`.
|
|
65
|
+
|
|
66
|
+
## [0.4.32] - 2025-11-25
|
|
67
|
+
|
|
68
|
+
### Fixed
|
|
69
|
+
|
|
70
|
+
- Git method commit did not include --dry-run with add command.
|
|
71
|
+
- JoinSet method include? did not always search to start of delimiter.
|
|
72
|
+
- Config viewer did not check for a readable package registry document.
|
|
73
|
+
- Powershell executable did not check for alternate path location.
|
|
74
|
+
|
|
75
|
+
## [0.5.17] - 2025-11-22
|
|
76
|
+
|
|
77
|
+
### Fixed
|
|
78
|
+
|
|
79
|
+
- See `0.4.31`.
|
|
80
|
+
|
|
81
|
+
## [0.4.31] - 2025-11-22
|
|
82
|
+
|
|
83
|
+
### Changed
|
|
84
|
+
|
|
85
|
+
- Ruby command flag is given precedence to a program file.
|
|
86
|
+
|
|
87
|
+
### Fixed
|
|
88
|
+
|
|
89
|
+
- Project change directory context did not always restore when raised.
|
|
90
|
+
- Ruby file method attributes did not always return nil.
|
|
91
|
+
- JoinSet with a delimiter did not report correct size.
|
|
92
|
+
|
|
3
93
|
## [0.6.5] - 2025-11-18
|
|
4
94
|
|
|
5
95
|
### Added
|
|
@@ -1434,12 +1524,17 @@
|
|
|
1434
1524
|
|
|
1435
1525
|
- Changelog was created.
|
|
1436
1526
|
|
|
1527
|
+
[0.6.7]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.7
|
|
1528
|
+
[0.6.6]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.6
|
|
1437
1529
|
[0.6.5]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.5
|
|
1438
1530
|
[0.6.4]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.4
|
|
1439
1531
|
[0.6.3]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.3
|
|
1440
1532
|
[0.6.2]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.2
|
|
1441
1533
|
[0.6.1]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.1
|
|
1442
1534
|
[0.6.0]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.0
|
|
1535
|
+
[0.5.19]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.19
|
|
1536
|
+
[0.5.18]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.18
|
|
1537
|
+
[0.5.17]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.17
|
|
1443
1538
|
[0.5.16]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.16
|
|
1444
1539
|
[0.5.15]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.15
|
|
1445
1540
|
[0.5.14]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.14
|
|
@@ -1457,6 +1552,9 @@
|
|
|
1457
1552
|
[0.5.2]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.2-ruby
|
|
1458
1553
|
[0.5.1]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.1-ruby
|
|
1459
1554
|
[0.5.0]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.0-ruby
|
|
1555
|
+
[0.4.33]: https://github.com/anpham6/squared-ruby/releases/tag/v0.4.33
|
|
1556
|
+
[0.4.32]: https://github.com/anpham6/squared-ruby/releases/tag/v0.4.32
|
|
1557
|
+
[0.4.31]: https://github.com/anpham6/squared-ruby/releases/tag/v0.4.31
|
|
1460
1558
|
[0.4.30]: https://github.com/anpham6/squared-ruby/releases/tag/v0.4.30
|
|
1461
1559
|
[0.4.29]: https://github.com/anpham6/squared-ruby/releases/tag/v0.4.29
|
|
1462
1560
|
[0.4.28]: https://github.com/anpham6/squared-ruby/releases/tag/v0.4.28
|
data/README.md
CHANGED
|
@@ -24,23 +24,9 @@ The range chart indicates the latest Ruby tested against at the time of release.
|
|
|
24
24
|
gem install squared
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
### Optional
|
|
28
|
-
|
|
29
|
-
* [Repo](https://source.android.com/docs/setup/reference/repo)
|
|
30
|
-
* https://github.com/anpham6/squared-repo
|
|
31
|
-
* Python 3.6
|
|
32
|
-
* Not compatible with Windows
|
|
33
|
-
|
|
34
|
-
```sh
|
|
35
|
-
mkdir -p ~/.bin
|
|
36
|
-
PATH="${HOME}/.bin:${PATH}"
|
|
37
|
-
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
|
|
38
|
-
chmod a+rx ~/.bin/repo
|
|
39
|
-
```
|
|
40
|
-
|
|
41
27
|
## Example - Rakefile
|
|
42
28
|
|
|
43
|
-
Projects from any accessible folder can be added relative to the parent directory
|
|
29
|
+
Projects from any accessible folder can be added relative to the parent directory or absolutely. Missing projects will simply be excluded from the task runner.
|
|
44
30
|
|
|
45
31
|
```ruby
|
|
46
32
|
require "squared"
|
|
@@ -56,14 +42,6 @@ require "squared/app" # All workspace related mod
|
|
|
56
42
|
|
|
57
43
|
# NODE_ENV = production
|
|
58
44
|
|
|
59
|
-
# REPO_ROOT = /workspaces |
|
|
60
|
-
# REPO_HOME = /workspaces/squared | Dir.pwd
|
|
61
|
-
# rake = /workspaces/squared/Rakefile | main?
|
|
62
|
-
# OR
|
|
63
|
-
# REPO_ROOT = /workspaces | Dir.pwd
|
|
64
|
-
# rake = /workspaces/Rakefile |
|
|
65
|
-
# REPO_HOME = /workspaces/squared | main: "squared"
|
|
66
|
-
|
|
67
45
|
# pathname = /workspaces/pathname
|
|
68
46
|
# optparse = /workspaces/optparse
|
|
69
47
|
# log = /workspaces/logger
|
|
@@ -82,7 +60,6 @@ Workspace::Application.load_ref('lib/squared/workspace/project', gem: 'squared')
|
|
|
82
60
|
Workspace::Application
|
|
83
61
|
.new(Dir.pwd, main: "squared") # Dir.pwd? (main? is implicitly basename)
|
|
84
62
|
.banner("group", "project", styles: ["yellow", "black"], border: "bold") # name | project | path | ref | group? | parent? | version?
|
|
85
|
-
.repo("https://github.com/anpham6/squared-repo", "nightly", script: ["build:dev", "prod"], install: "#{ENV["HOME"]}/.bin", ref: :node) # Repo (optional)
|
|
86
63
|
.run("rake install", ref: :ruby)
|
|
87
64
|
.depend(false, group: "default")
|
|
88
65
|
.clean("rake clean", group: "default")
|
|
@@ -92,7 +69,9 @@ Workspace::Application
|
|
|
92
69
|
"CFLAGS" => "-fPIC -O1"
|
|
93
70
|
})
|
|
94
71
|
.add("optparse", doc: "rake rdoc", gemspec: "optparse.gemspec", group: "default") # Uses bundler/gem_tasks (without C extensions)
|
|
95
|
-
.add("logger", copy: { from: "lib", glob: "**/*.rb", into: "
|
|
72
|
+
.add("logger", copy: { from: "lib", glob: "**/*.rb", into: "/home/user/.local/gem/ruby/3.4.0/gems/logger-1.7.0" }, clean: ["tmp/"]) do # autodetect: true | "rvm" | "rbenv" | "asdf" | "bundler"
|
|
73
|
+
self.gemdir = "/home/user/.local/gem/ruby/3.4.0/gems/logger-1.7.0" # Default for "into"
|
|
74
|
+
end
|
|
96
75
|
.add("e-mc", "emc", copy: { from: "publish", scope: "@e-mc", also: [:pir, "squared-express/"] }, ref: :node) # Node
|
|
97
76
|
.add("pi-r", "pir", copy: { from: "publish", scope: "@pi-r" }, clean: ["publish/**/*.js", "tmp/"]) # Trailing slash required for directories
|
|
98
77
|
.add("pi-r2", "pir2", copy: { from: :npm, also: %i[squared express], files: ["LICENSE", ["README.md.ruby", "README.md"]] }) # Uses dist files from NPM package spec
|
|
@@ -733,7 +712,7 @@ GIT_AUTOSTASH_${NAME}=0 # rebase (project only)
|
|
|
733
712
|
|
|
734
713
|
### Docker
|
|
735
714
|
|
|
736
|
-
* Version: [
|
|
715
|
+
* Version: [29.1](https://docs.docker.com/engine/release-notes/29)
|
|
737
716
|
|
|
738
717
|
```sh
|
|
739
718
|
DOCKER_OPTIONS=q,no-cache # all
|
|
@@ -780,7 +759,37 @@ Workspace::Application
|
|
|
780
759
|
|
|
781
760
|
### Repo
|
|
782
761
|
|
|
783
|
-
|
|
762
|
+
* [Repo](https://source.android.com/docs/setup/reference/repo)
|
|
763
|
+
* https://github.com/anpham6/squared-repo
|
|
764
|
+
* Python 3.6
|
|
765
|
+
* Not compatible with Windows
|
|
766
|
+
|
|
767
|
+
```sh
|
|
768
|
+
mkdir -p ~/.bin
|
|
769
|
+
PATH="${HOME}/.bin:${PATH}"
|
|
770
|
+
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
|
|
771
|
+
chmod a+rx ~/.bin/repo
|
|
772
|
+
```
|
|
773
|
+
|
|
774
|
+
```ruby
|
|
775
|
+
# REPO_ROOT = /workspaces |
|
|
776
|
+
# REPO_HOME = /workspaces/squared | Dir.pwd
|
|
777
|
+
# rake = /workspaces/squared/Rakefile | main?
|
|
778
|
+
#
|
|
779
|
+
# OR
|
|
780
|
+
#
|
|
781
|
+
# REPO_ROOT = /workspaces | Dir.pwd
|
|
782
|
+
# rake = /workspaces/Rakefile |
|
|
783
|
+
# REPO_HOME = /workspaces/squared | main: "squared"
|
|
784
|
+
|
|
785
|
+
Workspace::Application
|
|
786
|
+
.new(main: "squared")
|
|
787
|
+
.repo("https://github.com/anpham6/squared-repo", "nightly", script: ["build:dev", "prod"], install: "#{ENV["HOME"]}/.bin", ref: :node)
|
|
788
|
+
.add("squared", script: ["build:stage1", "build:stage2"])
|
|
789
|
+
.build
|
|
790
|
+
```
|
|
791
|
+
|
|
792
|
+
These global options also can target the application main suffix `${NAME}`. (e.g. *REPO_ROOT_SQUARED*)
|
|
784
793
|
|
|
785
794
|
```sh
|
|
786
795
|
REPO_ROOT # parent dir
|
|
@@ -801,6 +810,51 @@ REPO_Y # 0,1
|
|
|
801
810
|
REPO_TIMEOUT # confirm dialog (seconds)
|
|
802
811
|
```
|
|
803
812
|
|
|
813
|
+
Other similarly cloned `Repo` repositories can be managed remotely by setting the `REPO_ROOT` environment variable to the location.
|
|
814
|
+
|
|
815
|
+
### Project
|
|
816
|
+
|
|
817
|
+
Features can be enabled through ENV when calling global tasks such as through *CI/CD* automation (e.g. Repo).
|
|
818
|
+
|
|
819
|
+
#### Ruby
|
|
820
|
+
|
|
821
|
+
* Prefix: BUNDLE/GEM/RBS
|
|
822
|
+
|
|
823
|
+
| Command | Flag | ENV |
|
|
824
|
+
| :--------- | :-------- | :---------------------------------------------------------------- |
|
|
825
|
+
| depend | - | BINSTUBS=s JOBS=n |
|
|
826
|
+
| outdated | - | U|UPDATE=major|minor|patch ONLY_EXPLICIT DRY_RUN |
|
|
827
|
+
| gem | outdated | DOCUMENT=0,1 USER_INSTALL=0,1 |
|
|
828
|
+
| rbs | prototype | Y=0,1 |
|
|
829
|
+
|
|
830
|
+
#### Node
|
|
831
|
+
|
|
832
|
+
* Prefix: NPM/PNPM/YARN
|
|
833
|
+
|
|
834
|
+
| Command | Flag | ENV |
|
|
835
|
+
| :------------- | :------------- | :------------------------------------------------------- |
|
|
836
|
+
| depend | - | FORCE CI IGNORE_SCRIPTS |
|
|
837
|
+
| outdated | - | U|UPDATE=major|minor|patch DIFF DRY_RUN |
|
|
838
|
+
| publish | - | OTP=s TAG=s ACCESS=0,1,s DRY_RUN |
|
|
839
|
+
| depend package | * | PACAKGE_LOCK|LOCKFILE=0 NO_LOCKFILE=1 Y |
|
|
840
|
+
| npm pnpm | depend package | CPU=s OS=s LIBC=s |
|
|
841
|
+
| npm | package | SAVE IGNORE_SCRIPTS STRICT_PEER_DEPS |
|
|
842
|
+
| pnpm | depend | ALLOW_BUILD=s PUBLIC_HOIST_PATTERN=s |
|
|
843
|
+
| yarn | depend package | IGNORE_ENGINES=0 |
|
|
844
|
+
|
|
845
|
+
#### Python
|
|
846
|
+
|
|
847
|
+
* Prefix: PIP/POETRY
|
|
848
|
+
|
|
849
|
+
| Command | Flag | ENV |
|
|
850
|
+
| :--------- | :-------- | :---------------------------------------------------------------- |
|
|
851
|
+
| global | * | CACHE_DIR=0,s PROXY=s PYTHON=s COLOR=0 |
|
|
852
|
+
| depend | - | E|EDITABLE=0,s BUILD_ISOLATION=0 |
|
|
853
|
+
| outdated | - | U|UPDATE=major|minor|patch NOT_REQUIRED=0 L|LOCAL DRY_RUN |
|
|
854
|
+
| venv | exec | INTERACTIVE=0 |
|
|
855
|
+
| poetry | * | PROJECT=s |
|
|
856
|
+
| poetry | depend | NO_ROOT |
|
|
857
|
+
|
|
804
858
|
## LICENSE
|
|
805
859
|
|
|
806
860
|
BSD 3-Clause
|
|
@@ -219,6 +219,10 @@ module Squared
|
|
|
219
219
|
end
|
|
220
220
|
end
|
|
221
221
|
|
|
222
|
+
def log_warn(*args, **kwargs)
|
|
223
|
+
log_message(Logger::WARN, *args, **kwargs)
|
|
224
|
+
end
|
|
225
|
+
|
|
222
226
|
def log_console(*args, pipe: 1)
|
|
223
227
|
return if args.first == false && args.size == 1
|
|
224
228
|
|
|
@@ -266,7 +270,7 @@ module Squared
|
|
|
266
270
|
out = []
|
|
267
271
|
draw = lambda do |a, b|
|
|
268
272
|
ret = a + (b1 * (n + 2)) + b
|
|
269
|
-
|
|
273
|
+
return ret unless border
|
|
270
274
|
|
|
271
275
|
sub_style ret, border
|
|
272
276
|
end
|
data/lib/squared/common/shell.rb
CHANGED
|
@@ -83,7 +83,11 @@ module Squared
|
|
|
83
83
|
end
|
|
84
84
|
sep = unless flag.empty?
|
|
85
85
|
if flag[0] == '-'
|
|
86
|
-
flag[1] == '-'
|
|
86
|
+
if flag[1] == '-'
|
|
87
|
+
sep
|
|
88
|
+
else
|
|
89
|
+
merge ? '' : ' '
|
|
90
|
+
end
|
|
87
91
|
elsif flag.size == 1
|
|
88
92
|
pre = '-'
|
|
89
93
|
merge ? '' : ' '
|
|
@@ -146,7 +150,8 @@ module Squared
|
|
|
146
150
|
end
|
|
147
151
|
|
|
148
152
|
def shell_bin(name, env: true)
|
|
149
|
-
key = name.upcase
|
|
153
|
+
key = name.to_s.upcase
|
|
154
|
+
key = File.basename(key, '.*') if Rake::Win32.windows?
|
|
150
155
|
shell_quote((env && ENV["PATH_#{key}"]) || PATH[key] || PATH[key.to_sym] || name,
|
|
151
156
|
option: false, force: false, double: true)
|
|
152
157
|
end
|
data/lib/squared/config.rb
CHANGED
|
@@ -22,8 +22,8 @@ module Squared
|
|
|
22
22
|
nil
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
def link(project, main = project.dependfile
|
|
26
|
-
return unless project.enabled?
|
|
25
|
+
def link(project, main = project.dependfile&.basename, name = nil, **kwargs, &blk)
|
|
26
|
+
return unless project.enabled? && main
|
|
27
27
|
|
|
28
28
|
ret = new(main, name, project: project, **kwargs)
|
|
29
29
|
ret.instance_eval(&blk) if block_given?
|
|
@@ -87,7 +87,7 @@ module Squared
|
|
|
87
87
|
@required = true
|
|
88
88
|
project ? [project, 'missing'] : %w[name missing]
|
|
89
89
|
end
|
|
90
|
-
warn
|
|
90
|
+
warn log_warn(msg, subject: self.class, hint: hint)
|
|
91
91
|
end
|
|
92
92
|
|
|
93
93
|
def build
|
|
@@ -159,7 +159,7 @@ module Squared
|
|
|
159
159
|
end
|
|
160
160
|
|
|
161
161
|
def also(path, type = nil, name: nil, **kwargs)
|
|
162
|
-
return self
|
|
162
|
+
return self unless (file = basepath(path)).exist? && !@mime.frozen?
|
|
163
163
|
|
|
164
164
|
ext = mimetype file
|
|
165
165
|
type ||= ext
|
|
@@ -242,7 +242,7 @@ module Squared
|
|
|
242
242
|
opt_style(theme[:key], /\A((?~ : ))( : (?!undefined).+)\z/m),
|
|
243
243
|
opt_style(theme[:number], /\A((?~: ): )(-?[\d.]+)(\s*)\z/m, 2),
|
|
244
244
|
opt_style(theme[:string], /\A((?~: ): ")(.+)("\s*)\z/m, 2),
|
|
245
|
-
opt_style(theme[:hash], /\A((?~: ): \{)(.+)(}\s*)\z/m, 2),
|
|
245
|
+
opt_style(theme[:hash], /\A((?~: ): \{)(.+)(\}\s*)\z/m, 2),
|
|
246
246
|
opt_style(theme[:array], /\A((?~: ): \[)(.+)(\]\s*)\z/m, 2),
|
|
247
247
|
opt_style(theme[:boolean], /\A((?~: ): )(true|false)(\s*)\z/m, 2),
|
|
248
248
|
opt_style(theme[:value], /\A((?~: ): (?!undefined))([^"\[{].*)\z/m, 2)
|
|
@@ -287,7 +287,7 @@ module Squared
|
|
|
287
287
|
if stdin?
|
|
288
288
|
puts out.map!(&:last).join("\n")
|
|
289
289
|
else
|
|
290
|
-
out.map! { |
|
|
290
|
+
out.map! { |a, b| '%-*s : %s' % [pad, a, b] }
|
|
291
291
|
end
|
|
292
292
|
end
|
|
293
293
|
|
|
@@ -316,7 +316,9 @@ module Squared
|
|
|
316
316
|
end
|
|
317
317
|
|
|
318
318
|
def warning?
|
|
319
|
-
|
|
319
|
+
return true unless project
|
|
320
|
+
|
|
321
|
+
project.workspace.warning
|
|
320
322
|
end
|
|
321
323
|
|
|
322
324
|
def stdin?
|
|
@@ -341,7 +343,9 @@ module Squared
|
|
|
341
343
|
end
|
|
342
344
|
|
|
343
345
|
def basepath(*args)
|
|
344
|
-
|
|
346
|
+
return Pathname.pwd.join(*args) unless project
|
|
347
|
+
|
|
348
|
+
project.basepath(*args)
|
|
345
349
|
end
|
|
346
350
|
end
|
|
347
351
|
end
|
data/lib/squared/version.rb
CHANGED
|
@@ -191,15 +191,11 @@ module Squared
|
|
|
191
191
|
end
|
|
192
192
|
series.populate(proj, **kwargs)
|
|
193
193
|
end
|
|
194
|
-
|
|
195
194
|
Application.kind_project.each { |obj| obj.populate(self, **kwargs) }
|
|
196
195
|
@extensions.uniq.each { |ext| __send__(ext, **kwargs) }
|
|
197
|
-
|
|
198
196
|
series.build(**kwargs)
|
|
199
197
|
__build__(**kwargs)
|
|
200
|
-
|
|
201
198
|
yield self if block_given?
|
|
202
|
-
|
|
203
199
|
__chain__(**kwargs)
|
|
204
200
|
@closed = true
|
|
205
201
|
self
|
|
@@ -240,18 +236,16 @@ module Squared
|
|
|
240
236
|
|
|
241
237
|
def chain(task, *action, project: nil, step: 0, with: nil, before: nil, after: nil, sync: false,
|
|
242
238
|
group: @group, ref: @ref)
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
@project.keys unless prefix
|
|
252
|
-
end
|
|
239
|
+
if project
|
|
240
|
+
action.map! { |val| task_join(project.name, val) }
|
|
241
|
+
elsif (target = group || ref)
|
|
242
|
+
action.map! { |val| task_name(task_join(val, target)) }
|
|
243
|
+
else
|
|
244
|
+
action.map! { |val| task_name(val) }
|
|
245
|
+
keys = @project.keys unless prefix
|
|
246
|
+
end
|
|
253
247
|
ns = lambda do |val|
|
|
254
|
-
|
|
248
|
+
return if (ret = as_a(val, :to_s, flat: true)).empty?
|
|
255
249
|
|
|
256
250
|
ret.map! do |arg|
|
|
257
251
|
if arg.include?(':') || (keys && !keys.include?(arg))
|
|
@@ -365,9 +359,9 @@ module Squared
|
|
|
365
359
|
proj = ((if !ref.is_a?(Class)
|
|
366
360
|
require_project ref
|
|
367
361
|
Application.find(ref, path: path)
|
|
368
|
-
elsif ref <
|
|
362
|
+
elsif ref < Application.impl_project
|
|
369
363
|
ref
|
|
370
|
-
end) || @kind[name]&.last ||
|
|
364
|
+
end) || @kind[name]&.last || Application.impl_project).new(self, path, name, **kwargs)
|
|
371
365
|
proj.__send__(:index_set, size)
|
|
372
366
|
@project[name] = proj
|
|
373
367
|
__get__(:project)[name] = proj unless kwargs[:private]
|
|
@@ -433,7 +427,7 @@ module Squared
|
|
|
433
427
|
if key.start_with?(/(\\A|\^)/) || key.match?(/(\\z|\$)\z/)
|
|
434
428
|
@describe[:replace] << [Regexp.new(key), val]
|
|
435
429
|
else
|
|
436
|
-
@describe[val.is_a?(Regexp) ? :pattern : :alias][key
|
|
430
|
+
@describe[val.is_a?(Regexp) ? :pattern : :alias][key] = val
|
|
437
431
|
end
|
|
438
432
|
end
|
|
439
433
|
self
|
|
@@ -452,7 +446,7 @@ module Squared
|
|
|
452
446
|
if ret.empty? && (path || name)
|
|
453
447
|
path &&= rootpath path
|
|
454
448
|
name &&= name.to_s
|
|
455
|
-
if (proj = find { |item|
|
|
449
|
+
if (proj = find { |item| item.path == path || item.name == name })
|
|
456
450
|
ret << proj
|
|
457
451
|
end
|
|
458
452
|
end
|
|
@@ -592,9 +586,9 @@ module Squared
|
|
|
592
586
|
|
|
593
587
|
def script_find(*args)
|
|
594
588
|
args.reverse_each do |val|
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
589
|
+
if val && (ret = val.is_a?(Symbol) ? @script[:ref!][val] : @script[:group!][val.to_sym])
|
|
590
|
+
return ret
|
|
591
|
+
end
|
|
598
592
|
end
|
|
599
593
|
@script[:ref!][:''] ||= scriptobj
|
|
600
594
|
end
|