tetra 2.0.7 → 2.0.8
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/CONTRIBUTING.md +3 -3
- data/README.md +5 -4
- data/bin/tetra +6 -4
- data/lib/template/bashrc +19 -14
- data/lib/template/bundled/apache-maven-3.9.12/LICENSE +616 -0
- data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/NOTICE +0 -6
- data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/bin/mvn +9 -0
- data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/bin/mvn.cmd +14 -0
- data/lib/template/bundled/{apache-maven-3.9.9/boot/plexus-classworlds-2.8.0.jar → apache-maven-3.9.12/boot/plexus-classworlds-2.9.0.jar} +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/asm-9.9.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/asm.license +29 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/commons-cli-1.11.0.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/commons-codec-1.20.0.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/error_prone_annotations-2.41.0.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/failureaccess-1.0.3.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/gson-2.13.2.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/guava-33.5.0-jre.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/guice-5.1.0-classes.jar +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/jansi-2.4.1.jar → apache-maven-3.9.12/lib/jansi-2.4.2.jar} +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/jansi-native/Windows/arm64/libjansi.so → apache-maven-3.9.12/lib/jansi-native/Windows/arm64/jansi.dll} +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/jspecify-1.0.0.jar +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/maven-artifact-3.9.9.jar → apache-maven-3.9.12/lib/maven-artifact-3.9.12.jar} +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/maven-builder-support-3.9.9.jar → apache-maven-3.9.12/lib/maven-builder-support-3.9.12.jar} +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/maven-compat-3.9.9.jar → apache-maven-3.9.12/lib/maven-compat-3.9.12.jar} +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/maven-core-3.9.9.jar → apache-maven-3.9.12/lib/maven-core-3.9.12.jar} +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/maven-embedder-3.9.12.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/maven-model-3.9.12.jar +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/maven-model-builder-3.9.9.jar → apache-maven-3.9.12/lib/maven-model-builder-3.9.12.jar} +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/maven-plugin-api-3.9.12.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/maven-repository-metadata-3.9.12.jar +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/maven-resolver-api-1.9.22.jar → apache-maven-3.9.12/lib/maven-resolver-api-1.9.25.jar} +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/maven-resolver-connector-basic-1.9.25.jar +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/maven-resolver-impl-1.9.22.jar → apache-maven-3.9.12/lib/maven-resolver-impl-1.9.25.jar} +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/maven-resolver-named-locks-1.9.22.jar → apache-maven-3.9.12/lib/maven-resolver-named-locks-1.9.25.jar} +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/maven-resolver-provider-3.9.9.jar → apache-maven-3.9.12/lib/maven-resolver-provider-3.9.12.jar} +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/maven-resolver-spi-1.9.22.jar → apache-maven-3.9.12/lib/maven-resolver-spi-1.9.25.jar} +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/maven-resolver-transport-file-1.9.25.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/maven-resolver-transport-http-1.9.25.jar +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/maven-resolver-transport-wagon-1.9.22.jar → apache-maven-3.9.12/lib/maven-resolver-transport-wagon-1.9.25.jar} +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/maven-resolver-util-1.9.22.jar → apache-maven-3.9.12/lib/maven-resolver-util-1.9.25.jar} +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/maven-settings-3.9.12.jar +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/maven-settings-builder-3.9.9.jar → apache-maven-3.9.12/lib/maven-settings-builder-3.9.12.jar} +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/maven-slf4j-provider-3.9.9.jar → apache-maven-3.9.12/lib/maven-slf4j-provider-3.9.12.jar} +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/org.eclipse.sisu.inject-0.9.0.M3.jar → apache-maven-3.9.12/lib/org.eclipse.sisu.inject-0.9.0.M4.jar} +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/org.eclipse.sisu.plexus-0.9.0.M3.jar → apache-maven-3.9.12/lib/org.eclipse.sisu.plexus-0.9.0.M4.jar} +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/plexus-component-annotations-2.2.0.jar +0 -0
- data/lib/template/bundled/{apache-maven-3.9.9/lib/plexus-interpolation-1.27.jar → apache-maven-3.9.12/lib/plexus-interpolation-1.29.jar} +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/plexus-sec-dispatcher.license +202 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/plexus-utils-3.6.0.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.12/lib/plexus-utils.license +202 -0
- data/lib/template/kit.spec +3 -3
- data/lib/template/package.spec +13 -10
- data/lib/tetra/constants.rb +10 -1
- data/lib/tetra/data/license_map.yml +124 -0
- data/lib/tetra/facades/ant.rb +4 -7
- data/lib/tetra/facades/bash.rb +28 -19
- data/lib/tetra/facades/git.rb +69 -34
- data/lib/tetra/facades/gradle.rb +3 -2
- data/lib/tetra/facades/mvn.rb +8 -8
- data/lib/tetra/facades/process_runner.rb +58 -37
- data/lib/tetra/facades/tar.rb +5 -4
- data/lib/tetra/facades/unzip.rb +5 -4
- data/lib/tetra/generatable.rb +4 -3
- data/lib/tetra/kit.rb +12 -6
- data/lib/tetra/license_mapper.rb +34 -0
- data/lib/tetra/logger.rb +7 -4
- data/lib/tetra/maven_website.rb +64 -27
- data/lib/tetra/packages/kit_package.rb +4 -4
- data/lib/tetra/packages/package.rb +47 -8
- data/lib/tetra/packages/scriptable.rb +12 -8
- data/lib/tetra/packages/speccable.rb +7 -1
- data/lib/tetra/pom.rb +38 -16
- data/lib/tetra/pom_getter.rb +55 -43
- data/lib/tetra/project.rb +14 -15
- data/lib/tetra/project_initer.rb +32 -20
- data/lib/tetra/ui/change_sources_subcommand.rb +13 -7
- data/lib/tetra/ui/dry_run_subcommand.rb +5 -3
- data/lib/tetra/ui/generate_all_subcommand.rb +1 -1
- data/lib/tetra/ui/generate_kit_subcommand.rb +2 -1
- data/lib/tetra/ui/generate_script_subcommand.rb +2 -3
- data/lib/tetra/ui/generate_spec_subcommand.rb +3 -2
- data/lib/tetra/ui/get_pom_subcommand.rb +17 -12
- data/lib/tetra/ui/init_subcommand.rb +12 -4
- data/lib/tetra/ui/main.rb +6 -1
- data/lib/tetra/ui/move_jars_to_kit_subcommand.rb +2 -2
- data/lib/tetra/ui/patch_subcommand.rb +1 -1
- data/lib/tetra/ui/subcommand.rb +37 -31
- data/lib/tetra/version.rb +2 -3
- data/lib/tetra/version_matcher.rb +62 -44
- data/lib/tetra.rb +10 -6
- metadata +184 -274
- data/.github/ISSUE_TEMPLATE/bug_report.md +0 -26
- data/.github/ISSUE_TEMPLATE/feature_request.md +0 -15
- data/.github/dependabot.yml +0 -24
- data/.github/workflows/action-lint.yml +0 -15
- data/.github/workflows/codeql-analysis.yml +0 -94
- data/.github/workflows/dependency-review.yml +0 -17
- data/.github/workflows/markdown.yml +0 -23
- data/.github/workflows/rubocop.yml +0 -51
- data/.github/workflows/test.yml +0 -62
- data/.gitignore +0 -27
- data/.markdownlint.yaml +0 -11
- data/.rubocop.yml +0 -35
- data/.rubocop_todo.yml +0 -438
- data/.sonarcloud.properties +0 -4
- data/Gemfile +0 -6
- data/Gemfile.lock +0 -228
- data/Rakefile +0 -9
- data/lib/template/bundled/apache-maven-3.9.9/LICENSE +0 -760
- data/lib/template/bundled/apache-maven-3.9.9/lib/commons-cli-1.8.0.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.9/lib/commons-codec-1.17.1.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.9/lib/failureaccess-1.0.2.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.9/lib/guava-33.2.1-jre.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.9/lib/guice-5.1.0.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.9/lib/maven-embedder-3.9.9.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.9/lib/maven-model-3.9.9.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.9/lib/maven-plugin-api-3.9.9.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.9/lib/maven-repository-metadata-3.9.9.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.9/lib/maven-resolver-connector-basic-1.9.22.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.9/lib/maven-resolver-transport-file-1.9.22.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.9/lib/maven-resolver-transport-http-1.9.22.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.9/lib/maven-settings-3.9.9.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.9/lib/plexus-component-annotations-2.1.0.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.9/lib/plexus-utils-3.5.1.jar +0 -0
- data/lib/template/bundled/apache-maven-3.9.9/lib/plexus-xml-3.0.1.jar +0 -0
- data/lib/template/kit/.keep +0 -1
- data/lib/template/kit/jars/.keep +0 -1
- data/lib/template/packages/.keep +0 -1
- data/lib/template/src/.keep +0 -1
- data/spec/data/ant-super-simple-code/build/HW.class +0 -0
- data/spec/data/ant-super-simple-code/build/mypackage/HW.class +0 -0
- data/spec/data/ant-super-simple-code/build.xml +0 -133
- data/spec/data/ant-super-simple-code/dist/antsimple-20130618.jar +0 -0
- data/spec/data/ant-super-simple-code/lib/junit-4.11.jar +0 -0
- data/spec/data/ant-super-simple-code/lib/log4j-1.2.13.jar +0 -0
- data/spec/data/ant-super-simple-code/src/mypackage/HW.java +0 -15
- data/spec/data/antlr/antlr-2.7.2.jar +0 -0
- data/spec/data/antlr/pom.xml +0 -6
- data/spec/data/commons-collections4-4.5.0-M2-src.tar.gz +0 -0
- data/spec/data/commons-collections4-4.5.0-M2-src.zip +0 -0
- data/spec/data/commons-logging/commons-logging-1.3.4.jar +0 -0
- data/spec/data/commons-logging/parent_pom.xml +0 -1995
- data/spec/data/commons-logging/pom.xml +0 -833
- data/spec/data/nailgun/nailgun-0.7.1.jar +0 -0
- data/spec/data/nailgun/pom.xml +0 -153
- data/spec/data/struts-apps/pom.xml +0 -1147
- data/spec/data/tomcat/pom.xml +0 -33
- data/spec/lib/coarse/dry_run_subcommand_spec.rb +0 -59
- data/spec/lib/coarse/generate_all_subcommand_spec.rb +0 -132
- data/spec/lib/coarse/generate_spec_subcommand_spec.rb +0 -30
- data/spec/lib/coarse/init_subcommand_spec.rb +0 -101
- data/spec/lib/coarse/main_spec.rb +0 -21
- data/spec/lib/fine/ant_spec.rb +0 -25
- data/spec/lib/fine/git_spec.rb +0 -181
- data/spec/lib/fine/kit_package_spec.rb +0 -31
- data/spec/lib/fine/kit_spec.rb +0 -27
- data/spec/lib/fine/maven_website_spec.rb +0 -61
- data/spec/lib/fine/mvn_spec.rb +0 -27
- data/spec/lib/fine/package_spec.rb +0 -68
- data/spec/lib/fine/pom_getter_spec.rb +0 -36
- data/spec/lib/fine/pom_spec.rb +0 -98
- data/spec/lib/fine/project_spec.rb +0 -234
- data/spec/lib/fine/scriptable_spec.rb +0 -56
- data/spec/lib/fine/speccable_spec.rb +0 -93
- data/spec/lib/fine/tar_spec.rb +0 -22
- data/spec/lib/fine/unzip_spec.rb +0 -22
- data/spec/lib/fine/version_matcher_spec.rb +0 -64
- data/spec/spec_helper.rb +0 -90
- data/tetra.gemspec +0 -44
- data/utils/delete_nonet_user.sh +0 -8
- data/utils/setup_nonet_user.sh +0 -8
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/README.txt +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/bin/m2.conf +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/bin/mvnDebug +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/bin/mvnDebug.cmd +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/bin/mvnyjp +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/boot/plexus-classworlds.license +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/conf/logging/simplelogger.properties +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/conf/settings.xml +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/conf/toolchains.xml +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/aopalliance-1.0.jar +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/aopalliance.license +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/commons-cli.license +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/commons-codec.license +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9/lib/failureaccess.license → apache-maven-3.9.12/lib/error_prone_annotations.license} +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/ext/README.txt +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/ext/hazelcast/README.txt +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/ext/redisson/README.txt +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9/lib/guava.license → apache-maven-3.9.12/lib/failureaccess.license} +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9/lib/guice.license → apache-maven-3.9.12/lib/gson.license} +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9/lib/httpclient.license → apache-maven-3.9.12/lib/guava.license} +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9/lib/httpcore.license → apache-maven-3.9.12/lib/guice.license} +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/httpclient-4.5.14.jar +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9/lib/jansi.license → apache-maven-3.9.12/lib/httpclient.license} +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/httpcore-4.4.16.jar +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9/lib/javax.inject.license → apache-maven-3.9.12/lib/httpcore.license} +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/jansi-native/README.txt +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/jansi-native/Windows/x86/jansi.dll +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/jansi-native/Windows/x86_64/jansi.dll +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9/lib/jcl-over-slf4j.license → apache-maven-3.9.12/lib/jansi.license} +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/javax.annotation-api-1.3.2.jar +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/javax.annotation-api.license +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/javax.inject-1.jar +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9/lib/plexus-cipher.license → apache-maven-3.9.12/lib/javax.inject.license} +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/jcl-over-slf4j-1.7.36.jar +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9/lib/plexus-component-annotations.license → apache-maven-3.9.12/lib/jcl-over-slf4j.license} +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9/lib/plexus-interpolation.license → apache-maven-3.9.12/lib/jspecify.license} +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/maven-shared-utils-3.4.2.jar +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/org.eclipse.sisu.inject.license +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/org.eclipse.sisu.plexus.license +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/plexus-cipher-2.0.jar +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9/lib/plexus-sec-dispatcher.license → apache-maven-3.9.12/lib/plexus-cipher.license} +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9/lib/plexus-utils.license → apache-maven-3.9.12/lib/plexus-component-annotations.license} +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9/lib/plexus-xml.license → apache-maven-3.9.12/lib/plexus-interpolation.license} +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/plexus-sec-dispatcher-2.0.jar +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/slf4j-api-1.7.36.jar +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/slf4j-api.license +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/wagon-file-3.5.3.jar +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/wagon-http-3.5.3.jar +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/wagon-http-shared-3.5.3.jar +0 -0
- /data/lib/template/bundled/{apache-maven-3.9.9 → apache-maven-3.9.12}/lib/wagon-provider-api-3.5.3.jar +0 -0
data/lib/tetra/pom_getter.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Tetra
|
|
4
4
|
# attempts to get java projects' pom file
|
|
@@ -8,11 +8,13 @@ module Tetra
|
|
|
8
8
|
# saves a jar poms in <jar_filename>.pom
|
|
9
9
|
# returns filename and status if found, else nil
|
|
10
10
|
def get_pom(filename)
|
|
11
|
-
content, status = get_pom_from_jar(filename) ||
|
|
11
|
+
content, status = get_pom_from_jar(filename) ||
|
|
12
|
+
get_pom_from_sha1(filename) ||
|
|
13
|
+
get_pom_from_heuristic(filename)
|
|
12
14
|
return unless content
|
|
13
15
|
|
|
14
16
|
pom_filename = filename.sub(/(\.jar)?$/, ".pom")
|
|
15
|
-
File.
|
|
17
|
+
File.binwrite(pom_filename, content)
|
|
16
18
|
[pom_filename, status]
|
|
17
19
|
end
|
|
18
20
|
|
|
@@ -21,7 +23,11 @@ module Tetra
|
|
|
21
23
|
log.debug("Attempting unpack of #{file} to find a POM")
|
|
22
24
|
begin
|
|
23
25
|
Zip::File.foreach(file) do |entry|
|
|
24
|
-
|
|
26
|
+
# Security check (Zip Slip)
|
|
27
|
+
next if entry.name.include?("..") || entry.name.start_with?("/")
|
|
28
|
+
|
|
29
|
+
# PERFORMANCE: end_with? is much faster than Regexp for simple suffixes
|
|
30
|
+
if entry.name.end_with?("/pom.xml") || entry.name == "pom.xml"
|
|
25
31
|
log.info("pom.xml found in #{file}##{entry.name}")
|
|
26
32
|
return entry.get_input_stream.read, :found_in_jar
|
|
27
33
|
end
|
|
@@ -37,19 +43,22 @@ module Tetra
|
|
|
37
43
|
# returns a pom from search.maven.org with a jar sha1 search
|
|
38
44
|
def get_pom_from_sha1(file)
|
|
39
45
|
log.debug("Attempting SHA1 POM lookup for #{file}")
|
|
46
|
+
return unless File.file?(file)
|
|
47
|
+
|
|
40
48
|
begin
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
site = MavenWebsite.new
|
|
50
|
+
# PERFORMANCE: Streams the file calculation instead of loading entire file into RAM
|
|
51
|
+
sha1 = Digest::SHA1.file(file).hexdigest
|
|
52
|
+
|
|
53
|
+
results = site.search_by_sha1(sha1)
|
|
54
|
+
found_doc = results.find { |doc| doc["ec"].include?(".pom") }
|
|
55
|
+
|
|
56
|
+
if found_doc
|
|
57
|
+
log.info("pom.xml for #{file} found on search.maven.org for sha1 #{sha1} " \
|
|
58
|
+
"(#{found_doc['g']}:#{found_doc['a']}:#{found_doc['v']})")
|
|
59
|
+
|
|
60
|
+
group_id, artifact_id, version = site.get_maven_id_from(found_doc)
|
|
61
|
+
return site.download_pom(group_id, artifact_id, version), :found_via_sha1
|
|
53
62
|
end
|
|
54
63
|
rescue NotFoundOnMavenWebsiteError
|
|
55
64
|
log.warn("Got a 404 error while looking for #{file}'s SHA1 in search.maven.org")
|
|
@@ -59,37 +68,40 @@ module Tetra
|
|
|
59
68
|
|
|
60
69
|
# returns a pom from search.maven.org with a heuristic name search
|
|
61
70
|
def get_pom_from_heuristic(filename)
|
|
71
|
+
log.debug("Attempting heuristic POM search for #{filename}")
|
|
62
72
|
begin
|
|
63
|
-
log.debug("Attempting heuristic POM search for #{filename}")
|
|
64
73
|
site = MavenWebsite.new
|
|
65
|
-
|
|
74
|
+
clean_name = cleanup_name(filename)
|
|
75
|
+
|
|
66
76
|
version_matcher = VersionMatcher.new
|
|
67
|
-
my_artifact_id, my_version = version_matcher.split_version(
|
|
77
|
+
my_artifact_id, my_version = version_matcher.split_version(clean_name)
|
|
68
78
|
log.debug("Guessed artifact id: #{my_artifact_id}, version: #{my_version}")
|
|
69
79
|
|
|
70
|
-
|
|
71
|
-
log.debug("Artifact id search result: #{
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
80
|
+
first_result = site.search_by_name(my_artifact_id).first
|
|
81
|
+
log.debug("Artifact id search result: #{first_result}")
|
|
82
|
+
|
|
83
|
+
return unless first_result
|
|
84
|
+
|
|
85
|
+
group_id, artifact_id, = site.get_maven_id_from(first_result)
|
|
86
|
+
results = site.search_by_group_id_and_artifact_id(group_id, artifact_id)
|
|
87
|
+
log.debug("All versions: #{results}")
|
|
88
|
+
|
|
89
|
+
their_versions = results.map { |doc| doc["v"] }
|
|
90
|
+
|
|
91
|
+
best_matched_version = if my_version
|
|
92
|
+
version_matcher.best_match(my_version, their_versions)
|
|
93
|
+
else
|
|
94
|
+
their_versions.max
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
best_matched_doc = results.find { |r| r["v"] == best_matched_version }
|
|
98
|
+
return unless best_matched_doc
|
|
99
|
+
|
|
100
|
+
group_id, artifact_id, version = site.get_maven_id_from(best_matched_doc)
|
|
101
|
+
log.warn("pom.xml for #{filename} found on search.maven.org with heuristic search " \
|
|
102
|
+
"(#{group_id}:#{artifact_id}:#{version})")
|
|
103
|
+
|
|
104
|
+
return site.download_pom(group_id, artifact_id, version), :found_via_heuristic
|
|
93
105
|
rescue NotFoundOnMavenWebsiteError
|
|
94
106
|
log.warn("Got a 404 error while looking for #{filename} heuristically in search.maven.org")
|
|
95
107
|
end
|
|
@@ -98,7 +110,7 @@ module Tetra
|
|
|
98
110
|
|
|
99
111
|
# get a heuristic name from a path
|
|
100
112
|
def cleanup_name(path)
|
|
101
|
-
Pathname.new(path).basename.to_s.sub(
|
|
113
|
+
Pathname.new(path).basename.to_s.sub(/\.jar$/, "")
|
|
102
114
|
end
|
|
103
115
|
end
|
|
104
116
|
end
|
data/lib/tetra/project.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Tetra
|
|
4
4
|
# encapsulates a Tetra project directory
|
|
@@ -7,7 +7,7 @@ module Tetra
|
|
|
7
7
|
include Logging
|
|
8
8
|
|
|
9
9
|
# path of the project template files
|
|
10
|
-
TEMPLATE_PATH = File.join(
|
|
10
|
+
TEMPLATE_PATH = File.join(__dir__, "..", "template")
|
|
11
11
|
|
|
12
12
|
attr_reader :full_path
|
|
13
13
|
|
|
@@ -54,13 +54,14 @@ module Tetra
|
|
|
54
54
|
def dry_run
|
|
55
55
|
current_directory = Pathname.new(Dir.pwd).relative_path_from(Pathname.new(@full_path))
|
|
56
56
|
|
|
57
|
-
@git.commit_directories(%w
|
|
57
|
+
@git.commit_directories(%w[src kit], "Dry-run started\n\ntetra: dry-run-started: #{current_directory}")
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
# returns true iff we are currently dry-running
|
|
61
61
|
def dry_running?
|
|
62
62
|
latest_comment = @git.latest_comment("tetra: dry-run-")
|
|
63
|
-
|
|
63
|
+
# MODERNIZATION: Use match? instead of =~
|
|
64
|
+
!latest_comment.nil? && !latest_comment.match?(/tetra: dry-run-finished/)
|
|
64
65
|
end
|
|
65
66
|
|
|
66
67
|
# ends a dry-run assuming a successful build:
|
|
@@ -87,7 +88,7 @@ module Tetra
|
|
|
87
88
|
# ends a dry-run assuming the build went wrong
|
|
88
89
|
# reverts src/ and kit/ directories
|
|
89
90
|
def abort
|
|
90
|
-
@git.revert_directories(%w
|
|
91
|
+
@git.revert_directories(%w[src kit], @git.latest_id("tetra: dry-run-started"))
|
|
91
92
|
@git.undo_last_commit
|
|
92
93
|
end
|
|
93
94
|
|
|
@@ -185,12 +186,9 @@ module Tetra
|
|
|
185
186
|
# returns the name of the source archive file, if any
|
|
186
187
|
def src_archive
|
|
187
188
|
from_directory do
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
end
|
|
192
|
-
end
|
|
193
|
-
nil
|
|
189
|
+
Dir.glob(File.join("packages", name, "*")).find do |file|
|
|
190
|
+
File.file?(file) && !file.match?(/\.(spec|sh|patch)$/)
|
|
191
|
+
end&.then { |f| File.basename(f) }
|
|
194
192
|
end
|
|
195
193
|
end
|
|
196
194
|
|
|
@@ -210,14 +208,15 @@ module Tetra
|
|
|
210
208
|
def purge_jars
|
|
211
209
|
from_directory do
|
|
212
210
|
result = []
|
|
213
|
-
|
|
214
|
-
next
|
|
211
|
+
Dir.glob("src/**/*.jar").each do |file|
|
|
212
|
+
next if File.symlink?(file)
|
|
215
213
|
|
|
216
|
-
new_location = File.join("kit", "jars",
|
|
214
|
+
new_location = File.join("kit", "jars", File.basename(file))
|
|
217
215
|
FileUtils.mv(file, new_location)
|
|
218
216
|
|
|
217
|
+
# Calculate relative path for symlink
|
|
219
218
|
link_target = Pathname.new(new_location)
|
|
220
|
-
.relative_path_from(Pathname.new(file).
|
|
219
|
+
.relative_path_from(Pathname.new(file).dirname)
|
|
221
220
|
.to_s
|
|
222
221
|
|
|
223
222
|
File.symlink(link_target, file)
|
data/lib/tetra/project_initer.rb
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Tetra
|
|
4
|
-
# takes care of
|
|
4
|
+
# takes care of initializing a tetra project
|
|
5
5
|
module ProjectIniter
|
|
6
6
|
include Logging
|
|
7
7
|
|
|
8
8
|
# path of the project template files
|
|
9
|
-
TEMPLATE_PATH = File.join(
|
|
9
|
+
TEMPLATE_PATH = File.join(__dir__, "..", "template")
|
|
10
10
|
|
|
11
11
|
# includers get class methods defined in ClassMethods
|
|
12
12
|
def self.included(base)
|
|
13
13
|
base.extend(ClassMethods)
|
|
14
14
|
end
|
|
15
|
+
|
|
15
16
|
# class methods container
|
|
16
17
|
module ClassMethods
|
|
17
18
|
# returns true if the specified directory is a valid tetra project
|
|
18
19
|
def project?(dir)
|
|
19
|
-
|
|
20
|
+
# Use a block for logging so we don't list files unless debug is on.
|
|
21
|
+
# Dir.children is faster/cleaner than Dir.new(dir).to_a
|
|
22
|
+
Tetra::Logger.instance.debug { "Checking for tetra project: #{dir}, contents: #{Dir.children(dir)}" }
|
|
23
|
+
|
|
20
24
|
File.directory?(File.join(dir, "src")) &&
|
|
21
25
|
File.directory?(File.join(dir, "kit")) &&
|
|
22
26
|
File.directory?(File.join(dir, ".git"))
|
|
@@ -25,23 +29,29 @@ module Tetra
|
|
|
25
29
|
# inits a new project directory structure
|
|
26
30
|
def init(dir, include_bundled_software = true)
|
|
27
31
|
Dir.mkdir(dir)
|
|
28
|
-
Dir.chdir(dir) do
|
|
29
|
-
git = Tetra::Git.new(".")
|
|
30
32
|
|
|
31
|
-
|
|
33
|
+
# Avoid Dir.chdir(dir). Use absolute paths instead.
|
|
34
|
+
# Initialize Git facade with the full path
|
|
35
|
+
git = Tetra::Git.new(dir)
|
|
36
|
+
git.init
|
|
32
37
|
|
|
33
|
-
|
|
34
|
-
|
|
38
|
+
FileUtils.mkdir_p(File.join(dir, "src"))
|
|
39
|
+
FileUtils.mkdir_p(File.join(dir, "kit"))
|
|
35
40
|
|
|
36
|
-
|
|
37
|
-
|
|
41
|
+
# Create a project instance (now that the dir structure exists)
|
|
42
|
+
project = Project.new(dir)
|
|
38
43
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
project.template_files(include_bundled_software).each do |source, destination|
|
|
45
|
+
# Source is relative to TEMPLATE_PATH
|
|
46
|
+
src_path = File.join(TEMPLATE_PATH, source)
|
|
47
|
+
# Destination is relative to the new project directory
|
|
48
|
+
dst_path = File.join(dir, destination)
|
|
42
49
|
|
|
43
|
-
|
|
50
|
+
FileUtils.cp_r(src_path, dst_path)
|
|
44
51
|
end
|
|
52
|
+
|
|
53
|
+
# Commit "." (Git facade handles context, "." means "all changes in repo")
|
|
54
|
+
git.commit_directories(["."], "Template files added")
|
|
45
55
|
end
|
|
46
56
|
end
|
|
47
57
|
|
|
@@ -55,10 +65,10 @@ module Tetra
|
|
|
55
65
|
}
|
|
56
66
|
|
|
57
67
|
if include_bundled_software
|
|
58
|
-
Dir.chdir
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
68
|
+
# Use 'base:' argument to avoid unsafe Dir.chdir
|
|
69
|
+
# This globs files inside TEMPLATE_PATH without changing global state
|
|
70
|
+
Dir.glob(File.join("bundled", "*"), base: TEMPLATE_PATH).each do |file|
|
|
71
|
+
result[file] = "kit"
|
|
62
72
|
end
|
|
63
73
|
end
|
|
64
74
|
|
|
@@ -75,13 +85,15 @@ module Tetra
|
|
|
75
85
|
FileUtils.cp(file, result_path)
|
|
76
86
|
@git.commit_file(result_path, "Source archive added")
|
|
77
87
|
|
|
78
|
-
unarchiver = if
|
|
88
|
+
unarchiver = if /\.zip$/.match?(file)
|
|
79
89
|
Tetra::Unzip.new
|
|
80
90
|
else
|
|
81
91
|
Tetra::Tar.new
|
|
82
92
|
end
|
|
83
93
|
|
|
94
|
+
# Glob cleaning is safer than rm_rf with wildcards in shell
|
|
84
95
|
Dir.glob(File.join("src", "*")).each { |f| FileUtils.rm_rf(f) }
|
|
96
|
+
|
|
85
97
|
unarchiver.decompress(file, "src")
|
|
86
98
|
commit_sources(message, true)
|
|
87
99
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Tetra
|
|
4
4
|
# tetra change-sources
|
|
@@ -9,19 +9,25 @@ module Tetra
|
|
|
9
9
|
default: false
|
|
10
10
|
|
|
11
11
|
def execute
|
|
12
|
-
if source_archive.nil? && no_archive? == false
|
|
13
|
-
signal_usage_error "please specify a source archive file or use \"--no-archive\" (see SPECIAL_CASES.md)."
|
|
14
|
-
end
|
|
15
|
-
|
|
16
12
|
checking_exceptions do
|
|
13
|
+
# Ensure the user provided an archive OR explicitly opted out
|
|
14
|
+
if source_archive.nil? && !no_archive?
|
|
15
|
+
signal_usage_error "please specify a source archive file or use \"--no-archive\" (see SPECIAL_CASES.md)."
|
|
16
|
+
end
|
|
17
|
+
|
|
17
18
|
project = Tetra::Project.new(".")
|
|
18
19
|
ensure_dry_running(:is_not_in_progress, project) do
|
|
19
|
-
if no_archive?
|
|
20
|
-
|
|
20
|
+
if !no_archive?
|
|
21
|
+
# CASE 1: Updating from a new archive file
|
|
22
|
+
full_archive_path = File.expand_path(source_archive)
|
|
23
|
+
project.commit_source_archive(full_archive_path, message)
|
|
24
|
+
|
|
21
25
|
puts "New sources committed."
|
|
22
26
|
puts "Please delete any stale source archives from packages/ before proceeding."
|
|
23
27
|
else
|
|
28
|
+
# CASE 2: Updating from manual changes in src/
|
|
24
29
|
project.commit_sources(message, true)
|
|
30
|
+
|
|
25
31
|
puts "New sources committed."
|
|
26
32
|
puts "Please copy source archive(s) corresponding to src/ in packages/ before proceeding."
|
|
27
33
|
end
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Tetra
|
|
4
4
|
# tetra dry-run
|
|
5
5
|
class DryRunSubcommand < Tetra::Subcommand
|
|
6
6
|
option ["-s", "--script"], "SCRIPT", "Run these commands to build the project instead of the interactive shell"
|
|
7
|
+
|
|
7
8
|
def execute
|
|
8
9
|
checking_exceptions do
|
|
9
10
|
project = Tetra::Project.new(".")
|
|
@@ -15,14 +16,15 @@ module Tetra
|
|
|
15
16
|
puts "Dry run not started."
|
|
16
17
|
else
|
|
17
18
|
project.dry_run
|
|
19
|
+
|
|
18
20
|
if script
|
|
19
21
|
puts "Scripted dry-run started."
|
|
20
22
|
else
|
|
21
23
|
puts "Dry-run started in a new bash shell. Build your project now!"
|
|
22
24
|
puts "Note that:"
|
|
23
25
|
puts " - \"mvn\" and \"ant\" are already bundled by tetra"
|
|
24
|
-
puts " - you have to use \"gradlew\"
|
|
25
|
-
puts "If the build
|
|
26
|
+
puts " - you have to use \"gradlew\" instead of \"./gradlew\" to launch a Gradle wrapper"
|
|
27
|
+
puts "If the build succeeds end this dry run with ^D (Ctrl+D),"
|
|
26
28
|
puts "if the build does not succeed use ^C^D to abort and undo any change"
|
|
27
29
|
end
|
|
28
30
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Tetra
|
|
4
4
|
# tetra generate-kit
|
|
@@ -8,6 +8,7 @@ module Tetra
|
|
|
8
8
|
project = Tetra::Project.new(".")
|
|
9
9
|
ensure_dry_running(:has_finished, project) do
|
|
10
10
|
kit = Tetra::KitPackage.new(project)
|
|
11
|
+
|
|
11
12
|
result_path, conflict_count = kit.to_spec
|
|
12
13
|
print_generation_result(project, result_path, conflict_count)
|
|
13
14
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Tetra
|
|
4
4
|
# tetra generate-script
|
|
@@ -7,8 +7,7 @@ module Tetra
|
|
|
7
7
|
checking_exceptions do
|
|
8
8
|
project = Tetra::Project.new(".")
|
|
9
9
|
ensure_dry_running(:has_finished, project) do
|
|
10
|
-
result_path, conflict_count =
|
|
11
|
-
Tetra::Package.new(project).to_script
|
|
10
|
+
result_path, conflict_count = Tetra::Package.new(project).to_script
|
|
12
11
|
print_generation_result(project, result_path, conflict_count)
|
|
13
12
|
end
|
|
14
13
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Tetra
|
|
4
4
|
# tetra generate-spec
|
|
@@ -19,7 +19,8 @@ module Tetra
|
|
|
19
19
|
|
|
20
20
|
result_path, conflict_count = package.to_spec
|
|
21
21
|
print_generation_result(project, result_path, conflict_count)
|
|
22
|
-
|
|
22
|
+
|
|
23
|
+
puts "Warning: #{pom} not found, some spec fields will be left blank" unless File.exist?(pom)
|
|
23
24
|
puts "Warning: source archive not found, package will not build" unless project.src_archive
|
|
24
25
|
end
|
|
25
26
|
end
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "uri"
|
|
2
4
|
|
|
3
5
|
module Tetra
|
|
4
6
|
# tetra get-pom
|
|
@@ -10,23 +12,26 @@ module Tetra
|
|
|
10
12
|
project = Tetra::Project.new(".")
|
|
11
13
|
ensure_dry_running(:is_not_in_progress, project) do
|
|
12
14
|
pom_getter = Tetra::PomGetter.new
|
|
13
|
-
|
|
14
15
|
path, status = pom_getter.get_pom(name)
|
|
16
|
+
|
|
15
17
|
if path
|
|
16
|
-
text_status =
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
)
|
|
18
|
+
text_status = case status
|
|
19
|
+
when :found_in_jar
|
|
20
|
+
"was inside the jar"
|
|
21
|
+
when :found_via_sha1
|
|
22
|
+
"found by sha1 search from search.maven.org"
|
|
23
|
+
when :found_via_heuristic
|
|
24
|
+
"found by heuristic search from search.maven.org"
|
|
25
|
+
end
|
|
25
26
|
|
|
26
27
|
puts "#{format_path(path, project)} written, #{text_status}"
|
|
27
28
|
else
|
|
28
29
|
puts "#{name}'s pom not found. Try:"
|
|
29
|
-
|
|
30
|
+
|
|
31
|
+
# URI.encode_www_form_component correctly escapes spaces to '+' for query params.
|
|
32
|
+
clean_name = pom_getter.cleanup_name(name)
|
|
33
|
+
query = "#{clean_name} pom"
|
|
34
|
+
puts "http://google.com/#q=#{URI.encode_www_form_component(query)}"
|
|
30
35
|
end
|
|
31
36
|
end
|
|
32
37
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Tetra
|
|
4
4
|
# tetra init
|
|
@@ -10,10 +10,13 @@ module Tetra
|
|
|
10
10
|
|
|
11
11
|
def execute
|
|
12
12
|
checking_exceptions do
|
|
13
|
-
|
|
13
|
+
# Ensure the user provided an archive OR explicitly opted out
|
|
14
|
+
if source_archive.nil? && !no_archive?
|
|
14
15
|
signal_usage_error "please specify a source archive file or use \"--no-archive\" (see SPECIAL_CASES.md)."
|
|
15
16
|
end
|
|
16
|
-
|
|
17
|
+
|
|
18
|
+
# Ensure the file exists if provided
|
|
19
|
+
if source_archive && !File.readable?(source_archive)
|
|
17
20
|
signal_usage_error "#{source_archive} is not a file or it is not readable."
|
|
18
21
|
end
|
|
19
22
|
|
|
@@ -23,11 +26,16 @@ module Tetra
|
|
|
23
26
|
|
|
24
27
|
if source_archive
|
|
25
28
|
puts "Decompressing sources..."
|
|
26
|
-
|
|
29
|
+
# Expand path immediately to ensure we reference the correct file
|
|
30
|
+
# relative to where the command was run, not inside the new project dir.
|
|
31
|
+
full_archive_path = File.expand_path(source_archive)
|
|
32
|
+
|
|
33
|
+
project.commit_source_archive(full_archive_path, "Initial sources added from archive")
|
|
27
34
|
puts "Sources decompressed in #{package_name}/src/, original archive copied in #{package_name}/packages/."
|
|
28
35
|
else
|
|
29
36
|
puts "Use \"tetra change-sources\" to add sources to this project."
|
|
30
37
|
end
|
|
38
|
+
|
|
31
39
|
puts "Please add any other precompiled build dependency to kit/."
|
|
32
40
|
puts "When you are ready to test a build, use \"tetra dry-run\" from the project directory"
|
|
33
41
|
end
|
data/lib/tetra/ui/main.rb
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Tetra
|
|
4
4
|
# program entry point
|
|
5
5
|
class MainCommand < Clamp::Command
|
|
6
|
+
option ["-v", "--version"], :flag, "print the version and exit" do
|
|
7
|
+
puts Tetra::VERSION
|
|
8
|
+
exit(0)
|
|
9
|
+
end
|
|
10
|
+
|
|
6
11
|
subcommand(
|
|
7
12
|
"init",
|
|
8
13
|
"Inits a tetra project in the current directory",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Tetra
|
|
4
4
|
# tetra move-jars-to-kit
|
|
@@ -9,7 +9,7 @@ module Tetra
|
|
|
9
9
|
|
|
10
10
|
ensure_dry_running(:is_not_in_progress, project) do
|
|
11
11
|
project.purge_jars.each do |original, final|
|
|
12
|
-
puts "Replaced #{original} with symlink pointing to
|
|
12
|
+
puts "Replaced #{original} with symlink pointing to #{final}"
|
|
13
13
|
end
|
|
14
14
|
end
|
|
15
15
|
end
|