Skip to content

Commit

Permalink
reset
Browse files Browse the repository at this point in the history
  • Loading branch information
wisechengyi committed Dec 17, 2018
1 parent edfcb61 commit faedb4b
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
from pants.java.jar.jar_dependency import JarDependency
from pants.task.fmt_task_mixin import FmtTaskMixin
from pants.task.lint_task_mixin import LintTaskMixin
from pants.task.target_restriction_mixins import HasSkipByTargetTagMixin


class GoogleJavaFormatBase(RewriteBase):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ junit_tests(
'examples/src/java/org/pantsbuild/example/hello/greet',
'examples/src/resources/org/pantsbuild/example/hello',
],
tags = {'no-lint.google-java-format.skip'}
)
14 changes: 11 additions & 3 deletions src/python/pants/backend/jvm/tasks/rewrite_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,12 @@
from pants.base.exceptions import TaskError
from pants.option.custom_types import dir_option
from pants.process.xargs import Xargs
from pants.task.target_restriction_mixins import HasSkipByTargetTagMixin
from pants.util.dirutil import fast_relpath, safe_mkdir_for_all
from pants.util.memo import memoized_property
from pants.util.meta import AbstractClass


class RewriteBase(NailgunTask, AbstractClass, HasSkipByTargetTagMixin):
class RewriteBase(NailgunTask, AbstractClass):
"""Abstract base class for JVM-based tools that check/rewrite sources."""

@classmethod
Expand Down Expand Up @@ -58,9 +57,18 @@ def cache_target_dirs(self):

def execute(self):
"""Runs the tool on all source files that are located."""
self.filter_by_tag()
relevant_targets = self._get_non_synthetic_targets(self.get_targets())

# force_run_tag = 'no-{}.skip'.format(self.options_scope)
# force_run_targets = set(t for t in relevant_targets if force_run_tag in t.tags)
# force_skip_tag = '{}.skip'.format(self.options_scope)
# force_skip_targets = set(t for t in relevant_targets if force_skip_tag in t.tags)
#
# final_targets = set(relevant_targets).union(force_run_targets).difference(force_skip_targets)
#
# self.context.log.debug("Force skipping targets by tag: {}\n{}".format(force_skip_tag, force_skip_targets))
# self.context.log.debug("Force running targets by tag: {}\n{}".format(force_run_tag, force_run_targets))

if self.sideeffecting:
# Always execute sideeffecting tasks without invalidation.
self._execute_for(relevant_targets)
Expand Down
4 changes: 2 additions & 2 deletions src/python/pants/engine/round_engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ def attempt(self, explain):
with self._context.new_workunit(name=name, labels=[WorkUnitLabel.TASK], log_config=log_config):
if explain:
self._context.log.debug('Skipping execution of {} in explain mode'.format(name))
elif task.skip_execution:
self._context.log.info('Skipping {}'.format(name))
# elif task.skip_execution:
# self._context.log.info('Skipping {}'.format(name))
else:
task.execute()

Expand Down
12 changes: 5 additions & 7 deletions src/python/pants/task/target_restriction_mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,6 @@ def register_options(cls, register):
"If true, act on the transitive dependency closure of those targets.")


class HasSkipByTargetTagMixin(HasTransitiveOptionMixin):

def filter_by_tag(self):

print(self.get_targets())


class HasSkipOptionMixin(object):
"""A mixin for tasks that have a --skip option.
Expand All @@ -62,6 +55,11 @@ class HasSkipOptionMixin(object):
def skip_execution(self):
return self.get_options().skip

@property
def supports_skipping_target_by_tag(self):
return True



class SkipOptionRegistrar(object):
"""Registrar of --skip."""
Expand Down
25 changes: 23 additions & 2 deletions src/python/pants/task/task.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,10 @@ def act_transitively(self):
"""
return True

@property
def supports_skipping_target_by_tag(self):
return False

def get_targets(self, predicate=None):
"""Returns the candidate targets this task should act on.
Expand All @@ -237,8 +241,25 @@ def get_targets(self, predicate=None):
:API: public
"""
return (self.context.targets(predicate) if self.act_transitively
else list(filter(predicate, self.context.target_roots)))
relevant_targets = self.context.targets(predicate) if self.act_transitively else list(
filter(predicate, self.context.target_roots))
if not self.supports_skipping_target_by_tag:
return relevant_targets

force_run_tag = 'no-{}.skip'.format(self.options_scope)
force_run_targets = set(t for t in relevant_targets if force_run_tag in t.tags)

force_skip_tag = '{}.skip'.format(self.options_scope)
force_skip_targets = set(t for t in relevant_targets if force_skip_tag in t.tags)

if force_run_targets:
self.context.log.debug("Force skipping targets by tag: {}\n{}".format(force_skip_tag, force_skip_targets))
if force_skip_targets:
self.context.log.debug("Force running targets by tag: {}\n{}".format(force_run_tag, force_run_targets))

final_targets = set(relevant_targets).union(force_run_targets).difference(force_skip_targets)

return final_targets

@memoized_property
def workdir(self):
Expand Down

0 comments on commit faedb4b

Please sign in to comment.